Web技术应用基础-d8_第1页
Web技术应用基础-d8_第2页
Web技术应用基础-d8_第3页
Web技术应用基础-d8_第4页
Web技术应用基础-d8_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章JSP内置对象第3篇JSPWeb数据库应用开发JSP1JSP8.1JSP内置对象概述9个内置对象request:客户端请求response:效劳器对客户端的回应session:与请求有关的会话对象application:与效劳器环境相关的对象out:向客户端发送信息的对象config:脚本程序配置对象pagecontext:管理网页的上下文属性page:代表正在运行的由JSP文件产生的类对象exception:JSP运行时产生的异常对象2JSP8.2request对象request和response结合起来完成动态页面的交互功能8.2.1.request对象的功能request封装了用户提交的信息,例如,<formmethed=get|postaction="效劳器端应用程序URL">

效劳器端应用request对象的方法来接受或处理这些信息。request对象用的比较多的是:getParameter方法。3JSP8.2.2getParameter方法1.getParameter方法的作用根据指定的参数,获取客户端信息。2.getParameter方法的语法规那么<%Stringname%>……<%name=request.getParameter("txtName")%>。4JSP8.2.3获取客户提交信息案例例8.1:要求在页面上有两个文本框,用户在文本框中输入姓名和号码,单击“提交”按钮后,由效劳器应用程序接受并处理用户信息。例中ex8-01.html通过表单向ex8-01.jsp提交信息。获取用户提交信息5JSPex8-01.html:<html><head><title>获取客户提交信息案例</title></head><body><formaction="ex8-01.jsp"method=post><divalign="center"><fontsize=3>姓名:<inputname=RdName><br>:<inputname=PhName><br><inputtype="submit"value="提交"name="submit"></div></font></form></body></html>6JSPex8-01.jsp:<html><body><%Stringstr1=request.getParameter("RdName");%><%Stringstr2=request.getParameter("PhName");%><%Stringstr3=request.getParameter("submit");%><fontface="楷体"size=4color=blue>姓名文本框信息:<%=str1%><br>文本框信息:<%=str2%><br>提交按钮的面值:<%=str3%></font></body></html>7JSP8.2.4request对象常用方法(1)getProtocol():获得客户向效劳器传送数据使用的通信协议和版本号(2)getServerName():获得接受请求效劳器主机名(3)getServerPort():获得效劳器主机端口号(4)getRemoteHost():获得客户机全名,如果名字得不到,得客户机IP地址(5)getRemoteAddr():获得发送请求客户机IP地址(6)getMethod():获得客户提交信息方式(7)getServletPath():获得客户请求JSP页面的文件目录。(8)getContentLength():获得客户提交信息长度,以字节为单位(9)getHeader(Stringname):获得HTTP头文件由name指定的参数值(10)getHeaderNames():获得客户请求中所有头部域名字(11)getPathInfo():获得客户请求关联到URL附加路径信息,没有此信息那么返回空值8JSP(12)getCookies():返回客户端的Cookies对象(13)getRequestURL():获得发出请求字符串的客户端地址(14)getParameter(Stringname):获得客户提交给效劳器name参数值(15)getParameterNames():获得客户提交给效劳器所有参数名(16)getParameterValues(Stringname):获得指定参数所有值9JSP8.2.5request对象常用方法应用案例例8.2:request对象常用方法10JSPex8-02.jsp:<html><head><title>request对象常用方法应用案例</title></head><body><%out.println("姓名文本框提交信息:"+request.getParameter("RdName")+"<br>");out.println("文本框提交信息:"+request.getParameter("PhName")+"<br>");out.println("客户端协议名和版本号:"+request.getProtocol()+"<br>");out.println("客户机名:"+request.getRemoteHost()+"<br>");out.println("客户机的IP地址:"+request.getRemoteAddr()+"<br>");out.println("客户提交信息的长度:"+request.getContentLength()+"<br>");out.println("客户提交信息的方式:"+request.getMethod()+"<br>");out.println("HTTP头文件中Host值:"+request.getHeader("Host")+"<br>");out.println("效劳器名:"+request.getServerName()+"<br>");out.println("效劳器端口号:"+request.getServerPort()+"<br>");out.println("接受客户提交信息的页面:"+request.getServletPath()+"<br>");%></body></html>11JSP8.3response对象

8.3.1response对象功能response对象把效劳器端的数据以HTTP的格式发送到客户端浏览器。12JSP浏览器效劳器RequestResponse13JSP8.3.2sendRedirect方法功能

将客户端浏览器转向新页面,页面中重定向语句后的代码不再被执行。根据用户的不同要求转向不同的页面。

14JSP

例8.3:用户登录界面,验证登录者输入的姓名和密码是否完整,如果不完整转向新的页面请重新输入,如果完整那么显示输入的姓名和密码。由三个程序组成:ex8-03.html:登录界面,在界面中输入姓名和密码。ex8-03.jsp:判断输入是否完整,假设输入完整,显示登录成功界面,如果输入不完整,response.sendRedirect(“ex8-03_1.html”)语句将页面重新定向到错误处理页面ex8-03_1.html。ex8-03_1.html:读者输入数据不完整,提示读者重新输入。页面重新定向15JSP(1)ex8-03.html:<html><head><title>sendRedirect方法应用案例</title></head><body><center><fontsize="5"face="隶书"color="#ff0000">欢迎登录</font><hr><formaction="ex8-03.jsp"method=post><divalign="center"><fontsize=4>姓名:<inputname=RdNamesize=20><br>密码:<inputtype="password"name=RdPasswdsize=21><br><br><inputtype="submit"value="确定"name="submit"><inputtype="reset"value="清除"name="reset"></font></center></form></body></html>16JSP(2)ex8-03.jsp:<%StringName=request.getParameter("RdName");StringPasswd=request.getParameter("RdPasswd");if(Name.equals("")||Passwd.equals(""))response.sendRedirect("ex8-03_1.html");%><html><head><title>sendRedirect方法应用案例</title></head><body><center><fontsize="5"face="隶书"color="#ff0000">登录成功</font></center><hr><P>姓名是:<%=Name%><P>密码是:<%=Passwd%></body></html>17JSP(3)ex8-03_1.html:<html><head><title>sendRedirect方法应用案例</title></head><body><center><fontsize="2"face="隶书"color="#ff0000">信息不完整,请重新输入!</font></center><formaction="ex8-03.jsp"method=post><divalign="center"><fontsize=4>姓名:<inputname="RdName"size=20><br>密码:<inputtype="password"name=RdPasswdsize=21><br><inputtype="submit"value="确定"name="submit"><inputtype="reset"value="清除"name="reset"></font></form></body></html>18JSP8.3.3response的状态行1.状态行作用状态行包含3位数字的状态代码。共有5类状态码。1XX(1开头的3位数):实验性质的。2XX:请求成功3XX:请求满足之前应采取的进一步行动4XX:浏览器不能满足请求时,返回的状态码5XX:效劳器执行出现错误时,返回的状态码19JSP2.setStatus()方法:设置响应的状态行3.状态行应用案例例8.4:包含4个文件,ex8-04.html、ex8-04_1.jsp、ex8-04_2.jsp和ex8-04_3.jsp,用户在ex8-04.html页面点击不同的超链接,显示不同的状态码状态。

状态行应用20JSP(1)ex8-04.html:<html><head><title>responde对象状态行应用案例</title></head><body><center><fontsize="5"face="隶书"color=blue>显示不同的状态行</font><hr><fontsize="3"face="楷体"color=green><ahref="ex8-04_1.jsp">200请求成功信息</a><br><ahref="ex8-04_2.jsp">404请求资源不可用信息</a><br><ahref="ex8-04_3.jsp">501不支持请求的局部功能</a><br></font></center></body></html>21JSP(2)ex8-04_1.jsp:<html><head><title>responde对象状态行应用案例</title></head><body><center><fontsize=“5”face=“隶书”color=blue>200请求成功信息

</font><br><hr><%response.setStatus(200);out.println("一切正常");%></center></body></html>22JSP(3)ex8-04_2.jsp:<html><head><title>responde对象状态行应用案例</title></head><body><center><fontsize=“5”face=“隶书”color=blue>404请求资源不可用信息</font><br><hr><%response.setStatus(404);out.println("不能显示");%></center></body></html>23JSP(4)ex8-04_3.jsp:<html><head><title>responde对象状态行应用案例</title></head><body><center><fontsize=“5”face=“隶书”color=blue>501不支持请求的局部功能</font><%response.setStatus(501);out.println("不能显示");%></center></body></html>24JSP8.3.4setContentType方法1.setContentType方法功能动态设置ContentType属性值。2.setContentType语法格式语法:response.setContentType(Strings);参数s可以取的值:(1)text/html:HTML超文本文件,后缀“.html”。(2)text/plain:文本文件,后缀“.txt”。(3)application/msword:word文档文件,后缀“.doc”。(4)application/x-msexcel:excel表格文件,后缀“.xls”。(5)image/jpeg:jpeg图像,后缀“.jpeg”。(6)image/gif:gif图像,后缀“.gif”。25JSP3.setContentType方法应用案例例8.5:用户根据需要选择HTML类型、word类型或excel类型,显示同一个dataTxt.txt文件。用户在ex8-05.html页面上选择不同按钮,然后单击提交按钮,由ex8-05.jsp文件进行选择显示类型。选择显示类型26JSP(1)ex8-05.html:<html><head><title>setContentType方法应用案例</title></head><body><formaction="ex8-05.jsp"method="get"><fontsize=“5”face=“隶书”color=blue>请选择文件显示类型</font><hr><inputtype="radio"name="showType"value="0">HTML类型显示<br><inputtype="radio"name="showType"value="1">word类型显示<br><inputtype="radio"name="showType"value="2">excel类型显示<br><inputtype="submit"name="submit"value="提交"></form></body></html>27JSP(2)ex8-05.jsp:<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>setContentType方法应用案例</title></head><body><%Stringstr=request.getParameter("showType");if(str==null){str="";}else{if(str.equals("0")){response.setContentType("text/html;charset=gb2312");}elseif(str.equals("1")){response.setContentType("application/msword;charset=gb2312");}else{response.setContentType("application/x-msexcel;charset=gb2312");}}%><jsp:includepage="dataTxt.txt"flush="true"/></body></html>28JSP8.3.5response对象的其他方法

(1)getCharacterEncoding():返回效劳器响应客户所使用的编码属性。(2)getWriter:获得一个打印输出对象,用来向客户发送文本。(3)setContentLength:设置效劳器发送给客户端内容的长度。(4)setHeader:动态添加新的响应头和头的值。29JSP8.3.6response方法应用案例例8.6:返回效劳器的编码属性和一个打印输出对象,并每8秒钟刷新一次页面,显示时间。response对象方法30<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.*"%><html><head><title>response对象常用方法应用案例</title></head><body><fontface="楷体"size=3color=blue><%out.println("效劳器使用的编码属性:“+response.getCharacterEncoding()+"<br>");out.println("打印输出对象:+response.getWriter()+"<br>");%><hr>页面每8秒钟刷新一次现在的时间是:<br><%out.println(""+newDate());response.setHeader("Refresh","8");%></font></body></html>31JSP8.4out对象

8.4.1out对象功能输出流,向客户端发送数据。32JSP8.4.2out对象中预定义的常量和变量

(1)NO_BUFFER:表示非缓冲区输出。(2)DEFAULT_BUFFER:缓冲区输出,使用默认的缓冲区大小。(3)bufferSize:缓冲区大小,以字节为单位的整型数。(3)autoFlush:是否自动清空缓冲区。33JSP8.4.3out对象方法(1)print:输出数据(2)println:输出数据,并换行(3)clear:去除缓冲区中的内容(4)clearBuffer:去除缓冲区当前的内容(5)flush:缓冲区内容写入输出流,并清空缓冲区。(6)close:关闭流(7)getBufferSize:返回以字节为单位的缓冲区大小,无缓冲区时返回0(8)getRemaining:返回以字节为单位未使用的缓冲区大小34JSP对象应用案例1.out对象常用方法应用案例例8.7:out对象一些方法的应用out对象方法应用35JSP<%@pagelanguage="java"autoFlush="false"%><html><head><title>out对象print/println方法应用案例</title></head><body><center><fontsize=5color=blue>print/println方法应用</font></center><%out.println("你好!");out.clear();out.println("afterclear:<br>");chara='h';intm=8;doublef=3.1415926;out.print("a="+a+"");out.print("m="+m+"");out.print("f="+f+"<br>");out.print("BufferSize:"+out.getBufferSize()+"<br>");out.print("Remaining:"+out.getRemaining()+"<br>");%></body></html>36JSP2.flush()方法应用例8.8:应用for循环延迟文字的输出,并使用flush()方法把缓冲区的内容输出到页面,使输出的文字逐行显示出来。flush()方法37JSP<html><head><title>out对象flush()方法的应用</title></head><body><center><fontsize=4color=blue>逐行显示文字</font></center><hr><%StringstrShow="Web技术应用根底!";//设定输出的文字%><center><fontsize=3face="楷体"color=red><%for(inti=0;i<=12;i++)//通过for循环,输出6行文字于页面中{for(intj=0;j<200000000;j++) //利用for循环延迟文字的输出{}out.println(strShow+"<BR>");//将字串输出至缓冲区out.flush();//将缓冲区的文字输出至网页}%></font></center></body></html>38JSP8.5session对象8.5.1会话(session)和会话ID一个会话:一个客户翻开浏览器并连接到效劳器开始,一直到这个客户关闭浏览器离开该效劳器为止。

39JSP

当一个客户第一次翻开浏览器访问效劳器上的某个JSP页面时,JSP引擎为客户创立一个session对象,存储客户在访问各个页面期间提交的各种信息,为该对象分配一个String类型的ID号,JSP引擎在响应客户请求的同时,把ID号发到客户端,并写入客户端的cookie中。40JSP8.5.2session对象常用方法(1)setAttribute(Stringname,Objectobj):把Object指定的对象obj存入session对象(2)getAttribute(String变量名):从session对象中取得变量(3)getAttributeNames():产生一个枚举对象(4)removeAttribute(Stringname):删除在session对象中由name指定的对象(5)getCreationTime():获得session对象创立的时间(6)getLastAccessedTime():返回session对象最后一次被用户访问的时间,单位是毫秒41JSP(6)getId():获得session对象的ID(7)getMaxInactiveInterval():获得session对象生存时间,单位是秒(8)setMaxInactiveInterval():设置session对象生存时间,单位是秒(9)getValue(Stringname,Objectvalue):获得由name的属性值(10)putValue(Stringname,Objectvalue):存储name的属性值(11)getValueNames():返回存储在session对象中的所有对象名(12)invalidate():删除会话,并去除存储在该对象中的所有对象(13)isNew():如果效劳器创立了此会话对象,但客户还未参加,返回值为真(14)removeValue(Stringname):删除session中特定名称的对象42JSP8.5.3session对象应用案例1.一次会话例8.9由3个页面组成:ex8-09.jsp、ex8-09_1.jsp和ex8-09_2.jsp,客户在三个页面之间转跳,只要不关闭浏览器,三个页面共享同一个session对象,它们的ID是一样的。一次会话43JSP(1)ex8-09.jsp:<html><head><title>会话(session)和会话ID</title></head><body<fontsize=3color=blue>第一个页面的sessionID是:<%out.println(session.getId());%><hr><ahref=ex8-09_1.jsp>第二个页面</a><ahref=ex8-09_2.jsp>第三个页面</a></font></center></body></html>44JSP(2)ex8-09_1.jsp:<html><head><title>会话(session)和会话ID</title></head><body><fontsize=3color=blue>第二个页面的sessionID是:<%out.println(session.getId());%><hr><ahref=ex8-09.jsp>第一个页面</a><ahref=ex8-09_2.jsp>第三个页面</a></font></center></body></html>45JSP

(3)ex8-09_2.jsp:<html><head><title>会话(session)和会话ID</title></head><body><fontsize=3color=blue>第三个页面的sessionID是:<%out.println(session.getId());%><hr><ahref=ex8-09.jsp>第一个页面</a><ahref=ex8-09_1.jsp>第二个页面</a></font></body></html>46JSP2.在会话期传递参数例8.10:由三个页面组成一个多页面Web应用。session对象在会话期间是一直有效的ex8-10.jsp:获取session对象建立时间和最后一次使用时间。并应用session对象的putValue方法设置一个session对象BookName的值,该值是:"Web技术应用根底!"。ex8-10_1.jsp:获取上一页代码即ex8-10.jsp中的session对象的BookName值,并把它输出到页面。同时设置另一个session对象的BookInfo值。ex8-10_2.jsp:显示上两个页面的session对象BookName和BookInfo的值,在会话期间session对象是一直有效的。会话期传递参数47JSP(1)ex8-10.jsp:<%@pageimport=""%><html><head><title>会话期传递参数</title></head><body><center><fontsize=3color=blue>会话期传递参数</font></center><hr><%DatestartTime=newDate(session.getCreationTime());DatelastTime=newDate(session.getLastAccessedTime());session.putValue("BookName","Web技术应用根底!");%>session建立时间:<fontcolor=red><%=startTime%></font><br>最后使用时间:<fontcolor=red><%=lastTime%></font><br><ahref='ex8-10_1.jsp'>书名</a></body></html>48JSP(2)ex8-10_1.jsp:<html><head><title>session对象值传递</title></head><body><center><fontsize=3color=blue>session对象值传递</font></center><hr><br>书名:<%=session.getValue("BookName")%><p><%session.putValue("BookInfo","Web站点构建技术、Web编程技术和数据库发布技术。");%><ahref='ex8-10_2.jsp'>内容简介</a></center></body></html>49JSP(3)ex8-10_2.jsp:<html><head><title>session对象值传递</title></head><body><center><fontsize=3color=blue>session对象值传递</font></center><hr><br>书名:<%=session.getValue("BookName")%><p>内容简介:<%=session.getValue("BookInfo")%></center></body></html>50JSP8.6application对象8.6.1application对象功能application对象由多个客户端用户共享。效劳器启动后,新建一个application对象,该对象一旦建立,就一直保持到效劳器关闭。51JSP8.6.2application对象常用方法(1)getAttribute(Stringname):返回由name的属性值(2)setAttribute(Stringname,Objectobj):obj初始化name属性值。(3)getAttributeNames():获得一个枚举对象(4)getInitParameter(Stringname):返回name属性的初始值(5)getServerInfo():获得JSP引擎名和版本号(6)getRealPath():获得文件的实际路径(7)removeAttribute(Stringname):删除name对象(8)getMimeType()方法:返回特定文件的MIME类型52JSP8.6.3application对象应用案例1.输出全局数据例8.11:使用application对象输出应用程序在效劳器运行期间的一些全局信息..输出全局数据53JSP<html><head><title>application</title><head><body><%out.println("JavaServletAPI版本号:"+application.getMajorVersion()+"."+application.getMinorVersion()+"<br>");out.println("文件login.htm的MIME类型:"+application.getMimeType("\\login.htm")+"<br>");out.println("程序ex8-11.jsp的URL:"+application.getRealPath("ex8-11.jsp")+"<br>");out.println("效劳器信息:"+application.getServerInfo()+"<br>");application.setAttribute("BookName","Web技术应用根底");out.println("书名:"+application.getAttribute("BookName")+"<br>");%></body></html>54JSP2.计数器例8.12:对用户的访问量进行统计.计数器55JSP<%@pagecontentType="text/html;charset=gb2312"%><%if(session.isNew()){//同步处理synchronized(application){Integercount=(Integer)application.getAttribute("count");if(count==null){count=newInteger(1);application.setAttribute("count",count);}else{count=newInteger(Value()+1);//将访问量保存到内存当中application.setAttribute("count",count);}out.print("您是本站的第"+count+"位客人");}}%>56JSP8.7exception对象8.7.1exception对象功能发现、扑获和处理异常57JSP58JSP8.7.2JSP异常处理语句

try{抛出异常模块}catch{扑获异常模块}finally{处理异常模块}59JSP8.7.3exception对象常用方法(1)getMessage方法:获取异常信息(2)toString方法:获取该异常对象的简短描述60JSP8.7.4异常处理应用案例例8.13:包含两个程序ex8-13.jsp和ex8-13_1.jsp:ex8-13.jsp:代码ex8-13.jsp中的除法用0做了除数,抛出一个异常,该异常由ex8-13_1.jsp异常处理页去处理。异常处理61JSP(1)ex8-13.jsp:<%@pageerrorPage="ex8-13_1.jsp"%><html><head><title>异常处理</title></head><body><center><%inta=10,b=0,c;try{c=a/b;}catch(RuntimeExceptionrtex){thrownewRuntimeException("除数不能为零!");} %></body></html>62JSP(2)ex8-13_1.jsp:<%@pageisErrorPage="true"%><html><head><title>处理异常页面</title></head><body><center><fontsize=4color=blue>处理异常页面</font><hr><fontsize=3color=red><%=exception.toString()%></font></center></body></html>63JSP8.8JSP其他内置对象8.8.1page对象

page对象的方法(1)getClass():获得对象运行时的类(2)hashCode():获得对象的哈希码值(3)equals():判别其他对象是否与该对象相等(4)clone():创立并返回当前对象的拷贝(5)toString():取得表示该对象的字符串64JSP应用举例例8.14:page对象局部方法的应用page对象应用65JSP<html><head><title>page对象应用</title></head><body><center><fontsize=4color=blue>page对象应用案例</center><hr></font><%out.println("JSP文件的类是:"+"<br>"+page.getClass()+"<p>");out.println("page对象的哈希码值是:"+page.hashCode()+"<p>");out.println("page对象转换成字符串:"+page.toString()); %></body></html>66JSP8.8.2pageContext对象1.pageContext对象功能:获取页面运行属性2.pageContext对象方法(1)setAttribute(Stringname,Objectobj):obj初始化name属性(2)getAttribute(Stringname):返回name指定名字属性值(3)findAttribute(Stringname):按照page、request、session和application的次序获得给定名字属性(4)removeAttribute(Stringname):删除给定名字的属性(5)getAttributesScope(Stringname):返回一个整型数,表示与给定名字相关对象的作用范围(6)include(Stringname):将给定名字包含进来67JSP3.pageContext对象应用案例例8.15:pageContext对象局部方法的应用pageContext对象68JSP<html><head><title>pagecotext对象应用案例</title></head><body><center><fontsize=3color=blue>pageCotext对象应用案例</font></center><%Stringfilename="ex8-15.jsp";pageContext.setAttribute

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论