您的位置:首页 > 编程语言 > Java开发

Struts2学习记录(1)

2013-04-27 15:02 387 查看
因为某种原因,忽然从一个熟悉的城市来到新的城市,本以为找工作是件很容易的事情,但刚开始经过几家后忽然发现原来很熟的东西全部都不记得了,在遭受几经鄙视后痛定思痛,将最基本的东西重新梳理下并作以记录。

Struts2,由WebWork2发展而来,其优点:

Struts2不依赖与Servlet,属于无侵入式设计。
Struts2选择使用POJO类来封装请求的参数,或者直接使用Action的属性。

提供了拦截器,利用拦截器可进行AOP编程
提供了类型转换器,可以把特殊的请求参数转换成所需要的类型

Struts2web.xml配置

<display-name>Struts2</display-name>

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

Struts2工作原理:

在服务器启动时StrutsPrepareAndExecuteFilter的init()方法会将读取类路径下的Struts.xml文件,然后将读取的内容以javaBean的形式存放在内存中

一个请求在Struts2框架中的处理大概分为以下几个步骤

1 .客户端初始化一个指向Servlet容器(例如Tomcat)的请求 ,即HttpServletRequest请求。

2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)

3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action

4 .如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy

5 .ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类

6 .ActionProxy创建一个ActionInvocation的实例。

7 .ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8 .一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: