




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章Servlet,褚龙现chulongxian,回顾-Cookie,Cookie的常用用途:Cookie是站点跟踪特定访问者访问的次数,最后访问的时间以及访问者进入站点的路径;Cookie能够帮助站点统计用户个人资料以实现各种各样的个性化服务。cookie实现自动登录功能,使得用户不需要输入用户名和密码就可以进入曾经浏览的站点。,回顾-Servlet操作Cookie,向客户端写入Cookie的步骤创建CookieCookiec=newCookie(“name”,“value”);设置Cookie的属性c.setMaxAge(60*60*24);c.setDomain(“”)c.setPath(“/”)调用response的addCookie方法将其写入到客户端response.addCookie(c),回顾-Servlet操作Cookie,读取Cookie的步骤从客户端读取所有能够被本服务器读取的CookieCookiecookies=request.getCookies();从中找出需要的Cookiefor(inti=0;icookies.length;i+)if(cookiesi.getName().equals(“wanted”),回顾-回话机制,是,否,类似散列表的会话管理,回顾-回话追踪机制,常用的会话追踪机制有:cookiesURL重写表单隐藏SSLSessions,回顾-回话管理机制,创建会话HttpServletRequest的getSession()方法若有会话则返回当前会话,没有则创建新会话调用getSession(true)执行同样的功能调用getSession(false)访问一个现有的会话、而不是新创建一个会话,如果没有合法的会话则返回nullHttpSessionsession=request.getSession(true),回顾=回话管理机制,存储和访问会话属性标准会话属性包括会话标识符、数据、创建时间、上次访问时间等,都以“名-值”对形式保存HttpSession提供了一种把对象存储到内存、在同一用户的后继请求中提取这些对象的标准办法在会话中保存数据的方法setAttribute(Strings,Objecto)从会话提取原来所保存对象的方法getAttribute(Strings),回顾-回话管理机制,关闭会话显式关闭HttpSession.invalidate()隐式关闭-会话超时(等待超时自动操作)默认的超时时间间隔是1800秒无效之前,可以使用setInactiveInterval(intseconds)方法在客户请求之间控制这个时间间隔。设置负值可以确保会话永远不会超时,过滤器的功能和特点,过滤器的实现,1,2,教学内容,教学目标,教学具体内容,过滤器概念过滤器的功能过滤器接口过滤器生命周期过滤器应用示例,5.8过滤器,Servlet过滤器是在JavaServlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改Servlet过滤器本身并不产生请求和响应对象,它只能提供过滤作用。Servlet过滤能够在Servlet被调用之前检查Request对象,修改RequestHeader和Request内容;在Servlet被调用之后检查Response对象,修改ResponseHeader和Response内容Servlet过滤负责过滤的Web组件可以是Servlet、JSP或者HTML文件,即动态或静态的web资源,5.8过滤器,过滤器处在客户端与所请求的资源(Servlet或JSP)之间,过滤器不能独立执行,总要依附在所请求的资源上才能执行过滤器可以对经过过滤器的请求和响应数据进行处理,实现Web应用中的一些非功能性需求,5.8.1过滤器的特点,Servlet过滤器可以检查和修改ServletRequest和ServletResponse对象Servlet过滤器可以被指定和特定的URL关联,只有当客户请求访问该URL时,才会触发过滤器Servlet过滤器可以被串联在一起,形成管道效应,协同修改请求和响应对象(过滤器链),5.8.2过滤器的作用,查询请求并作出相应的行动。阻塞请求-响应对,使其不能进一步传递。修改请求的头部和数据。用户可以提供自定义的请求。修改响应的头部和数据。用户可以通过提供定制的响应版本实现。与外部资源进行交互。,5.8.3过滤器的适用场景,认证过滤登录和审核过滤图像转换过滤数据压缩过滤加密过滤资源访问触发事件过滤XSLT过滤,5.8.4过滤器的实现,建立一个过滤器涉及下列五个步骤:1)建立一个实现Filter接口的类。2)在doFilter方法中实现过滤行为。3)调用FilterChain对象的doFilter方法。4)对相应的servlet和JSP页面注册过滤器。5)禁用激活器servlet。,1)建立一个实现Filter接口的类,Servlet过滤器类必须实现javax.servlet.Filter这个接口含有3个过滤器类必须实现的方法:init()doFilter()destroy(),1)建立一个实现Filter接口的类,publicvoidinit(FilterConfigconfig)thowsServletExceptioninit方法只在此过滤器第一次初始化时执行,不是每次调用过滤器都执行它简单过滤器可提供此方法的空体,两种情况使用initFilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。利用init将FilterConfig对象存放在一个字段中,以便doFilter方法能够访问servlet环境或过滤器名。FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。,1)建立一个实现Filter接口的类,publicvoiddoFilter(ServletRequsetrequest,ServletResponseresponse,FilterChainchain)thowsServletException,IOException第一个参数为与传入请求有关的ServletRequest。对于简单的过滤器,大多数过滤逻辑是基于这个对象的。如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此对象构造成HttpServletRequest。,1)建立一个实现Filter接口的类,第二个参数为ServletResponse。如果完全阻塞对相关servlet或JSP的访问。可调用response.getWriter并直接发送一个响应到客户机。如果希望修改相关servlet或JSP的输出,可把响应包含在一个收集所有发送到它的输出对象中。然后在调用serlvet或JSP页面后,过滤器可检查输出,如果合适就修改它,之后发送到客户机最后一个参数FilterChain对象。对此对象调用以激活与servlet或JSP相关的下一个过滤器。如果没有另一个相关的过滤器,则对doFilter的调用激活servlet或JSP本身,2)在doFilter方法中实现过滤行为,doFilter方法为大多数过滤器的关键部分。每当调用一个过滤器时,都要执行doFilter。对于大多数过滤器来说,doFilter执行的步骤是基于传入信息的。因此,可能要利用作为doFilter的第一个参数提供的ServletRequest。这个对象常常构造为HttpServletRequest类型,以提供对该类的更特殊方法的访问。,3)调用FilterChain对象的doFilter方法,Filter接口的doFilter方法在调用FilterChain对象的doFilter方法时,激活下一个相关的过滤器。这个过程一般持续到链中最后一个过滤器为止。在最后一个过滤器调用其FilterChain对象的doFilter方法时,激活servlet或页面自身。链中的任意过滤器都可以通过不调用其FilterChain的doFilter方法中断这个过程。在这样的情况下,不再调用JSP页面的serlvet,并且中断此调用过程的过滤器负责将输出提供给客户机。,4)对相应的servlet和JSP页面注册过滤器,部署描述符文件的2.3版本引入了两个用于过滤器的元素,分别是:filter和filter-mapping。Filter元素向系统注册一个过滤对象filter-mapping元素指定该过滤对象所应用的URL,4)对相应的servlet和JSP页面注册过滤器,filter元素位于web.xml的前部,所有filter-mapping、servlet元素之前。filter元素具有六个可能的子元素:,可选,它声明IDE能够使用的一个图象文件必需元素,给过滤器分配一个选定的名字可选,给出IDE使用的短名称必需元素,指定过滤器实现类的完全限定名可选,利用FilterConfig的getInitParameter方法读取的初始化参数。可包含多个init-param元素,4)对相应的servlet和JSP页面注册过滤器,过滤是在serlvet规范2.3版中初次引入的。web.xml文件必须使用DTD的2.3版本MyFiltermyPackage.FilterClass.,4)对相应的servlet和JSP页面注册过滤器,filter-mapping元素位于web.xml文件中filter元素之后serlvet元素之前。它包含三个可能的子元素,必需元素,必须与用filter元素声明时给予过滤器的名称相匹配必需元素,此元素声明一个以斜杠(/)开始的模式,它指定过滤器应用的URL。必须提供url-pattern或servlet-name。但不能对单个filter-mapping元素提供多个url-pattern元素。如果过滤器适用于多个模式,可重复整个filter-mapping元素此名称必须与利用servlet元素给予servlet名称相匹配。不能给单个filter-mapping元素提供多个servlet-name元素。如果过滤器适合于多个servlet名,可重复这个filter-mapping元素,4)对相应的servlet和JSP页面注册过滤器,MyFiltermyPackage.FilterClassMyFilter/someDir/MyServlet,5)禁用激活器servlet,在对资源应用过滤器时,可通过指定要应用过滤器的URL模式或servlet名来完成。如果提供servlet名,则此名称必须与web.xml的servlet元素中给出的名称相匹配。如果使用应用到一个serlvet的URL模式,则此模式必须与利用web.xml的元素servlet-mapping指定的模式相匹配。防止用户利用缺省servletURL绕过过滤器设置,5)禁用激活器servlet,指定servlet名过滤利用filter和filter-mapping指示名为SomeFilter的过滤器应用到名为SomeServlet的servletSomeFiltersPackage.SFilterClassSomeFilterSomeServlet,5)禁用激活器servlet,指定servlet的URL模式过滤用servlet和servlet-mapping运行URLhttp:/host/webAppPrefix/Blah调用SomeSerlvetSomeFiltersPackage.SFilterClassSomeFilter/Blah,5.8.5过滤器生命周期-对请求的过滤,AServlet容器创建一个过滤器实例B过滤器实例调用init方法,读取过滤器初始化参数C过滤器实例调用doFilter方法,根据初始化参数的值判断该请求是否合法D如果该请求不合法则阻塞该请求E如果该请求合法则调用chain.doFilter方法将该请求向后续传递,5.8.5过滤器生命周期-对响应的过滤,A过滤器截获客户端的请求B重新封装ServletResponse,在封装后的ServletResponse中提供用户自定义的输出流C将请求向后续传递DWeb组件产生响应E从封装后的ServletResponse中获取用户自定义的输出流F将响应内容通过用户自定义的输出流写入到缓冲流G在缓冲流中修改响应的内容后清空缓冲流,输出响应内容,5.8.6过滤器使用注意事项,A由于Filter、FilterConfig、FilterChain都是位于javax.servlet包下,并非HTTP包所特有的,所以其中所用到的请求、响应对象ServletRequest、ServletResponse在使用前都必须先转换成HttpServletRequest、HttpServletResponse再进行下一步操作。B在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet元素,5.8.7过滤器示例-解决中文乱码,Servlet对中文支持不好(数据库存储),提交,5.8.7过滤器示例-解决中文乱码,Servlet中转码方法:Stringname=request.getParameter(param_name);name=newString(name.getBytes(ISO8859_1);,缺点:1.从request中取出的每个中文变量都要转换。2.不能动态的改变编码。,publicclassMyFilterimplementsFilterprivateStringtarEncoding=gb2312;protectedFilterConfigfilterConfig;publicvoidinit(FilterConfigconfig)throwsServletExceptionthis.filterConfig=config;this.tarEncoding=config.getInitParameter(encoding);publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)throwsIOException,ServletException/过滤处理publicvoiddestroy()this.filterConfig=null;,过滤器方法,过滤处理代码:publicvoidd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 4095-2025商用汽车辐板式车轮在轮毂上的安装尺寸
- 2025-2026学年度人教版8年级数学上册《轴对称》专项测试试卷(附答案详解)
- 2024粮油食品检验人员试题预测试卷【网校专用】附答案详解
- 2024-2025学年注册公用设备工程师考试黑钻押题及完整答案详解【各地真题】
- 2025一级建造师考试黑钻押题【轻巧夺冠】附答案详解
- 2024年收银审核员考前冲刺练习试题及答案详解(历年真题)
- 借贷宝电子合同(标准版)
- 工程结算欠账合同(标准版)
- 期货从业资格之期货投资分析高分题库及答案详解【新】
- 2025年废旧电子产品回收处理与环保产业技术创新与应用研究报告
- 2025年电子乐器行业研究报告及未来行业发展趋势预测
- 2025至2030年中国招投标行业发展潜力分析及投资战略咨询报告
- 2025至2030中国矿山机械行业发展趋势分析与未来投资战略咨询研究报告
- 2025年乡镇文旅部门工作人员招聘考试必-备知识点与模拟题集
- 2025年法学硕士专业知识考试试卷及答案解析
- GB 26488-2025镁合金压铸安全生产规范
- 抖音达人签约合同协议书
- 焦虑症的课件
- 2025年招聘面试技巧指南面试官角度下的面试题预测与应对策略
- 答案时代:AI顾问式电商崛起
- 新型集体经济课件
评论
0/150
提交评论