温故而知新! 2017年3月4日
第4章 JSP基础知识 4.1 JSP页面的基本结构 4.2 JSP三种常用注释 4.2.1 隐藏注释及其应用实例 4.2.1 隐藏注释及其应用实例 4.2.2 HTML注释及其应用实例 4.2.3 Java注释及其应用实例 4.3 JSP常用脚本元素 4.3.1 变量和方法的声明及其应用实例 4.3.2 表达式和脚本及其应用实例 4.4 JSP常用指令 4.4.1 page指令及其应用实例 4.4.2 include指令及其应用实例 4.4.3 taglib指令及其应用实例 2017年3月4日
4.5.2 <jsp:include>动作及其应用实例 4.5.3 <jsp:useBean>动作及其应用实例 4.5.1 <jsp:param>动作 4.5.2 <jsp:include>动作及其应用实例 4.5.3 <jsp:useBean>动作及其应用实例 4.5.4 <jsp:setProperty>动作及其应用实例 4.5.5 <jsp:getProperty>动作及其应用实例 4.5.6 <jsp:forward>动作及其应用实例 4.6 常见问题及解决方案 2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 2017年3月4日
在JSP页面中不需要预先声明和创建这些对象就能直接使用。 编写JSP的人员不需要对这些内部对象进行实例化,只要调用其中的方法就能实现特定的功能,这给Java Web编程带来很大的方便。 2017年3月4日
5.1.1 out对象的基础知识 out对象主要用来向客户输出各种数据类型的内容,并管理应用服务器上的输出缓冲区(buffer)。缓冲区默认值是8KB,可以通过page指令来改变缓冲区的大小。 2017年3月4日
out对象能把结果输出到网页上,用来控制管理输出缓冲区和输出流。 out对象的主要方法如下: 2017年3月4日
newLine()方法:用于输出一个换行字符。 print()/println():用于输出数据。Out对象是JSP中使用最为频繁的对象,它的print()和println()方法最常用。print()方法把Java对象原始数据类型输入到客户端的缓冲区,而println()方法除了把内容输出到客户端,还在后面添加一个空行。 newLine()方法:用于输出一个换行字符。 2017年3月4日
flush():用于输出缓冲区里的数据。此方法会先将之前缓冲区中的数据输出至客户端,然后再清除缓冲区中的数据。 clearBuffer():用于清除缓冲区里的数据,并把数据输出到客户端。 clear():用于清除缓冲区里的数据,但不会把数据输出到客户端。 getBufferSize():用于获得缓冲区的大小。 getRemaining():用于获得缓冲区中没有被占用的空间的大小。 isAutoFlush():返回布尔值,如果AutoFlush为真,则返回true,反之,返回false。 close():关闭输出流.可以强制终止当前页面的剩余部分向浏览器输出。 2017年3月4日
5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 2017年3月4日
【例5-1】out对象应用实例1(out1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>out对象应用实例1</title> </head> <body> 2017年3月4日
for(int i=0;i<3;i++) <% for(int i=0;i<3;i++) out.println("<h3>我的理想是什么...</h3>"); String str="我一定学好JSP程序设计课程!"; out.print(str+"<br>"); out.println("加油"); %> </body> </html> 2017年3月4日
运行效果 2017年3月4日
【例5-2】out对象应用实例2(out2.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>out对象应用实例2</title> </head> <body> 以下是out对象其它常用方法的使用: <hr> 获取缓存大小:<%=out.getBufferSize()%> <br> 获取剩余缓存区大小:<%=out.getRemaining()%> 判断是否自动刷新:<%=out.isAutoFlush()%> 2017年3月4日
out.print("知识改变命运,技术改变生活!<br>"); <% out.print("知识改变命运,技术改变生活!<br>"); out.print("当前可用缓冲区大小:"+out.getRemaining()+"<br>"); out.flush(); out.print("当前可用缓冲区空间大小:"+out.getRemaining()+"<br>"); out.clearBuffer(); out.print("当前可用缓冲区空间大小:"+ out.getRemaining()+"<br>"); %> <hr> </body> </html> 2017年3月4日
运行效果 2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 2017年3月4日
5.2.1 request对象的基础知识 当用户请求一个JSP页面时, JSP页面所在的Tomcat服务器将用户的请求封装在内置对象request中。request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有一个参数列表。 2017年3月4日
getAttribute(String name):用于返回name指定的属性值,若不存在指定的属性,就返回null。 request对象的主要方法如下: getAttribute(String name):用于返回name指定的属性值,若不存在指定的属性,就返回null。 getAttributes():用于返回request对象的所有属性的名字集合,结果集是一个Enumeration(枚举)类的实例。 getCookies() :用于返回客户端的所有Cookie对象,结果是一个Cookie数组。 getCharacterEncoding(): 返回请求中的字符编码方式。 getContentLength():以字节为单位返回客户端请求的大小。如果无法得到该请求的大小,则返回-1。 getHeader(String name):用于获得HTTP协议定义的文件头信息。 getHeaders(String name) :用于返回指定名字的request Header的所有值,其结果是一个Enumeration类的实例。 getHeaderNames():用于返回所有request Header的名字 ,其结果是一个Enumeration类的实例。 2017年3月4日
getInputStream():用于返回请求的输入流,获得请求中的数据。 getMethod():用于获得客户端向服务器端传送数据的方法,如GET,POST,HEADER,TRACE等。 getParameter(String name) :用于获得客户端传送给服务器端的参数值。获取表单提交的信息,以字符串形式返回客户端传来的某一个请求参数的值,该参数名由name指定。当传递给此方法的参数名没有实际参数与之对应时,返回null。 getParameterNames():用于获得客户端传送给服务器端的所有参数名字,其结果是一个Enumeration类的实例。 getParameterValues(String name) :用于获得指定参数的所有值。返回客户端传送给服务器端的所有参数名,结果集是一个Enumeration类的实例。当传递给此方法的参数名没有实际参数与之对应时,返回null。 getProtocol():用于获取客户端向服务器端传送数据所依据的协议名称。 getQueryString():用于获得查询字符串,该字符串是由客户端以GET方式向服务器端传送的。 getRequestURI():用于获取发出请求字符串的客户端地址。 2017年3月4日
getRemoteAddr():用于获取客户端IP地址。 getRemoteHost():用于获取客户端名字。 getSession([Boolean create]) :用于返回和请求相关的session。create参数是可选的。当有参数create且这个参数值为true时,如果客户端还没有创建session,那么将创建一个新的session。 getServerName():用于获取服务器的名字。 getServletPath():用于获取客户端所请求的脚本文件的文件路径。 getServerPort():用于获取服务器的端口号。 removeAttribute(String name) :用于删除请求中的一个属性。 setAttribute(String name, java.lang.Object obj) :用于设置request的参数值。 2017年3月4日
5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 2017年3月4日
【例5-3】request对象应用实例1(request1.jsp和requestHandle.jsp) 本实例使用request对象获取客户端提交的信息。本例包括两个文件:request1.jsp(主界面)和requestHandle.jsp(数据处理页面)。在request1.jsp页面中输入数据并单击“提交”按钮后,页面跳转到requestHandle.jsp页面,该页面对提交的数据进行处理,并将数据输出到该页面中。 request1.jsp代码如下: 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例1</title> </head> <body> <form action="requestHandle.jsp" method="get"> 请输入数据:<input type="text" name="name"/> <input type="submit" name="submit" value="提交"/> </form> </body> </html> 2017年3月4日
requestHandle.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String textContent= request.getParameter("name"); String buttonName= request.getParameter("submit"); %> 获取到客户端提交的文本和按钮信息如下: <hr> 文本框输入的信息:<%=textContent%> <br> 按钮信息:<%=buttonName%> </body> </html> 2017年3月4日
运行效果 运行效果 2017年3月4日
【例5-4】request对象应用实例2(request2.jsp和requestHandle2.jsp) 本实例模拟在线考试系统。本例包括两个文件:request2.jsp(主界面)和requestHandle2.jsp(数据处理页面)。request2.jsp页面是输出单选题页面,题目答完后点击“考试完成”,页面跳转到requestHandle2.jsp页面,该页面对提交的数据进行处理,并将数据输出到页面中,即本次测试成绩。 request2.jsp代码如下: 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例2_考试系统</title> </head> <body> <h3>第5章测试题</h3> <hr> <form action="requestHandle2.jsp" method="get"> 1.response对象的setHeader(String name,String value)方法的作用是 ( )。<br> <input type="radio" name="1" value="A">添加HTTP文件头<br> <input type="radio" name="1" value="B"> 设定指定名字的HTTP文件头的值<br> <input type="radio" name="1" value="C"> 判断指定名字的HTTP文件头是否存在<br> <input type="radio" name="1" value="D"> 向客户端发送错误信息()<br> 2017年3月4日
2.设置session的有效时间(也叫超时时间)的方法是( )。<br> <input type="radio" name="2" value="A"> setMaxInactiveInterval(int interval)<br> <input type="radio" name="2" value="B">getAttributeName()<br> <input type="radio" name="2" value="C"> set AttributeName(String name,Java.lang.Object value)<br> <input type="radio" name="2" value="D">getLastAccessedTime()<br> 3.能清除缓冲区中的数据,并且把数据输出到客户端是out对象中的方法是( )。<br> <input type="radio" name="3" value="A">out.newLine()<br> <input type="radio" name="3" value="B">out.clear()<br> <input type="radio" name="3" value="C">out.flush()<br> <input type="radio" name="3" value="D">out.clearBuffer()<br> 2017年3月4日
4.pageContext对象的findAttribute()方法作用是( )。<br> <input type="radio" name="4" value="A"> 用来设置默认页面的范围或指定范围之中的已命名对象<br> <input type="radio" name="4" value="B"> 用来删除默认页面范围或指定范围之中已命名的对象<br> <input type=“radio” name=“4” value=“C”>按照页面请求、会话 以及应 用程序范围的顺序实现对某个已命名属性的搜索<br> <input type="radio" name="4" value="D"> 以字符串的形式返回一个对异常的描述<br> <input type="submit" value="考试完成"> </form> </body> </html> 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> requestHandle2.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>考试成绩</title> </head> <body> <% int examResults=0;//测试成绩 String str1=request.getParameter("1");//获取单选按钮 String str2=request.getParameter("2"); String str3=request.getParameter("3"); String str4=request.getParameter("4"); 2017年3月4日
<h3>您本次测试成绩是:</h3> <%=examResults/4*100%>分 if(str1==null) str1=""; if(str2==null) str2=""; if(str3==null) str3=""; if(str4==null) str4=""; if(str1.equals("B")) examResults++; if(str2.equals("A")) if(str3.equals("D")) if(str4.equals("C")) %> <h3>您本次测试成绩是:</h3> <%=examResults/4*100%>分 </body> </html> 2017年3月4日
运行效果 2017年3月4日
2017年3月4日
【例5-5】request对象应用实例3(request3.jsp 和requestHandle3.jsp) 本例包括两个文件:request3.jsp(主界面)和requestHandle3.jsp(数据处理页面)。在request3.jsp页面中输入数据后单击“提交”按钮,页面跳转到requestHandle3.jsp页面,该页面对提交的数据进行处理,并将数据输出到页面中。 request3.jsp代码如下: 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例3</title> </head> <body> <form action="requestHandle3.jsp" method="post"> <p>文本内容<input type="text" name="text"></p> <p>整数类型<input type="text" name="integer"></p> <p>复选框:</p> <p> 1.<input type="checkbox" name="checkbox1" value="1"><br> 2.<input type="checkbox" name="checkbox2" value="1"> </p> 2017年3月4日
<select name="select"> <option value="1">1</option> 下拉列表: <select name="select"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> </select> </p> <p><input type="submit" name="submit" value="提交"></p> </form> </body> </html> 2017年3月4日
2017年3月4日
requestHandle3.jsp代码如下: <%@page import="java.util.Vector"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String strText,strInteger,strCheckbox1,strCheckbox2; String strSelect,strOut,errOut; Integer intInteger; int errsCount; Vector errs =new Vector(); 2017年3月4日
if(strText.length()==0){ //向错误信息库中添加信息 strText=request.getParameter("text"); //得到并处理名为text的文本输入 if(strText.length()==0){ //向错误信息库中添加信息 errs.addElement(new String("文本内容域没有值输入")); } strInteger=request.getParameter("integer"); //得到名为integer的输入并转化为integer,同时检查是否为数值 try{ intInteger=Integer.valueOf(strInteger); }catch(NumberFormatException e){ errs.addElement(new String("整数类型需要输入数字!")); intInteger=new Integer(0); 2017年3月4日
strCheckbox1=request.getParameter("checkbox1"); if(strCheckbox1==null){ strCheckbox1="没有被选中"; }else{ strCheckbox1="被选中"; } if(strCheckbox2==null){ strCheckbox2="没有被选中"; strCheckbox2="被选中"; 2017年3月4日
strSelect=request.getParameter("select"); strOut="文本内容的值是:"+strText; strOut+="<br>整数类型的值是:"+intInteger; strOut+="<br>复选框1"+strCheckbox1; strOut+="<br>复选框2"+strCheckbox2; strOut+="<br>下拉列表的值是:"+strSelect+"<br>"; //输出结果 errsCount=errs.size(); errOut=new String(""); //输出错误 for(int i=0;i<errsCount;i++){ errOut+=errs.elementAt(i).toString(); errOut+="<br>"; } 2017年3月4日
out.println("数据处理结果<br>"); out.println(strOut); //输出结果 if(errsCount!=0){ out.println("错误原因<br>"); out.println(errOut); } %> </body> </html> 2017年3月4日
运行效果 2017年3月4日
【例5-6】request对象应用实例4(request4.jsp) 本例综合使用了20多个request对象中的方法。 <%@page import="java.util.Enumeration"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>request对象应用实例4</title> </head> <body> 2017年3月4日
request.setAttribute("Name", "小强"); <% request.setAttribute("Name", "小强"); request.setAttribute("Password", "123456"); request.setAttribute("Email", "sanz@163.com"); request.removeAttribute("Password"); Enumeration e=request.getAttributeNames(); String attrName; while(e.hasMoreElements()) { attrName = e.nextElement().toString(); out.print(attrName + " = " + request.getAttribute(attrName) + "<br>"); } request.setCharacterEncoding("ISO-8859-1"); %> 2017年3月4日
<%= request.getCharacterEncoding() %> Content Length : <%= request.getContentLength() %><br> Content Type : <%= request.getContentType() %><br> <%= request.getContextPath() %> 服务器地址:<%= request.getLocalAddr() %><br> 服务器名称:<%= request.getLocalName() %><br> <%= request.getMethod() %> <%= request.getProtocol() %><br> 客户端地址:<%= request.getRemoteAddr()%><br> 客户端名称:<%= request.getRemoteHost() %><br> 客户端端口:<%= request.getRemotePort() %><br> 验证用户名:<%= request.getRemoteUser() %><br> 2017年3月4日
获取SessionId<%= request.getRequestedSessionId() %><br> 请求URI:<%= request.getRequestURI() %><br> 请求URL:<%= request.getRequestURL() %><br> 服务器名字:<%= request.getServerName() %><br> 服务器端口:<%= request.getServerPort() %><br> <%= request.getServletPath() %><br> <%= request.getSession().getId() %><br> 2017年3月4日
<%= request.isSecure() %> <hr> </body> </html> 请求的会话ID是否通过Cookie传入:<%= request.isRequestedSessionIdFromCookie() %><br> 请求的会话ID是否通过URL传入:<%= request.isRequestedSessionIdFromURL() %><br> 请求的会话ID是否仍然有效:<%= request.isRequestedSessionIdValid() %><br> <%= request.isSecure() %> <hr> </body> </html> 2017年3月4日
运行效果 2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 2017年3月4日
5.3.1 response对象的基础知识 response对象将服务器端数据发送到客户端。response对象的生命周期 由JSP容器自动控制。当服务器向客户端传送数据时,JSP容器就会创建response对象并将请求信息包装到response对象中;当JSP容器处理完请求后,response对象就会被销毁。 2017年3月4日
containsHeader(String name):用于判断指定名称的Header是否已经存在,存在返回true,否则返回false。 response对象包含了响应客户请求的有关信息,它封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。response对象的主要方法如下: addCookie(Cookie cook):用于给用户添加一个Cookie对象,保存客户端的相关信息。可使用request的getCookies()方法获取该Cookie对象。 addHeader(String name,String value):用于添加带有指定名称和字符串的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就添加,存在则覆盖。 addDateHeader(String name,String value):用于添加带有指定名称和日期值的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就添加,存在则覆盖。 containsHeader(String name):用于判断指定名称的Header是否已经存在,存在返回true,否则返回false。 2017年3月4日
flushBuffer():用于强制把当前缓冲区所有内容发送到客户端。 getBufferSize():用于获取实际缓冲区的大小,如果没使用缓冲区则返回0。 getCharacterEncoding():用于获取响应的字符编码方式。 getContentType():用于获取响应的内容MIME类型。 getOutputStream():用于获取到客户端的输出流。 sendError():用于向客户端发送错误信息。如:404指网页找不到错误。 2017年3月4日
sendRedirect():用于重新定向客户端的请求。 setCharacterEncoding():用于设置响应的字符编码方式。 setContent():用于设置响应的内容MIME类型。 setContentLength():用于设置响应内容的长度(字节数。) setHeader():用于设置指定名称和字符串的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就设置,存在则覆盖。 setDateHeader():用于设置指定名称和日期值的HTTP文件头信息,该Header信息将传达到客户端,如果不存在就设置,存在则覆盖。 2017年3月4日
5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 2017年3月4日
【例5-7】response对象应用实例1(response1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>response对象实例演示</title> </head> <body> <h3>现在时间是:</h3> <hr> <%=new java.util.Date()%> <%response.setHeader("refresh","1");/*每一秒,重新对refresh赋值.*/ %> </body> </html> 2017年3月4日
运行效果 2017年3月4日
【例5-8】response对象应用实例2(response2.jsp和responseHandle.jsp) 本例包括两个文件:response2.jsp与responseHandle.jsp。response2.jsp页面综合使用了response对象的多个方法,点击“确定”后页面跳转到responseHandle.jsp页面,该页面根据选择的数据调用sendRedirect()方法进行页面重定向。 response2.jsp代码如下: 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>response对象应用实例2</title> </head> <body> <hr> <% response.setBufferSize(10240); %> <%=response.getBufferSize()%> <br> response.setCharacterEncoding("UTF-8"); <%=response.getCharacterEncoding()%> 2017年3月4日
<form action="responseHandle.jsp" method="post"> 网站友情链接: <hr> <form action="responseHandle.jsp" method="post"> <select name="link"> <option value="qhdxcbs" selected>清华大学出版社</option> <option value="jyb" >中华人民共和国教育部</option> </select> <input type="submit" name="submit" value="确定"> </form> </body> </html> 2017年3月4日
responseHandle.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String address =request.getParameter("link"); if(address!=null) { if(address.equals("qhdxcbs")) response.sendRedirect("http://www.tup.tsinghua.edu.cn/"); else response.sendRedirect("http://www.moe.edu.cn/"); } %> </body> </html> 2017年3月4日
2017年3月4日
2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日
5.4.1 session对象的基础知识 session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器里,session的ID保存在客户机的Cookie中。一般情况下,用户首次登录系统时容器会给此用户分配一个唯一的标识的session id用于区别其他的用户。当用户退出系统时,这个session就会自动消失。 2017年3月4日
当一个用户首次访问服务器上的一个JSP页面时, JSP引擎产生一个session对象,同 时分配一个String类型的ID号, JSP引擎同时将这个ID号发送到用户端,存放在Cookie 中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其它页面时,不再分配给用户新的Session对象。直到关闭浏览器后,服务器端该用户的 Session对象才取消,和用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的Session对象。 2017年3月4日
getAttribute(String name):用于获取与指定名字相联系的属性,如果属性不存在,将会返回null。 session对象的主要方法如下: getAttribute(String name):用于获取与指定名字相联系的属性,如果属性不存在,将会返回null。 getAttributeNames():用于返回session对象中存储的每一个属性对象,结果集是一个Enumeration类的实例。 getCreateTime():用于返回session对象被创建时间,单位为毫秒(千分之一秒)。 getId():用于返回Session对象在服务器端的编号。每生成一个session对象,服务器为其分配一个唯一编号,以根据编号来识别session,并且正确地处理某一特定的session及其提供的服务。 2017年3月4日
getLastAccessedTime():用于返回和当前session对象相关的客户端最后发送的请求时间。 getMaxInactiveInterval():用于返回session对象的生存时间,单位为秒。 setAttribute(String name,java.lang.Object value):用于设定指定名字的属性值,并且把它存储在session对象中。 setMaxInactiveInterval(int interval):用于设置session的有效时间,单位为秒。 invalidate():用于销毁session对象,使得与其绑定的对象都无效。 removeAttribute(String name):用于删除指定的属性(包含属性名、属性值)。如果在有效时间内,用户做出了新的请求,那么服务器就会将其看作一个新的用户,此时,服务器将创建一个新的session,旧的session信息将会丢失。 isNew():用于判断目前session是否为新的Session,若是则返回ture,否则返回false。 2017年3月4日
5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日
【例5-9】session对象应用实例1(session1.jsp) 本例实现的功能是获取页面访问次数,页面每被访问一次数值加1。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例1</title> </head> <body> 2017年3月4日
//从session对象获取number Object obj = session.getAttribute("number"); <% int number =10000; //从session对象获取number Object obj = session.getAttribute("number"); if(obj==null){ //设定session对象的变量的值 session.setAttribute("number",String.valueOf(number)); } else { //取得session对象中的number变量 number=Integer.parseInt(obj.toString()); //统计页面访问次数 number+=1; //设定session对象的number变量值 %> 你是第<%=number%>个用户访问本网站。 </body> </html> 2017年3月4日
2017年3月4日
【例5-10】session对象应用实例2(session2.jsp) <%@page import="java.util.Date"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例2</title> </head> <body> <hr> session的创建时间是:<%=session.getCreationTime()%>  <%=new Date(session.getCreationTime())%> <br> session的Id号:<%=session.getId()%> 2017年3月4日
客户最近一次访问时间是:<%=session.getLastAccessedTime()%>  <%=new java.sql. Time(session.getLastAccessedTime())%> <br> 两次请求间隔多长时间session将被取消(ms): <%=session.getMaxInactiveInterval()%> 是否是新创建的session:<%=session.isNew()?"是":"否"%> <hr> <% session.setAttribute("name", "传说中的小强"); session.setAttribute("password", "1008610001"); %> 姓名:<%= session.getAttribute("name") %> 密码:<%= session.getAttribute("password") %> 2017年3月4日
ID号:<%= session.getId() %> <br> <% session.setMaxInactiveInterval(500); %> 最大有效时间:<%= session.getMaxInactiveInterval() %> session.removeAttribute("name"); 姓名:<%= session.getAttribute("name") %> <hr> </body> </html> 2017年3月4日
2017年3月4日
【例5-11】session对象应用实例3(session3Login.jsp、shop.jsp、account.jsp) 本例包括三个文件:session3Login.jsp、shop.jsp、account.jsp。本实例模拟网上购物系统功能,客户登录(登录页面session3Login.jsp)后方可在网上购物(购物页面shop.jsp),购物完成后进行结账(结账页面account.jsp)。 session3Login.jsp代码如下: 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——登录页面</title> </head> <body> <% session.setAttribute("customer", "客户");//为customer变量传值“客户” %> <h3>请先登录后购物:</h3> <hr> <form action="shop.jsp" method="get"> 客户名:<input type="text" name="loginName"> <input type="submit" value="登录"> </form> </body> </html> 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> shop.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——购物</title> </head> <body> <% String na=request.getParameter("loginName"); session.setAttribute("name",na); %> <h3>请输入想购买的商品:</h3> <hr> <form action="account.jsp" method="get"> 要购买的商品:<input type="text" name="goodsName"> <input type="submit" value="购物"> </form> </body> </html> 2017年3月4日
<%@page contentType="text/html" pageEncoding="UTF-8"%> account.jsp代码如下: <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>session对象应用实例3——结账</title> </head> <body> <% String gn=request.getParameter("goodsName"); session.setAttribute("goods",gn); String 客户=(String)session.getAttribute("customer"); String 姓名=(String)session.getAttribute("name"); String 商品=(String)session.getAttribute("goods"); %> <h3>结账信息:</h3> <hr> <%=客户%>的姓名是:<%=姓名%> <br> 你购买的商品是:<%=商品%> </body> </html> 2017年3月4日
2017年3月4日
2017年3月4日
2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 2017年3月4日
5.5.1 pageContext对象的基础知识 pageContext对象提供了对JSP页面所有的对象及命名空间的访问,如访问out对象、request对象、response对象、session对象、application对象,即使用pageContext对象获取其它内置对象中的值。 pageContext提供了对JSP页面内使用到的所有对象及名字空间的访问,提供了对几种页面属性的访问,并且允许向其它应用组件转发request对象。它的创建和初始化都是由容器来完成的。pageContext对象提供的方法可以处理与JSP容器有关的信息以及其它对象的属性。 2017年3月4日
pageContext对象的主要方法如下: setAttribute(String name,Object attribute):用于设置指定属性及属性值 setAttribute(String name,Object obj,int scope):用于在指定范围内设置属性及属性值 getAttribute(String name,int scope) :用于指定范围内获取属性的值 getAttribute(String name):用于获取指定属性的值 getOut():用于返回当前的out对象 getPage():用于返回当前的page对象 getRequest():用于返回当前的request对象 getResponse():用于返回当前的response对象 2017年3月4日
getSession():用于返回当前页面的session对象 getServletConfig():用于返回当前的config对象 getException():用于返回当前的exception对象 getServletContext():用于返回当前页application对象 findAttribute():用于按照页面、请示、会话以及应用程序范围的顺序实现对某个已经命名属性的搜索,寻找一属性,返回其属性值或null forward(java.lang.String relativeUrlPath):用于把页面重定向到另一个页面或者Servlet组件上 moveAttribute():用于删除默认页面范围或特定对象范围之中的已命名对象 release():用于释放pageContext所占资源 include(String relativeUrlPath):用于在当前位置包含另一文件 2017年3月4日
5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 2017年3月4日
【例5-12】pageContext对象应用实例(pageContext.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>pageContext对象应用实例</title> </head> <body> <h3>使用pageContext对象获取其它内置对象中的值:</h3> <hr> 2017年3月4日
request.setAttribute("name", "Java程序设计与项目实训教程 (清华大学出版社)"); <% request.setAttribute("name", "Java程序设计与项目实训教程 (清华大学出版社)"); session.setAttribute("name", "JSP程序设计技术教程 application.setAttribute("name", "Struts2+Hibernate框架技术教程 %> request对象中的值:<%=pageContext.getRequest().getAttribute("name")%> <br> session对象中的值:<%=pageContext.getSession().getAttribute("name")%> application对象中的值: <%=pageContext.getServletContext().getAttribute("name")%> </body> </html> 2017年3月4日
2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 2017年3月4日
5.6.1 exception对象的基础知识 exception对象用来处理JSP文件在执行时发生的错误和异常。exception对象可以配合page指令一起使用,在page指令中isErrorPage属性应设为true,否则无法编译。 通过exception对象的方法指定某一个页面为错误处理页面,把所有的错误都集中该页面进行处理,可以使得整个系统的健壮性得到加强,也使得程序的流程更加简单明晰。 2017年3月4日
getMessage():用于返回描述异常错误的提示信息。 getlocalizedMessage():用于获取本地化错误信息。 exception对象的主要方法如下: getMessage():用于返回描述异常错误的提示信息。 getlocalizedMessage():用于获取本地化错误信息。 printStackTrace():用于输出异常对象及其堆栈跟踪信息。 toString():返回关于异常的简短描述消息。 2017年3月4日
5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 2017年3月4日
【例5-13】exception对象应用实例(exception.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>exception对象应用实例</title> </head> <body> <h3>以下是异常信息:</h3> <hr> <% int x = 9, y = 0, z; try{ z = x / y; }catch(Exception e){ out.println(e.toString()+"<br>"); } finally{ out.println("产生了除以0的错误!"); %> </body> </html> 2017年3月4日
2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.2 request对象 5.3 response对象 5.4 session对象 5.5 pageContext对象 5.6 exception对象 5.7 application对象 5.8 常见问题及解决方案 2017年3月4日
5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 2017年3月4日
5.7.1 application对象的基础知识 application对象保存Web应用程序中公有的数据,可存放全局变量。服务器启动后自动创建application对象,此对象将一直有效,直到服务器关闭。不同用户可以对该对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此对象的访问。 application对象和session对象的区别是:在使用session对象时,各个客户端共享一个session对象,而使用Application对象时,为多个应用程序保存信息,对于一个容器而言,在同一个服务器中的JSP文件中共享一个application对象。 2017年3月4日
application对象的主要方法如下: getAttribute(String name):用于返回给定application对象的属性的值 getAttributeNames():用于以Enumeration类型返回application对象的某个属性的初始值 getServerInfo():用于返回servlet编译器的当前版本信息 getContext(String uripath):用于返回指定WebApplication的application对象 2017年3月4日
getMimeType(String file):用于返回application对象指定文件的MIME类型 getResource(String path):用于返回application对象指定资源(文件及目录)的URL路径 getServlet(String name):用于返回application对象指定的Servlet setAttribute(String name,Object obj):用于设定application对象的属性及其属性值 removeAttribute(String name):用于删除application对象属性及其属性值 log(String msg):用于指定application对象消息写入Servlet的日志文件 2017年3月4日
5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 2017年3月4日
【例5-14】application对象应用实例1(application1.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application对象应用实例1</title> </head> <body> <% //获取一个Object对象 String strNum = (String)application.getAttribute("count"); int count =0; //如果一个Object对象存在说明有用户访问 if(strNum!=null) //类型转化后值加1 count = Integer.parseInt(strNum) + 1; //人数值加1后重新对count赋值 application.setAttribute("count", String.valueOf(count)); %> 您是第<%=application.getAttribute("count")%>位访问者! </body> </html> 2017年3月4日
2017年3月4日
【例5-15】application对象应用实例2(application2.jsp) <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application对象应用实例2</title> </head> <body> <br> JSP引擎名及Servlet版本号:<%=application.getServerInfo()%> <% application.setAttribute("name","Java程序设计与项目实训教程"); out.print(application.getAttribute("name")+"<br>"); application.removeAttribute("name"); %> </body> </html> 2017年3月4日
2017年3月4日
总结与回顾! 2017年3月4日
第5章 JSP的常用内置对象 5.1 out对象 5.1.1 out对象的基础知识 5.1.2 out对象应用实例 5.2 request对象 5.2.1 request对象的基础知识 5.2.2 request对象应用实例 5.3 response对象 5.3.1 response对象的基础知识 5.3.2 response对象应用实例 5.4 session对象 5.4.1 session对象的基础知识 5.4.2 session对象应用实例 2017年3月4日
5.5 pageContext对象 5.5.1 pageContext对象的基础知识 5.5.2 pageContext对象应用实例 5.6 exception对象 5.6.1 exception对象的基础知识 5.6.2 exception对象应用实例 5.7 application对象 5.7.1 application对象的基础知识 5.7.2 application对象应用实例 5.8 常见问题及解决方案 2017年3月4日
请复习已学知识! 预习后面章节的内容 并完成第7章项目的 部分功能! 2017年3月4日