Java学习笔记-Struts2工作机制
2016-03-27 16:38
519 查看
1.Servlet Filter(过滤器)技术:Servlet过滤器是在Java Servlet规范中定义的,它能够对过滤器关联的URL请求和相应进行检查和修改。
过滤器的用处:
(1)权限控制。通过过滤器实现访问的控制,当用户访问某个链接或者某个目录的时候,可利用过滤器判断用户是否有访问权限。
(2)字符集处理。可以在过滤器中处理request和response的字符集,而不用在每个Servlet和JSP中进行单独处理。
(3)其他一些场合。如计数器,数据加密,访问触发器,日志用户访问分析。
所有过滤器都必须实现java.Servlet.Filter接口,它含有三个必须实现的方法:
(1)init(FilterConfig):过滤器的初始化方法,Servlet容器创建过滤器实例后将调用这个方法。这个方法可以通过FilterConfig参数读取web.xml文件中过滤器的初始化参数。
(2)doFilter(ServletRequest,ServletResponse,
FilterChain):这个方法完成实际的过滤操作,当用户请求与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。
过滤器必须与指定的URL关联才能发挥作用,关联的方式有三种:与一个URL关联(xxx.jsp),与一个URL目录下的所有资源关联(/*),与一个Servlet关联(Servlet名称)。
(3)destroy():Servlet容器在销毁过滤器实例前调用此方法,释放过滤器占有的资源。
2.struts2的设计思想: 用Servlet Filter 技术将Servlet API 隐藏于框架之内,一个请求在struts2框架内被处理,大致分为以下几个步骤,如下图所示
(1)客户端初始化一个指向Servlet的容器(如tomcat)的请求。
(2)这个请求经过一系列的过滤器(Filter)。
(3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
(4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求交给ActionProxy。
(5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
(6)ActionProxy创建一个ActionInvocation的实例。
(7)ActionInnovation实例使用命名模式来调用,在调用Action的过程前后,涉及相关拦截器的调用。
(8)一旦Action执行完毕,ActionInnovation负责根据struts.xml中的配置找到对应的返回结果。
图 Struts2内部工作机制
过滤器的用处:
(1)权限控制。通过过滤器实现访问的控制,当用户访问某个链接或者某个目录的时候,可利用过滤器判断用户是否有访问权限。
(2)字符集处理。可以在过滤器中处理request和response的字符集,而不用在每个Servlet和JSP中进行单独处理。
(3)其他一些场合。如计数器,数据加密,访问触发器,日志用户访问分析。
所有过滤器都必须实现java.Servlet.Filter接口,它含有三个必须实现的方法:
(1)init(FilterConfig):过滤器的初始化方法,Servlet容器创建过滤器实例后将调用这个方法。这个方法可以通过FilterConfig参数读取web.xml文件中过滤器的初始化参数。
(2)doFilter(ServletRequest,ServletResponse,
FilterChain):这个方法完成实际的过滤操作,当用户请求与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。
过滤器必须与指定的URL关联才能发挥作用,关联的方式有三种:与一个URL关联(xxx.jsp),与一个URL目录下的所有资源关联(/*),与一个Servlet关联(Servlet名称)。
(3)destroy():Servlet容器在销毁过滤器实例前调用此方法,释放过滤器占有的资源。
2.struts2的设计思想: 用Servlet Filter 技术将Servlet API 隐藏于框架之内,一个请求在struts2框架内被处理,大致分为以下几个步骤,如下图所示
(1)客户端初始化一个指向Servlet的容器(如tomcat)的请求。
(2)这个请求经过一系列的过滤器(Filter)。
(3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。
(4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求交给ActionProxy。
(5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
(6)ActionProxy创建一个ActionInvocation的实例。
(7)ActionInnovation实例使用命名模式来调用,在调用Action的过程前后,涉及相关拦截器的调用。
(8)一旦Action执行完毕,ActionInnovation负责根据struts.xml中的配置找到对应的返回结果。
图 Struts2内部工作机制
相关文章推荐
- svn1.8 server client eclipse 插件 配置 完全教程
- 图形程序设计(Java核心技术卷Ⅰ)
- eclipse添加JSF XHTML模板
- Servlet笔记--利用反射实现多个请求使用同一个Servlet
- Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)
- JMM——运行时数据区
- Java的接口
- struts2中的constant配置详解
- 浅析Java中的final关键字
- 20145317彭垚 《Java程序设计》第4周学习总结
- Spring事务管理
- java面向对象- 多态性的体现和使用
- java 的MD5加密密码
- java学习笔记之java如何快速入门
- 【转载】jdk、jre、jvm等名词解释
- Java并发编程:Lock
- eclipse 快捷键, eclipse 常用快捷键
- 《Java程序设计》第4周学习总结
- SpringMVC + Mybatis 实现用户登录功能
- Java中static修饰类的问题