【菜鸟SSH入门详解之Struts2】

作者: 红色黎明 分类: Java 发布时间: 2016-04-17 23:01

目前SSH框架都使用了Struts2,而不使用Struts,所以这里直接跳过Struts,讲解的是Struts2的知识。下面是这篇讲解的目录摘要。

1、Struts2的基本概念

2、Struts2的工作原理

3、Struts2的具体应用

4、Struts2标签库的使用

5、Struts2自定义标签库

一、Struts2的基本概念

1、使用Struts2的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间,Struts2应用程序都是基于client/server HTTP交换协议。

2、Struts2包含了很多参与对所有请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。

二、Struts2的工作原理

Struts2的工作原理如下图:

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

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

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

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。FilterDispatcher是控制器的核心,就是MVC中C控制层的核心。

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

5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类,一般是从struts.xml配置中读取。

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

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。Interceptor的调度流程大致如下:

1)ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。

2)通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。

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

 

struts2原理图

三、Struts2的应用

1、在web.xml配置struts2拦截器

2、在struts.xml配置Action信息,若有interceptor,需在Action中引用

3、定义interceptor的处理类

四、Struts2标签库的使用

使用规则较多,可参考下文连接:http://blog.csdn.net/zxl315/article/details/2886456

五、Struts2自定义标签库

1、首先自定义tld标签文件,例如在WEB-INF/tld目录下自定义mytag.tld 标签文件

2、自定义tag处理类,需继承SimpleTagSupport类

3、JSP页面使用

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注