ajax和jstl sql,第8章_EL、JSTL和Ajax技术.ppt

第8章_EL、JSTL和Ajax技术重点讲义

上机实习 1.在First.jsp中输入username和userpass,表单提交给Second.jsp,假设用户名和密码是“abc”和”123”,则转到Third.jsp,显示问候语“***,你好”,否则转回到First.jsp,原来用户输入的用户名要保留,并有提示信息:“用户名或密码错误,请重新输入”,使用本章的技术实现。 2.利用Ajax技术实现表单输入信息的验证。以用户注册页面示例,在注册页面中需要对用户名和两次输入的密码进行验证,其中用户名是唯一的,不能重复,而两次输入的密码必须相同,只用这样的输入才是有效地。并且要求,用户名的格式是:字母开头,后跟字母或数字,长度至少6位,密码由数字组成,长度在6到10位之间。 * * 5.多分支标签:用于多选择情况,不接受任何属性,与、配合使用。 有一个属性test,用于指明判定的条件。 格式: … …… …… 【例8-7】设计页面if.jsp,根据依据当前时间,输出不同的问候语。分别采用单分支标签和多分支标签实现。 【实现】 《源代码》 【运行】 《程序执行》 6.循环标签: 格式1: 循环内容 格式2: 循环内容 其中: items属性:进行循环的醒目。 var属性:代表当前项目的变量名。 begin属性:开始条件。 end:属性:结束条件。 step属性:步长。 varStatus属性:显示循环变量的状态。 【例8-8】分析forEach.jsp中的代码,理解不同格式 的使用。 【实现】 《源代码》 【运行】 《程序执行》 8.3 综合案例 ——使用EL和JSTL显示查询结果 El和JSTL经常结合使用取代代码实现在JSP页面中输出动态内 容,这里的动态内容通常是存在某个范围内的数据。 【例8-9】使用EL和JSTL,实现从Servlet中获取信息,然后再 显示页面显示结果。 【分析】Servlet形成数据,将数据存到请求范围内,然后转 发给show.jsp显示。show.jsp利用EL和JSTL方法取得数据并显 示结果。为了区别EL、JSTL与脚本代码在信息显示上的差异 ,在show.jsp中,采用两种方式实现显示。 【设计】该问题需要设计3个组件:描述学生信息的实体组 件Student.java;在Servlet(SetStudent.java)实现数据的创建 与保存;利用EL和JSTL显示信息。 【实现】 4个组件: (1)描述学生信息的实体组件Student.java; (2)Servlet(SetStudent.java)实现数据的创建 与保存; (3)Web.xml关于Servlet的配置信息 (4)利用EL和JSTL显示信息 【运行】 《程序执行》 :8080/ch08_9/query 8.4 Ajax技术 Ajax(Asynchronous JavaScript and XML)是运用JavaScript和可扩展语言(XML)实现浏览器与服务器通讯的一种技术。本节对Ajax处理客户请求的各个环节进行分析,并在具体的示例中展示Ajax的应用。 本节主要内容: 8.4.1 Ajax技术简介 8.4.2 XMLHttpRequest对象 8.4.1 Ajax技术简介 Ajax实现浏览器与服务器异步交互的技术,用户的请 求不需要重新刷新整个页面,只需要刷新局部页面即可。 Ajax技术是一系列技术的集合,主要涉及的技术有: 使用XHTML(HTML)和CSS构建标准化的展示层。 使用DOM进行动态显示和交互。 使用XML和XSLT进行数据交换和操纵。 使用XMLHttpRequest异步获取数据。 使用JavaScript将所有元素绑定在一起。 对于这些技术,大部分在前面章节中已介绍,

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>动漫搜索</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> var xmlhttp; function loadXMLDoc(url,cfun) { // alert("hadhfaf"); xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=cfun; xmlhttp.open("GET",url,true); xmlhttp.send(); } function myfunction(id,times) { //alert("123"); loadXMLDoc("open.jsp?id="+id+"&times="+times+"&t="+Math.random(),function() { //alert(xmlhttp.status); if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById(id).innerHTML=xmlhttp.responseText; } }); } </script> <% //currentPage当前显示页数 if (request.getParameter("currentPage") == null||request.getParameter("currentPage").equals("")) { pageContext.setAttribute("currentPage", new Integer(0)); } else { pageContext.setAttribute("currentPage", request .getParameter("currentPage")); } %> <sql:query var="rs" dataSource="jdbc/mysql"> select* from anime </sql:query> <!-- 得到所有记录数 --> <c:set var="resultNum"> <jsp:getProperty name="rs" property="rowCount" /> </c:set> <!-- 每页显示记录数 --> <c:set var="PerPageNum" value="3" /> </head> <style type="text/css"> body{background-color:} </style> <body> <% int perPageNum = Integer.parseInt((String) pageContext .getAttribute("PerPageNum")); int resultNum = Integer.parseInt((String) pageContext .getAttribute("resultNum")); int pageNum; //如果所有记录数除每页显示记录数没有余数-1 if((int)resultNum%perPageNum==0) pageNum = (int)(resultNum / perPageNum-1); else pageNum = (int)(resultNum / perPageNum); pageContext.setAttribute("pageNum", pageNum); %> <div style="border:1px solid #cccccc; width:1100px;margin:100px 0 0 90px"> <table style=" width:1100px;"> <tr> <td>序号</td> <td>热搜动漫</td> <td>动漫简介</td> <td>更新集数</td> <td>搜索指数</td> <td>动漫详情</td> </tr> <c:if test="${currentPage lt 0 }"><!-- 当前显示页小于0 --> <c:set var="currentPage" value="0"></c:set> </c:if> <c:if test="${currentPage gt pageNum}"><!-- 当前显示页大于总页数 --> <c:set var="currentPage" value="${pageNum }"></c:set> </c:if> <c:set var="currentPage" value="${currentPage}" scope="session" /> <!-- 循环查找记录 --> <c:forEach var="row" items="${rs.rows}" begin="${currentPage*PerPageNum}" end="${PerPageNum+currentPage*PerPageNum-1}" > <tr> <td> ${row.id }</td> <td> <img src="image/${row.image}" width="50" height="50"/></td> <td style="width:600"> ${row.introduce}</td> <td> ${row.blues} </td> <td> ${row.times }</td> <c:set var="times" value="${row.times }" scope="session" /> <td> <input type="button" value="展开" onclick="myfunction(${row.id },${row.times })"/> </td> </tr> <tr> <td colspan=6 id="${row.id}"></td> </tr> </c:forEach> </table> <div style="margin:0px 0px 0px 800px"> 总共有${pageNum+1}页-第${currentPage+1}页-<a href="index.jsp?currentPage=${currentPage-1}">上一页</a> - <a href="index.jsp?currentPage=${currentPage+1}">下一页</a> </div> </div> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值