Struts2简介

一.概念

    Struts2是Struts的下一代产品,是在 struts和WebWork的技术基础上进行了合并的全新的Struts 2框架。(Struts2是对struts和WebWork的优化)

 

   Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

 

二.工作原理

   Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。

 

   前面说Struts2采用拦截器的机制使得Action与Servlet API完全分离,但是为了实现业务逻辑,Action需要使用HttpServletRequest内容。

 

   Struts2使用了Action代理解决了这一问题,这也就是其精妙之处;Action代理可以根据系统的配置,加载一系列的拦截器,由拦截器将HttpServletRequest参数解析出来,传入Action。同样,Action处理的结果也是通过拦截器传入HttpServletResponse,然后由HttpServletRequest传给用户(具体可看工作原理图)。

 

   Struts2框架按照模块来划分,可以分为ServletFilters、Struts核心模块、拦截器和用户实现部分。Struts2工作原理图如下所示:

   

   下面我对图进行一下简单的讲解:

   1:web客户端发送请求,请求被在web.xml中定义的过滤器FilterDispatcher拦截,在FilterDispatcher中主要经过大概3层过滤器的处理,分别是ActionContext CleanUp、其他过滤器(Othter Filters、SiteMesh等)、FilterDispatcher。

 

   2:在FilterDispatcher过滤器中首先询问ActionMapper是否需要调用某个Action来处理请求(ActionMapper用来负责在HTTP请求和action调用请求之间进行一个映射)。

 

   3:如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

 

   4:ActionProxy通过配置文件struts.xml找到需要调用的Action类。

 

   5:ActionProxy创建一个ActionInvocation实例并调用该Action。

 

   6:在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor。

 

   7:等Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。

 

   8:根据result进行相应的模板处理(如跳转的界面,显示操作等)。

 

   9:调用结束之后,ActionInvocation会继续执行该Action相关的Interceptor(栈形式,所以interceptor的执行现在是反过来的)。

 

   10:ActionInvocation执行结束后给客户端返回Response信息。

 

三.struts2的特点

    对比struts1,struts2有如下特点(改进):

 

   1.Struts2所用到的技术是webwork的技术,它所用到的表达式语言是ognl语言。

 

   2.Struts2是轻量级的,它的Action类可以是普通java类。

 

   3.Struts2中不使用actionform管理表单,在struts2中用的action,整合了struts中的action和actionform 。

 

   4.Struts2是线程安全的,它是每一个请求对应一个实例。(struts1的Action是单例模式)。

 

   5.Struts2中的Action不再依赖于Servlet API,有利于测试。

   

四.使用技术

    struts2中用到的最重要的技术就是拦截器。

 

    拦截器是Struts 2框架的核心,通过拦截器,实现了AOP(面向切面编程)。使用拦截器,可以简化Web开发中的某些应用(如字符集,权限验证等),还可以实现Action和Servlet API的完全解耦。

 

    对于拦截器的认识,会在后面进行讲解。

 

    Struts2是一个目前比较流行的Web层的框架,结合了struts和WebWork的优点,关于它的知识,在以后还会继续介绍。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值