JAVAEE架构与程序设计--第二部分.ppt_第1页
JAVAEE架构与程序设计--第二部分.ppt_第2页
JAVAEE架构与程序设计--第二部分.ppt_第3页
JAVAEE架构与程序设计--第二部分.ppt_第4页
JAVAEE架构与程序设计--第二部分.ppt_第5页
已阅读5页,还剩60页未读, 继续免费阅读

下载本文档

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

文档简介

javaee核心编程,第二部分:详解servlet组件编程,servlet的生命周期 请求与响应 cookie、会话 上下文 过滤器、监听器,章节目录,章节目录,servlet api继承关系 servlet生命周期,servlet是多线程单实例的,servlet只有在第一次被调用时初始化一次,该实例被存储在容器中 多个客户端并发访问时,tomcat会启动多线程,并发访问servlet实例 如果某个servlet需要在应用加载时被实例化,可以通过在web.xml中配置来完成,httpservlet类的声明形式,public abstract httpservlet extends genericservlet implements servlet,servleconfig,servlet的继承关系,两个顶级接口 servlet servletconfig 接口的实现类 genericservlet 基于http协议的实现类 httpservlet 自定义的servlet类往往都直接继承httpservlet,两个接口中主要的方法,servlet接口 init(servletconfig):被容器调用,调用一次 service(servletrequest req,servletresponse res):被容器调用 destroy():被容器调用,servlet实例被销毁时调用,两个接口中主要的方法,servletconfig接口 封装servlet实例的初始化配置信息 public string getinitparameter(string name): 获取servlet的初始化参数值,genericservlet类的主要方法,public void init():被容器调用,调用一次,往往被自定义的servlet类覆盖。,httpservlet类的主要方法,doget(httpservletrequest req,httpservletresponse resp):处理get方式的请求 dopost(. req, resp):处理post方式的请求。 init():用来对servlet实例化后进行一些自定义处理。 destroy():用来实现servlet实例被容器销毁前的一些自定义处理。,servlet的生命周期,初始化 构造方法 init(servletconfig)方法 init()方法 提供服务 service方法 doxxx方法 销毁 destroy方法,初始化参数配置和获取,web.xml文件中配置servlet的初始化参数 testservlet com.etc.testservlet level参数名 2.1参数值 1 ,servlet中获取初始化参数,public class testservlet extends httpservlet private string lev; public testservlet() system.out.println(“调用构造方法“); override public void init() lev=this.getinitparameter(“level”);/获取初始化参数 override protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception ,章节目录,请求与响应的接口 请求转发器 请求属性,httpservletrequest接口,httpservletrequest接口定义了大量获得请求信息的方法 获得请求头的方法 获得请求参数的方法 获得客户端以及服务器端信息的方法,获得请求头的方法,getheader():根据请求头名字获取请求头值 getintheader():返回整型请求头的值 getdateheader():返回日期类型请求头值 getheadernames():返回所有头的名字 getheaders():返回所有头的值,获得请求参数的方法,getparameter():根据请求参数名字返回请求参数值 geparameternames():返回所有请求参数的名字 getparametervalues():将同一个请求参数名字的所有参数值作为数组返回,获得客户端以及服务器端信息的方法,getremoteaddr():获得远程地址 getremoteport():获得远程端口 getlocalname():获得本地主机名 getlocalport():获得本地端口,httpservletresponse接口,httpservletresponse接口定义大量获得响应信息的方法 处理响应头信息的方法 获得响应输出流及设置内容类型的方法 响应重定向,处理响应头信息的方法,addheader():在响应中添加一个头 addintheader():在响应中添加一个整型头信息 adddateheader():在响应中添加一个date类型信息 setheader():在响应中添加一个头信息 setintheader():在响应中添加一个整型的头信息,获得响应输出流及设置内容类型的方法,getwriter():获得输出流 printwriter out = response.getwriter(); setcontenttype():设置响应的内容类型 response.setcontenttype(“text/html;charset=utf-8“);,响应重定向,httpservletresponse中的sendredirect()方法实现响应重定向 response.sendredirect(url); 响应重定向到另一个资源后,以前的请求信息并不会继续传递到重定向的组件中,是两个请求对象。 sendredirect()方法后的代码仍会被执行 地址栏信息会变成重定向的组件的url,requestdispatcher请求转发器,如果希望请求中的信息能够继续传递到下一个资源,可以通过使用请求转发器的请求转发方法实现 请求转发器的接口是requestdispatcher 当用requestdispatcher请求转发后,地址栏内的信息仍是初始的url信息,客户端看不到转发后的url,requestdispatcher请求转发器,请求转发方法 requestdispatcher rd=request.getrequestdispatcher(url); rd.forward(request,response);,forward(servletrequest request, servletresponse response),请求属性,httpservletrequest接口中提供了一系列与请求属性有关的方法 setattribute(string name,obdject o):将对象o使用名字name存储到请求对象中 getattribute(string name):通过属性名字name获取属性值 removeattribute(string name):通过属性名字删除属性,章节目录,cookie的含义与作用 jsessionid cookie,cookie的概念和使用,cookie是保存在客户端的文本 servlet api提供了cookie类,可以将文本信息封装成cookie对象 httpservletresponse接口提供了addcookie方法,将cookie添加到响应中 httpservletrequest接口中提供了getcookies方法,从请求中获得所有cookie对象,cookie开发实例,使用实例学习cookie 使用cookie实现一个小时内,同一个客户端不需要重复登录的功能,名字为jsessionid的cookie,通过实验查看名字为jsessionid的cookie jsessionid的值为一个随机整数 为后面章节学习会话做好准备,章节目录,httpsession接口 会话实现机制 会话失效 url重写,httpsession接口,客户端对服务器端一次连续的访问过程,称为会话 httpsession接口用来表示会话对象 httpsession中和属性有关的方法 setattribute getattribute removeattribute 通过请求对象的方法获得会话对象 getsession,jsp中的会话对象,jsp中的内置对象session,是httpsession对象 默认情况下,jsp中总是创建session对象,可以直接使用 ,会话的实现机制,会话的实现依赖于容器 大多数容器采用基于cookie的实现机制 基于cookie的实现机制,使用名字为jsessionid的cookie作为session的唯一标记,会话使用实例,通过实例展示会话编程 完善教材案例,实现登录后查看个人信息的功能 使用httpsession来保存会话范围内的属性 httpsession session=request.getsession(); session.setattribute(“custname“, custname); 获取会话属性值 httpsession session=request.getsession(); string custname=(string)session.getattribute(“custname“);,url重写,通过修改客户端浏览器设置,可以禁止发送cookie 如果cookie被禁止,那么基于cookie实现的session将失效 为了解决cookie禁止session失效的问题,可以使用url重写技术,会话超时,为了有效使用内存,以及保证安全性,会话在一定时间内不被使用(称为会话超时),将被销毁 有三种策略可以使会话超时 web.xml中配置会话超时时间 使用setmaxinactiveinterval方法设置超时时间 使用invalidate方法直接将某会话设置为失效,章节目录,servletcontext接口 上下文属性 上下文参数,servletcontext接口,每个应用都有一个唯一的上下文对象,即servletcontext对象 servletcontext对象可以和请求、会话对象一样处理属性 setattribute getattribute removeattribute,servletcontext使用实例,使用实例展示上下文用法 完善教材案例,加入计数器功能 使用servletcontext属性保存计数器,servletcontext参数,在web.xml中可以配置上下文参数,在整个上下文中有效,各种属性比较,请求、会话、上下文中均可以保存、获得、删除属性 请求、会话、上下文都有如下三个方法 setattribute getattribute removeattribute 主要区别在于每种属性的生命周期不同 建议尽量多使用请求属性,必须使用会话、上下文属性时才考虑使用,章节目录,事件类 监听器,事件类与监听器接口,6个事件类,类名均以event结尾 某些操作,如启动/关闭容器、创建/销毁会话,都将触发一种事件发生,当发生了某种事件,容器将创建对应的事件类对象,事件类与监听器接口,servletcontextevent:上下文事件 servletcontextattributeevent:上下文属性事件 servletrequestevent:请求事件 servletrequestattributeevent:请求属性事件 httpsessionevent:会话事件 httpsessionbindingevent:会话绑定事件,事件类与监听器接口,8个监听器接口,接口名均以listener结尾 监听器定义了监听方法,可以处理对应的事件 servletconexlistener:上下文监听器,监听servletcontextevent事件 servletcontextattributelistener:上下文属性监听器 servletrequeslistener:请求监听器,事件类与监听器接口,servletrequesattributelistener:请求属性监听器 httpsessionlistener:会话监听器 httpsessionactivationlistener:会话活化监听器 httpsessionattributelistener:会话属性监听器 httpsessionbindinglistener:会话绑定监听器,监听器开发实例,监听器开发实例 使用servletcontextlistener完善计数器功能 掌握监听器开发步骤、注册监听器的方法,监听器开发步骤,根据实际情况选择要使用的监听器 创建类实现监听器接口 覆盖监听器的方法,实现应用中需要的逻辑 在web.xml中注册监听器,章节目录,过滤器的作用 过滤器的实现步骤,过滤器概念,过滤器运行在服务器端,遵守一定的编码规范 过滤器必须实现servlet api中的filter接口 过滤器用来执行应用中通用处理的程序,如记录日志、设置编码格式等,过滤器有关api,filter接口 所有过滤器都必须实现filter接口 其中dofilter方法是过滤器提供服务的方法 filterchain接口 用来将请求传递到下一个资源,可能是下一个过滤器,也可能是最终要访问的资源,

温馨提示

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

评论

0/150

提交评论