JavaEE架构与程序设计--第二部分

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JavaEE核心编程第二部分:详解Servlet组件编程Servlet的生命周期请求与响应Cookie、会话上下文过滤器、监听器章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器ServletAPI继承关系Servlet生命周期Servlet是多线程单实例的Servlet只有在第一次被调用时初始化一次,该实例被存储在容器中多个客户端并发访问时,Tomcat会启动多线程,并发访问Servlet实例如果某个Servlet需要在应用加载时被实例化,可以通过在web.xml中配置load-on-startup来完成HttpServlet类的声明形式publicabstractHttpServletextendsGenericServletimplementsServlet,ServleConfigServlet的继承关系两个顶级接口ServletServletConfig接口的实现类GenericServlet基于HTTP协议的实现类HttpServlet自定义的Servlet类往往都直接继承HttpServlet两个接口中主要的方法•Servlet接口–init(ServletConfig):被容器调用,调用一次–service(ServletRequestreq,ServletResponseres):被容器调用–destroy():被容器调用,Servlet实例被销毁时调用两个接口中主要的方法•ServletConfig接口–封装Servlet实例的初始化配置信息–publicStringgetInitParameter(Stringname):–获取Servlet的初始化参数值GenericServlet类的主要方法•publicvoidinit():被容器调用,调用一次,往往被自定义的Servlet类覆盖。HttpServlet类的主要方法•doGet(HttpServletRequestreq,HttpServletResponseresp):处理GET方式的请求•doPost(….req,…resp):处理POST方式的请求。•init():用来对Servlet实例化后进行一些自定义处理。•destroy():用来实现Servlet实例被容器销毁前的一些自定义处理。Servlet的生命周期初始化构造方法init(ServletConfig)方法init()方法提供服务service方法doXXX方法销毁destroy方法初始化参数配置和获取•web.xml文件中配置Servlet的初始化参数•servlet•servlet-nameTestServlet/servlet-name•servlet-classcom.etc.TestServlet/servlet-class•init-param•param-namelevel/param-name参数名•param-value2.1/param-value参数值•/init-param•load-on-startup1/load-on-startup•/servletServlet中获取初始化参数publicclassTestServletextendsHttpServlet{privateStringlev;publicTestServlet(){System.out.println(调用构造方法);}@Overridepublicvoidinit(){lev=this.getInitParameter(“level”);//获取初始化参数}@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器请求与响应的接口请求转发器请求属性HttpServletRequest接口HttpServletRequest接口定义了大量获得请求信息的方法获得请求头的方法获得请求参数的方法获得客户端以及服务器端信息的方法获得请求头的方法getHeader():根据请求头名字获取请求头值getIntHeader():返回整型请求头的值getDateHeader():返回日期类型请求头值getHeaderNames():返回所有头的名字getHeaders():返回所有头的值获得请求参数的方法getParameter():根据请求参数名字返回请求参数值geParameterNames():返回所有请求参数的名字getParameterValues():将同一个请求参数名字的所有参数值作为数组返回获得客户端以及服务器端信息的方法getRemoteAddr():获得远程地址getRemotePort():获得远程端口getLocalName():获得本地主机名getLocalPort():获得本地端口HttpServletResponse接口HttpServletResponse接口定义大量获得响应信息的方法处理响应头信息的方法获得响应输出流及设置内容类型的方法响应重定向处理响应头信息的方法addHeader():在响应中添加一个头addIntHeader():在响应中添加一个整型头信息addDateHeader():在响应中添加一个Date类型信息setHeader():在响应中添加一个头信息setIntHeader():在响应中添加一个整型的头信息获得响应输出流及设置内容类型的方法getWriter():获得输出流PrintWriterout=response.getWriter();setContentType():设置响应的内容类型response.setContentType(text/html;charset=UTF-8);响应重定向HttpServletResponse中的sendRedirect()方法实现响应重定向Response.sendRedirect(url);响应重定向到另一个资源后,以前的请求信息并不会继续传递到重定向的组件中,是两个请求对象。sendRedirect()方法后的代码仍会被执行地址栏信息会变成重定向的组件的urlRequestDispatcher请求转发器如果希望请求中的信息能够继续传递到下一个资源,可以通过使用请求转发器的请求转发方法实现请求转发器的接口是RequestDispatcher当用RequestDispatcher请求转发后,地址栏内的信息仍是初始的url信息,客户端看不到转发后的urlRequestDispatcher请求转发器请求转发方法RequestDispatcherrd=request.getRequestDispatcher(url);Rd.forward(request,response);forward(ServletRequestrequest,ServletResponseresponse)请求属性HttpServletRequest接口中提供了一系列与请求属性有关的方法setAttribute(Stringname,Obdjecto):将对象o使用名字name存储到请求对象中getAttribute(Stringname):通过属性名字name获取属性值removeAttribute(Stringname):通过属性名字删除属性章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器Cookie的含义与作用JsessionidcookieCookie的概念和使用cookie是保存在客户端的文本ServletAPI提供了Cookie类,可以将文本信息封装成cookie对象HttpServletResponse接口提供了addCookie方法,将cookie添加到响应中HttpServletRequest接口中提供了getCookies方法,从请求中获得所有cookie对象Cookie开发实例使用实例学习Cookie使用cookie实现一个小时内,同一个客户端不需要重复登录的功能名字为jsessionid的cookie通过实验查看名字为jsessionid的cookiejsessionid的值为一个随机整数为后面章节学习会话做好准备章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器HttpSession接口会话实现机制会话失效URL重写HttpSession接口客户端对服务器端一次连续的访问过程,称为会话HttpSession接口用来表示会话对象HttpSession中和属性有关的方法setAttributegetAttributeremoveAttribute通过请求对象的方法获得会话对象getSessionJSP中的会话对象JSP中的内置对象session,是HttpSession对象默认情况下,JSP中总是创建session对象,可以直接使用%session.setAttribute(“obj”,”test”);Stringobj=(String)session.getAttribute(“obj”);%会话的实现机制会话的实现依赖于容器大多数容器采用基于cookie的实现机制基于cookie的实现机制,使用名字为JSESSIONID的cookie作为session的唯一标记会话使用实例通过实例展示会话编程完善教材案例,实现登录后查看个人信息的功能使用HttpSession来保存会话范围内的属性•HttpSessionsession=request.getSession();•session.setAttribute(custname,custname);获取会话属性值•HttpSessionsession=request.getSession();•Stringcustname=(String)session.getAttribute(custname);URL重写通过修改客户端浏览器设置,可以禁止发送cookie如果cookie被禁止,那么基于cookie实现的session将失效为了解决cookie禁止session失效的问题,可以使用URL重写技术会话超时为了有效使用内存,以及保证安全性,会话在一定时间内不被使用(称为会话超时),将被销毁有三种策略可以使会话超时web.xml中配置会话超时时间使用setMaxInactiveInterval方法设置超时时间使用invalidate方法直接将某会话设置为失效章节目录第六章Servlet生命周期第七章请求与响应第八章Cookie第九章会话第十章Servlet上下文第十一章监听器第十二章过滤器ServletContext接口上下文属性上下文参数ServletContext接口每个应用都有一个唯一的上下文对象,即ServletContext对象ServletContext对象可以和请求、会话对象一样处理属性setAttributegetAttributeremoveAttributeServletContext使用实例使用实例展示上下文用法完善教材案例,加入计数器功能使用ServletContext属性保存计数器ServletContext参数在web.xml中可以配置上下文参数,在整个上下文中有效context-paramparam-namepath/param-nameparam-val

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功