JSP的内置对象PPT课件_第1页
JSP的内置对象PPT课件_第2页
JSP的内置对象PPT课件_第3页
JSP的内置对象PPT课件_第4页
JSP的内置对象PPT课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

08.06.2020,1,动态网页设计,第4章JSP内置对象,08.06.2020,2,第4章JSP内置对象,为简化Web页面的开发过程,JSP提供了一些由服务器实现和管理的内置对象,这些内置对象在JSP页面中不用声明就可以使用。内置对象是服务器JSP引擎自动创建的Java类实例通过存取这些内置对象实现与JSP页面和Servlet环境的相互访问。内置对象可以实现很多功能,如从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。,4.1JSP内置对象概述,08.06.2020,3,内置对象功能举例说明,使用直接存取out对象来打印一些东西到客户端:借助请求对象来取得客户端输入的参数值:完成页面的重定向:在错误页面中显示出错信息:,重新使用;改寄;改变投递方向,08.06.2020,4,JSP中的9种内置对象,与输入/输出有关,与属性作用域有关,与Servlet相关,与错误处理有关,08.06.2020,5,4.2与输入/输出有关的内置对象,4.2.1request对象4.2.2response对象4.2.3out对象,08.06.2020,6,4.2.1request对象,1请求行规定了请求的方法(如get、post、head、delete、put等),请求的资源和使用的HTTP协议版本号。2请求头请求头主要说明请求客户的主机IP、cookie、信息体和附加信息。一个HTTP请求可以包括多个请求头。3信息体指请求的正文。如表单数据被封装为信息体,08.06.2020,7,4.2.1request对象(续),在JSP页面中,使用内置对象request可以查看HTTP请求报文中的这些信息。它是实现javax.servlet.HttpServletRequest接口的类的一个实例。request对象的方法有很多,从功能角度可以将这些方法分为4类:,取得请求参数的方法,取得请求HTTP头的方法,储存和取得属性方法,其他的方法,08.06.2020,8,1取得请求参数的方法,08.06.2020,9,2.取得请求HTTP头的方法,08.06.2020,10,3储存和取得属性方法,08.06.2020,11,4其他的方法,08.06.2020,12,4其他的方法(续),08.06.2020,13,request比较重要的方法,getParameter()getParameterNames()getParameterValues()getHeader(),记住噢,08.06.2020,14,.获得客户端提交的信息,StringgetParameter(Stringname),该方法用于获取客户端浏览器传递(如:表单、param动作指令)给服务器端由name指定的参数值。当传递给此方法的参数名name没有实际参数与之对应时,则返回null。,08.06.2020,15,获得客户端提交的信息(续),文本框提交的用户名为:客户端提交的按钮的名字为:,exa3_1.jsp,1.运行,2.调用,3.执行结果,举例:,tree.jsp,08.06.2020,16,.处理中文信息,在例exa3_1.jsp中输入中文时将不能正确显示,如图所示:这就引发如何处理客户端提交的中文问题。,08.06.2020,17,JSP页面的汉字问题主要指两方面:JSP页面中的汉字问题表单提交的汉字问题,08.06.2020,18,(1)JSP页面的汉字问题,对于JSP页面的汉字问题,需要在JSP中使用page指令告诉客户端汉字的编码方式:在没有特别指示下,浏览器无法正确显示汉字,每个要显示汉字的JSP页面都应该包含该语句。,08.06.2020,19,(2)表单提交的汉字问题,原因:客户端和服务器交互过程中,在客户端和服务器用的是GB2312对汉字编码,而HTTP传输用ISO_8859_1编码解决思想:不仅服务器端必须用指令指示客户端汉字的显示编码,同时在服务器端接收到客户端数据时需要将编码转换为GB2312后进行处理,08.06.2020,20,(2)表单提交的汉字问题(续),具体做法:或或,08.06.2020,21,.类型转换问题,StringgetParameter(Stringname),注意:request.getParameter方法获取客户端浏览器传递给服务器端由name指定的参数值类型是字串型。有时输入的信息是数字,并需要用于数字计算时,要进行类型格式转换,08.06.2020,22,请输入一个数字,计算其平方根:,08.06.2020,23,=0)r=Math.sqrt(number);out.print(+String.valueOf(number)+的平方根:);out.print(+String.valueOf(r);elseout.print(+请输入一个正数);catch(NumberFormatExceptione)out.print(+请输入数字字符);%,Float.parseFloatInteger.parseInt,08.06.2020,24,.避免空指针异常,例如:StringtextContent=request.getParameter(“tnumber”)如果在JSP引擎运行这个JSP页面时,客户端还没有提交数据,textContent也还没有创建,此时textContent对象为nullnumber=Double.parseDouble(textContent)语句需要使用textContent,Java解释器会提示出现空指针异常NullPointerException为了避免使用空对象,在JSP页面中使用了如下代码:if(textContent=null)textContent=100;,08.06.2020,25,.其它常用方法,getServletPath()getContentLength()getMethod()getHeader()getProtocol(),08.06.2020,26,Request对象获得服务器端参数request.getMethod():request.getProtocol():request.getServletPath():request.getServerName():request.getServerPort():request.getRemoteUser():request.getRemoteAddr():request.getRemoteHost():正在使用的浏览器:,08.06.2020,27,.获取HTML表单中的各种数据,表单用户登录用户名:密码:,获取方法:Stringtextname=request.getParameter(“User);Stringtextpwd=request.getParameter(“pwd);,(1)提取文本框和密码框中数据,08.06.2020,28,p诗人李清照是中国历史上哪个朝代的人?宋朝唐朝明朝清朝史记的作者是谁?曹雪芹罗贯中李白司马迁,您的了分,(2)提取单选按钮选择的信息,08.06.2020,29,select.jsp关键代码:选择计算和的方式计算1到n的和计算1到n的平方和计算1到n的立方和请选择n的值n=10n=20n=30n=40n=50n=100,(3)提取列表框中选择的信息,sum.jsp关键代码:您的求和结果是,08.06.2020,30,(4)提取复选按钮组中选择的信息,08.06.2020,31,(4)提取复选按钮组中选择的信息(续),checkbox选择你喜欢的运动:足球蓝球乒乓球游泳跑步网球,08.06.2020,32,);for(intk=0;k,08.06.2020,33,4.2.2response对象,当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器接到请求时会返回HTTP响应。,HTTP的报文结构(响应报文),版本,状态码,短语,首部字段名,首部行,:,值,首部字段名,值,:,实体主体(有些响应报文不用),状态行,空格,回车换行,:,CRLF,CRLF,CRLF,CRLF,08.06.2020,34,response对象代表的是对客户端的响应,其功能是将服务器处理后的结果传回到客户端,响应客户请求。response响应是实现javax.servlet.HttpServletResponse接口的类的一个实例。,08.06.2020,35,response对象的方法:,设定响应状态码的方法设定表头的方法用来URL重写的方法其它方法,08.06.2020,36,设定表头的方法,08.06.2020,37,设定响应状态码的方法,08.06.2020,38,用来URL重写的方法,08.06.2020,39,其它方法,08.06.2020,40,response重要方法,response对象中使用较多的方法是:setContentType()setHeader()sendRedirect()setStatus(),08.06.2020,41,.动态设置MIME类型,在page指令中的contentType属性用来指定response对象响应客户端请求的MIME(MultipurposeInternetMailExtensionprotocol,多用途网际邮件扩充协议)类型。,page指令只能为contentType指定一个值,如果想动态地改变这个属性的值来以各种不同的方式做出响应,就要使用response对象的setContentType()方法改变contentType的值。一旦这个属性值被改变,服务器就将按照新的MIME类型做出响应。,08.06.2020,42,contentType属性和MIME类型的对应关系,08.06.2020,43,学习response对象的setContentType方法的使用要将当前页面保存为.TXT文件吗?,程序运行后,单击“是”按钮弹出“保存”对话框,08.06.2020,44,.response对象的http头,response对象可以使用addHeader()和setHeader()方法动态添加和修改相应头的值,并将这些头发送给客户端。下面例response对象添加一个头refresh,使客户端在显示该页面时,每5秒钟刷新一次。,现在的时间是:,08.06.2020,45,.response重定向,下面例中,客户填写表单,并提交给tree4.jsp页面。如果表单填写不完整,tree4.jsp会重新定向到填写页面,否则显示欢迎字样,填写姓名,08.06.2020,46,.response重定向(续),08.06.2020,47,.response的状态行,当服务器响应客户端请求时,它发送的首行被称为状态行。状态行包括3位数字的状态码和对状态码的简单描述。1xx主要是试验性质的;2xx表示请求成功;3xx表示在请求在满足之前应进一步采取的行动;4xx表示服务器无法满足要求;5xx服务器出现错误。,08.06.2020,48,状态代码表,08.06.2020,49,状态代码表,08.06.2020,50,点击下面的超链接:第一个页面不欢迎你第二个页面欢迎你第三个页面不欢迎你,08.06.2020,51,4.2.3out对象,out对象是一个输出流,表示向客户端发送数据,通过out对象发送的内容将是浏览器需要显示的内容,是文本一级的。通过out对象直接向客户端写一个由程序动态生成HTML文件。out对象是javax.servlet.jsp.JspWriter类的一个实例。,08.06.2020,52,out对象重要方法,JSP允许通过page指令的buffer属性调整out对象缓存的大小,甚至允许关闭缓存。,08.06.2020,53,);out.println();out.println();out.println(+姓名+);out.println(+性别+);out.println(+年龄+);out.println();out.println();out.println(+张三丰+);out.println(+男+);out.println(+50+);out.println();out.println(+刘东东+);out.println(+男+);out.println(+35+);out.println();out.println();out.println();%,例:用out对象输出表格,运行结果如图所示,08.06.2020,54,关键代码:BufferSize:Available:Used:,例:显示目前缓冲区的大小。运行结果如图所示,08.06.2020,55,4.3与属性作用域有关的对象,3.3.1session对象3.3.2application对象3.3.3pageContext对象,08.06.2020,56,4.3.1session对象,从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开这个服务器结束(期间客户访问的是同一个WEB目录中的页面),被称为一个会话。一个客户访问服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面或不断向一个页面提交信息等。如在线商店购物时,当我们把不同页面的商品分别加入购物车时,服务器如何才能知道车里原先有些什么?当用户从选择商品的页面转到输入信用卡号和送达地址的页面,服务器如何才能记住用户买了些什么?HTTP是无状态(stateless)协议。,08.06.2020,57,解决方法:,Session/Cookie:利用Session/Cookie对象来存储有关会话的信息,后继的各个连接可以查看当前Session/Cookie,提取有关该会话的完整信息。重写URL:如果客户端不支持Cookie,服务器无法将sessionID写到客户端。服务器无法识别同一个客户端。解决该问题的有效方法是URL重写技术。即:把一些标识会话的数据附加到每个URL的后面,服务器能够把该会话标识和它所保存的会话数据关联起来。隐藏表单域:通过表单的隐藏域维持会话HttpSessionAPI:是一个基于Cookie或者URL重写机制的高级会话状态跟踪接口。如果浏览器支持Cookie,则使用Cookie;如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL重写方法。,08.06.2020,58,在服务器端,系统JSP引擎为该客户创建了一个session对象,在客户端,系统为该客户创建了Cookie对象。session对象是javax.servlet.http.HttpSession类的一个实例,session对象使同一用户在访问Web站点时多个页面间共享信息。服务器完全可以通过session对象知道这是同一个客户。同一个客户访问服务器中不同Web目录时,JSP引擎为该客户创建不同的session对象,08.06.2020,59,当JSP引擎为客户创建一个session对象后,这个session对象被分配了一个String类型的ID号,JSP引擎同时将此ID号发送到客户端,存放在Cookie中。同一客户会话的session对象和Cookie对象建立了一一对应关系。即,每一客户会话信息保存在session/Cookie对中。当用户再次访问连接该服务器的其他页面时,就不再分配给用户新的session对象直到关闭浏览器后,服务器端该用户的session对象才取消,并且和用户的对应关系也取消,session对象与Cookie对象,08.06.2020,60,session对象与Cookie对象(续),存储位置不同,Session对象保存在服务器内存中Cookie对象保存在客户端计算机硬盘中,生存期不同,Session对象客户关闭浏览器或会话失效时消失Cookie对象一直保存在客户端计算机硬盘中,或用setMaxAge()设置,08.06.2020,61,session对象与Cookie对象(续),安全性,Session对象安全性高Cookie对象安全性差,实现方式,Session对象记录会话的持续过程,直至会话终止Cookie对象在后继的请求中由客户端发送给服务器,以确定用户的身份,08.06.2020,62,session对象的主要方法,08.06.2020,63,.session对象的ID标识,您在访问id.jsp页面您的session对象的ID是:method=postname=form,08.06.2020,64,你在访问liu页面您的session对象的ID是:单击超连接,连接到wang页面欢迎到wang页面来!,08.06.2020,65,你在访问file页面您的session对象的ID是:单击超连接,返回到ID页面欢迎到ID页面来!,08.06.2020,66,.在会话对象中保存数据,保存和获得session对象中的数据是JSP页面常做的工作,需要使用getAttribute()和setAttribute()方法。书上例子4-7在session对象中保存数据num,这样服务器可以告诉客户他访问该页面一共多少次,只要客户不关闭浏览器。刷新13次后运行结果如图所示。,这是第次访问该页面,08.06.2020,67,例:main.jsp输入您的姓名:欢迎访问站点,请到购书页面选择书籍进入购书页面,08.06.2020,68,08.06.2020,69,08.06.2020,70,4.3.2application对象,application对象负责提供应用程序在服务器中运行时的一些全局信息。服务器启动时就创建一个application对象,不同客户在该服务器的各个页面之间链接时,共享使用同一个application对象,直到服务器关闭该对象才消失。,08.06.2020,71,例.用application对象制作留言板,客户在submit.jsp中输入姓名、留言标题和留言内容。这些信息提交给messagePane.jsp。该页面将客户信息存入向量,并将向量存放在application对象中。当查看留言板时,showMessage.jsp负责从application对象中取出向量,并遍历向量显示其中的所有留言。,08.06.2020,72,输入您的名字:输入您的留言标题:输入您的留言:,例子:submit.jsp,08.06.2020,73,例子:messagePane.jsp,servlet中,application是当前page

温馨提示

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

评论

0/150

提交评论