赞
踩
Tomcat 的容器分为四个等级,真正管理 Servlet 的容器是 Context 容器,一个 Context 对应一个 Web 工程,在 Tomcat 的配置文件中可以很容易发现这一点,如下:
Context 配置参数
<Context path="/projectOne " docBase="D:\projects\projectOne"
reloadable="true" />
servlet规范
servlet/filter/listener/interceptor区别与联系
http://blog.csdn.net/sundenskyqq/article/details/8549932
http://hejiajunsh.iteye.com/blog/1776571
application:上下文对象,是由容器创建和初始化的,它的范围是整个的web应用,而且整个web应用中只会有一个 application对象存在,当web服务器关闭时,就会将application对象销毁
session:是一种保存上下文信息的机制,它是针对每个会话的,它是放在服务器端,通过SessionId区分的,在浏览器和服务器结束后,都会将session销毁
request对象:是当客户端发送请求时,容器就会创建一个ServletRequest对象,来进行封装请求数据,同时会创建一个servletResponse对象来进行封装相应数据,当结束封装请求之后,就会销毁该对象
WEB监听器,就是监听这3个对象的创建,销毁,和它们的属性发生的变化
用途:统计在线人数、统计访问量、系统变量初始化、Spring
使用:
1. 创建 继承相应的接口
2. web.xml中注册
一个application、HttpSession、ServletRequest都可以有多个监听器
ServletContext 全局一个,使用context-Parm的全局参数。容器启动结束时使用。
HttpSession 多个,HttpSessionListener可以有多个。创建销毁时运行
Web.xml中设置session超时等属性
对监听域中的属性(Attribute之间传值,放在request域中,parameter是参数)增删监听
HttpSession 绑定就是setAttribute() 钝化活化是因为session太多了,内存不够用,序列化到文件。重载时自动加载。
1. 域对象
session/request/application
2.事件
创建/销毁/属性变更/servlet状态改变
3.顺序
监听器->过滤器->Servlet
PS:Webx、Struts都通过filter注入,因为这样够灵活
过滤器的执行流程按照filter-mapping的顺序,其中filterChain是后续要执行的过滤器
Init和destory 是容器初始化/销毁时执行,仅一次。
过滤器的执行流程:
执行第一个过滤器的chain.doFilter()之前的代码——>第二个过滤器的chain.doFilter()之前的代码——>……——>第n个过滤器的chain.doFilter()之前的代码——>所请求servlet的service()方法中的代码——>所请求servlet的doGet()或doPost()方法中的代码——>第n个过滤器的chain.doFilter()之后的代码——>……——>第二个过滤器的chain.doFilter()之后的代码——>第一个过滤器的chain.doFilter()之后的代码。
拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强
使用场景:解决请求的共性问题(乱码问题、权限验证问题)
拦截器的基本工作原理
1.SpringMVC可以通过配置过滤器来解决乱码问题
2.拦截器的工作原理和过滤非常相似
拦截器的实现
1.编写拦截器类实现HandlerInterceptor接口
三个必须实现的方法
preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2)
(第一步:在请求被处理之前进行调用 是否需要将当前的请求拦截下来,如果返回false,请求将会终止,返回true,请求将会继续
Object arg2表示拦截的控制器的目标方法实例)
postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,ModelAndView arg3)
(第二步:在请求被处理之后进行调用ModelAndView arg3是指将被呈现在网页上的对象,可以通过修改这个对象实现不同角色跳向不同的网页或不同的消息提示)
afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,Exception arg3)
(第三步:在请求结束之后调用 一般用于关闭流、资源连接等 比较少用)
2.将拦截器注册进SpringMVC框架中
<mvc:interceptors>
<bean class="xxx"></bean>
</mvc:interceptors>
3.配置拦截器的拦截规则
配置部分路径请求
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/xxx" /> <!-- 只拦截匹配的路径 -->
<bean class="xxx"></bean>
</mvc:interceptor>
</mvc:interceptors>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。