版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章JSP内置对象1本课教学内容认识JSP内置对象out对象request对象response对象Cookie操作认识JSP内置对象内置对象:指在JSP页面中内置的不需要定义就可以在网页中直接使用的对象内置对象预定义的原因:因为这些内置对象有些能够存储参数,有些能够提供输出,还有些能提供其他的功能,JSP程序员一般情况下使用这些内置对象的频率比较高认识JSP内置对象内置对象特点内置对象是自动载入的,因此它不需要直接实例化内置对象是通过Web容器来实现和管理的在所有的JSP页面中,直接调用内置对象都是合法的认识JSP内置对象JSP规范中定义了九种内置对象,本章主要介绍前五种out对象:负责管理对客户端的输出request对象:负责得到客户端的请求信息response对象:负责向客户端发出响应session对象:负责保存同一客户端一次会话过程中的一些信息application对象:表示整个应用的环境的信息认识JSP内置对象exception对象:表示页面上发生的异常,可以通过它获得页面异常信息page对象:表示的是当前JSP页面本身,就像Java类定义中的this一样pageContext对象:表示的是此JSP的上下文config对象:表示此JSP的ServletConfigout对象out对象,对应的类型是javax.servlet.jsp.JspWriterout对象的作用用来向客户端输出各种数据类型的内容对应用服务器上的输出缓冲区进行管理out对象out输出的主要有2个方法:voidprint()voidprintln()out对象out对象一些常用的与管理缓冲区有关的函数:voidclose():关闭输出流,从而可以强制终止当前页面的剩余部分向浏览器输出voidclearBuffer():清除缓冲区里的数据,并且把数据写到客户端去voidclear():清除缓冲区里的数据,但不把数据写到客户端去out对象out对象一些常用的与管理缓冲区有关的函数:intgetRemaining():获取缓冲区中没有被占用的空间的大小voidflush():输出缓冲区的数据。out.flush()函数也会清除缓冲区中的数据,但是此函数先将之前缓冲区的数据输出至客户端,然后再清除缓冲区的数据intgetBufferSize():获得缓冲区的大小request对象request对应类型是javax.servlet.http.HttpServletRequestrequest包含的方法StringgetMethod():得到提交方式StringgetRequestURI():得到请求的URL地址StringgetProtocol():得到协议名称request对象request包含的方法StringgetServletPath():获得客户端请求服务器文件的路径StringgetQueryString():得到URL的查询部分,对post请求来说,该方法得不到任何信息request对象request包含的方法StringgetServerName():得到服务器的名称StringgetServerPort():得到服务器口号StringgetRemoteAddr():得到客户端的IP地址
*具体代码示例见课本request对象request对象获取客户端得参数常用的是通过2个方法:StringgetParameter(Stringname):获得客户端传送给服务器的name参数的值。当传递给此函数的参数名没有实际参数与之对应时,则返回nullString[]getParameterValues(Stringname):以字符串数组的形式返回指定参数所有值response对象response与reuqest是一对相对应的内置对象,response可以理解为客户端的响应,request可以理解为客户端的请求,二者所表示范围是相对应的2个部分,具有很好的对称性。response对应的类(接口)是:javax.servlet.http.HttpServletResponse。可以通过查找文档中javax.servlet.http.HttpServletResponse来了解response的API利用response对象进行重定向重定向:就是跳转到另一个页面重定向方法为:
response.sendRedirect(目标页面路径); <jsp:forwardpage=""></jsp:forward>
两种重定向方法的不同从浏览器的地址显示上来看forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的地址不变两种重定向方法的不同从浏览器的地址显示上来看redirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍。所以地址显示栏会变两种重定向方法的不同从数据共享来看forward转发的页,以及转发到的目标页面能够共享request里面的数据redirect转发的页以及转发到的目标页面不能共享request里面的数据两种重定向方法的不同从功能来看redirect能够重定向到当前应用程序的其他源,而且还能够重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源两种重定向方法的不同从功能来看forward方法只能在同一个Web应用程序内的资源之间转发请求,可以理解为服务器内部的一种操作两种重定向方法的不同从效率来看forward效率较高,因为跳转仅发生在服务器端redirect相对较低,因为类似于再进行了一次请求使用频率不是很高的一种重定向sendError():向客户端发送HTTP状态码的出错信息使用频率不是很高的一种重定向常见的错误代码有:400:BadRequest,请求出现语法错误401:Unauthorized,客户试图未经授权访问受密码保护的页面403:Forbidden,资源不可用404:NotFound,无法找到指定位置的资源500:InternalServerError,服务器遇到了无法预料的情况,不能完成客户的请求利用response设置HTTP头HTTP头一般用来设置网页的基本属性response的setHeader()方法来进行设置 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0);以上都是表示在客户端缓存中不保存页面的拷贝Cookie操作Cookie是一个小的文本数据,由服务器端生成,发送给客户端浏览器,客户端浏览器如果设置为启用Cookie,则会将这个小文本数据保存到某个目录下的文本文件内。下次登录同一网站,客户端浏览器则会自动将Cookie读入之后,传给服务器端。一般情下,Cookie中的值是以key-value的形式进行表达的Cookie操作Cookie操作主要用到以下几个方法:response.addCookie(Cookiec):通过该方法,将Cookie写入客户端Cookie.setMaxAge(intsecond):通过该方法,设置Cookie的存活时间。参数表示存活Cookie操作从客户端获取Cookie内容,主要通过以下方法:Cookie[]request.getCookies():读取客户端传过来的Cookie,以数组形式返回Cookie的盗取盗取的方法:利用跨站脚本技术,将信息发给目标服务器;为了隐藏URL,甚至可以结合Ajax(异步Javascript和XML技术)在后台窃取CookieCookie的盗取通过某些软件,窃取硬盘下的Cookie。一般说来,当用户访问完某站点后,Cookie文件会存在机器的某个文件夹下,因此可以通过某些盗取和分析软件来盗取CookieCookieCookie在Web编程中应用很广的原因:Cookie的值能够持久化,即使客户端机器关闭,下次打开还是可以得到里面的值Cookie可以帮助服务器端保存多个状态信息,但是不用服务器端专门分配存储资源Cookie可以持久保持一些和客户相关的信息解决Cookie安全的方法方法有以下几种替代Cookie。将数据保存在服务器端,可选的是session方案及时删除Cookie解决Cookie安全的方法要删除一个已经存在的Cookie,有以下几种方法:给一个Cookie赋以空置设置Cookie的失效时间为当前时间,让该Cookie在当前页面的浏览完之后就被删除了解决Cookie安全的方法通过浏览器删除Cookie。如在IE中,可以选择"工具"——"Internet选项"——"常规",在里面点击"删除Cookies",就可以删除文件夹中的Cookie禁用Cookie。很多浏览器中都设置了禁用Cookie的方法,如IE中,可以在"工具"——"Internet选项"——"隐私"中,将隐私级别设置为禁用Cookie本章结束本章总结JSP中的内置对象Cookie的使用方法上机习题第8章JSP内置对象2本课教学内容利用session开发购物车session其他APIapplication对象其他对象利用session开发购物车购物车需求例子 想象用户去购物超市买东西时,都会推一个购物车,购物车中包含了用户所需要购买的商品,用户可以将商品添加到购物车,也可将商品从购物车中取出或删除。用户可以推着购物车从这个专柜走到那个专柜,用户也不用担心别人的购物车里面的东西算到自己账上,这在生活中已经成为常识利用session开发购物车购物车的特点同一个用户使用的是同一个购物车不同的用户使用的是不同的购物车。否则,别人买的东西就会算到自己的账上在不同货架(页面)之间进行访问时,购物车中的内容可以保持以上3点中,最关键的是“跨页面保持”。利用session开发购物车实际上,JSP中的内置对象session,就是跨页面保持的,当访问网站时,服务器端已经分配了一个session对象给用户使用,对于同一个用户,不管在哪个页面,他使用的都是同一个session。利用session开发购物车session,是JSP九大内置对象之一,它对应的类(接口)是:javax.servlet.http.HttpSession。可以通过查找文档中javax.servlet.http.HttpSession来了解session的API。如何用session开发购物车一些session常用的API将内容放入购物车voidsession.setAttribute(Stringname,Objectobj);在该函数里面,参数1:name就是来为每一个物品起一个属性(attribute)的名字(标记);参数2:obj,就是内容本身如何用session开发购物车*针对放入的提醒:如果两次调用setAttribute(Stringname,Objectobj);并且name相同,那么后面放进去的内容将会覆盖以前放进去的内容setAttribute(Stringname,Objectobj);的第二个参数是Object类型,即可以放入session的不仅仅是一些简单字符串,还可以是Object。集合、数据结构对象都可以放入session。如何用session开发购物车一些session常用的API读取购物车中的内容Objectsession.getAttribute(Stringname);在该函数里面,name就是被取出的内容所对应的标记;返回值,就是内容本身。
*具体代码示例见课本如何用session开发购物车实际项目中,可以使session中的内容多种多样。为了将session里面的内容很好地分门别类,可以将这几种物品先放在一个集合中,然后将集合放入session中,操作更加方便。
session其他API-session的其他操作移除session中的内容session有一个函数:voidsession.removeAttribute(Stringname);利用该函数,可以将属性名为name的内容从session中移除。session其他API-session的其他操作移除session中的全部内容voidsession.invalidate();应该注意的是,如果session中的内容被移除之后,如果再想得到,会返回null值。session其他API-session的其他操作预防session内容丢失在session的使用过程中,要注意一些技巧,session中存放的内容要注意其一致性,否则会造成数据丢失。sessionIdsessionId的原理图sessionId问题:客户在访问多个页面时,多个页面用到session,服务器如何知道该客户的多个页面使用的是同一个session?sessionId答案对于每一个session,服务器端都有一个sessionId来标识它Stringsession.getId();sessionId实际上,在第一次访问时,服务器端就给session分配了一个sessionId,并且让客户端记住了这个sessionId,客户端访问下一个页面时,又将sessionId传送给服务器端,服务器端根据这个sessionId来找到前一个页面用的session对象。利用session保存登录信息例子假如用户登录学生管理系统,登录后用户可能要做很多操作,访问很多页面,在访问这些页面的过程中,各个页面如何知道用户的账号呢?答案很简单,在登录成功后,用户的账号可以保存在session中。后面的各个页面都可以访问session内的内容application对象application原理图application对象问题:购物车能用application实现吗? 很明显,购物车是不能用application实现的。因为不同客户在服务器端访问的是同一个对象,如果使用application实现购物车,客户1向购物车中放了一种物品,客户2也可以看到,那样是不允许的application对象原理对于一个Web容器而言,所有的用户都共同使用一个application对象,服务器启动后,就会自动创建application对象,这个对象会一直保存,直到服务器关闭为止对应的类(接口)是:javax.servlet.ServletContext
application对象application对象的API主要有以下几个:将内容放入applicationvoidapplication.setAttribute(Stringname,Objectobj);
读取application中的内容Objectapplication.getAttribute(Stringname);将内容从application中移除voidapplication.removeAttribute(Stringname);application对象下面用一个简单的案例来实现:显示某个页面被访问的次数。很显然,这个次数应该被所有客户所知,因此,可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中生利用生物技术繁殖食用菌的研究课题报告教学研究课题报告
- 企业财务报表数据校验工具包
- 航空乘务员民航行业绩效评估表
- 学习数学的收获写物作文11篇
- 《艺术教育中青少年创造力培养与审美教育融合的机制与效果评估》教学研究课题报告
- 2026年中国数据记录仪市场运行动态监测及发展前景投资预测报告
- 干部业务讲堂课件
- 2026年中国焗油膏市场竞争格局及发展前景预测报告
- 2025年快递物流行业效率报告
- 新时代背景下小学科学教师知识更新与拓展的智能化路径研究教学研究课题报告
- 唯物主义和经验批判主义讲义
- 锂电池综合回收项目环评报告书
- GB/T 26121-2010可曲挠橡胶接头
- GB/T 15256-2014硫化橡胶或热塑性橡胶低温脆性的测定(多试样法)
- 湖南省对口招生考试医卫专业试题(2010-2014年)
- 陈染 个人与女性的书写课件
- 2022年广西自然资源职业技术学院辅导员招聘考试笔试试题及答案解析
- 行政伦理学(全套课件)
- 2022年自然保护地大数据数字化管理平台建设方案
- DB13T 5388-2021 大中型水库管理规程
- 妇产科临床路径工作总结
评论
0/150
提交评论