以下内容为个人的学习笔记整理,如有错误,请指出,谢谢~
一、会话
1、会话概述:web应用中的会话是指一个客户端与服务器之间连续发生的一系列请求和响应的过程。例如服务器需要对用户的信息分别进行保存,为了保存会话过程中产生的数据,cookie、url重写、字段隐藏、SSL技术都可用于会话跟踪。在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和Session。
2、cookie:在web应用中用户通过浏览器访问服务器的时候,服务器会给客户发送一些信息,这些信息都保存在Cookie中。这样,当浏览器再次访问服务器的时候,都会在请求头中将cookie发生给服务器,方便服务器对浏览器做出正确的响应。
相当于由服务器给了一个数据给浏览器保存,当浏览器下次发送请求的时候会将这个数据还给服务器。
①服务器向客户端发送Cookie时,会在HTTP响应头字段中增加Set-Cookie响应头字段。Set-Cookie头字段中设置的Cookie遵循一定的语法格式,具体示例如下:
Set-Cookie: name=; Path=/;(键值对
②为了封装Cookie信息,在Servlet API中提供了一个javax.servlet.http.Cookie类,该类包含了生成Cookie信息和提取Cookie信息各个属性的方法:
构造方法:cookie类有且仅有一个构造方法,具体语法格式是public Cookie(java.lang.String name,java.lang.String value),注意:name创建后不可修改,value可以修改。
cookie常用方法:
③例子:保留每次访问浏览器时的时间
3、session:访问web服务器的时候,Servlet容器就会创建一个session对象和id属性,其中session对象相当于病历本,而id相当于一个医疗卡号。当客户端后续访问这个服务器的时候,只要将标识号发送给服务器,服务器就能够判断该请求是哪个客户端发送的,从而选择与之对应的session对象为其服务。
①创建session:
HttpSession session=request.getSession():括号什么都不写默认为true:返回本次请求相关会话,如果没有将产生一个新的会话;如果括号写了false:如果没有会话,则返回null。
其相关的方法:
②存储数据到session或从session读取数据:
getAttribute(“名称”):查找以前存储的值,如果不存在则返回null,
setAttribute(“名称”,对象):设置属性
removeAttribute (“名称”):移除属性
③销毁session,让session过期或调用invalidate()强制失效
④session的时间设置:
在web.xml中配置session的最长空闲时间,针对当前程序有效 (建议使用)
<session-config>
<session-timeout>整数(0或负数永不过期,单位分钟)</session-timeout>
</session-config>
在tomcat配置文件中设置(<tomcat安装目录>\conf\web.xml),针对运行在此服务上的所有程序有效(不建议使用)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
4、对比
二、过滤器
1、在web应用程序中,过滤器介于Servlet之间。既可以拦截、过滤浏览器的请求,也可以改变浏览器的响应。它在服务器端和用户端起到了一个中间件的作用,对两者之间数据信息进行过滤。
过滤器的一些常见应用:
①认证过滤:对用户请求进行统一的认证;
②登录和审核过滤:对用户的访问请求进行记录和审核;
③图像转换过滤:转换图像格式;
④数据压缩过滤 :对用户发生的数据进行压缩,从而减少传输量;
⑤加密过滤:对请求和响应进行加密解密处理;
⑥资源访问触发事件过滤等。
2、过滤器的实现步骤:
①实现javax.servlet.Filter接口
②实现init方法,读取过滤器初始化参数(这里的init跟servlet不同,在服务器启动的时候就调用了。)
③实现doFilter方法,完成对请求或者响应的过滤。(主要写的内容)
④调用FliterChain接口对象的doFlier方法,向后续的过滤器/servlet(jsp)传递请求或者响应
⑤实现destroy方法,释放过滤器使用的资源。
3、过滤器的配置:
①xml文件:
②@WebFilter注解:
③多个过滤器之间的优先级:
注解配置:按照类名字符串比较,值小的先执行,如:AFilterDemo 优先于 BFilterDemo。web.xml配置:<filter-mapping>中谁在上面谁优先执行。
4、过滤器例子:
三、事件监听器
1、监听器就是应用监听事件来监听请求中的行为而创建的一组类。HttpServletRequst、HttpSession、ServletContext对象在web容器中遵循生成、运行销毁这样的生命周期,当进行相关配置后,web容器就会调用监听器上的方法,进行对应事件处理。
2、servlet事件主要有三类:
①Servlet上下文事件
②会话事件
③请求事件