码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2框架初探

时间:2018-03-18 18:43:41      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:ima   eem   servlet   调用   结果   div   工作流   理解   pac   

Struts2提供了基于MVC应用程序的开发模式,从而使应用程序结构更加清晰,同时也简化了Web应用程序的开发。

Struts2的组成结构


 

主要包括控制器组件(包括核心控制器StrutsPrepareAndExecuteFilter、业务控制器Action)、模型组件(包括业务逻辑组件和数据库访问组件)和视图组件。

技术分享图片

  • 模型组件:实现业务逻辑的模块,由JavaBean或EJB构成。
  • 视图组件:主要有HTML、JSP和Struts2标签等视图技术。
  • 控制器组件:控制器组件主要由核心控制器和业务控制器Action组成。

Struts2框架结构


 

技术分享图片

  1. StrutsPrepareAndExecuteFilter是整个Struts2的核心控制器,根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,就执行Action处理,并停止过滤器链上还没有执行的过滤器。
  2. ActionMapper提供了HTTP请求与Action执行之间的映射,即ActionMapper判断请求是否应该被Struts处理。若需要Struts2处理,ActionMapper返回一个对象来描述请求对应的ActionInvocation的信息。(注意不是返回ActionInvocation的对象)
  3. ActionProxy是一个特别的中间层,位于Action和xwork之间,可以根据需求引入更多的实现方式,比如通过WebService来实现等。
  4. ConfigurationManager是xwork配置的管理中心,可以理解为struts.xml配置文件在内存中的对应。
  5. struts.xml是Struts2的应用配置文件,负责URL与Action之间映射的配置,以及执行后页面跳转的Result配置等。
  6. ActionInvocation:调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器实例。
  7. Interceptor(拦截器):自动拦截Action,提供了在Action运行之前或Result运行之后可能需要执行的某功能代码。类似javax.servlet.Filter。
  8. Action:是Struts2中的动作执行单元(执行类),用来处理用户请求,并封装业务所需要的数据。
  9. Result:是不同视图类型的抽象封装模型,不同的视图类型会对应不同的Result实现,Struts2中支持多种视图类型,比如JSP、FreeMarker等。
  10. Templates:各种视图类型的页面模板,比如JSP就是一种模板页面技术。
  11. TagSubsystem:Struts2的标签库,它抽象了3种不同的视图技术:JSP、velocity和freemarker,可以在不同的视图技术中直接使用这些标签。

工作流程


 

Struts2框架的核心控制器负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。当请求转入Struts2框架处理时会先经过一系列的拦截器,然后再到Action。Struts2对用户的每一次请求都会创建一个Action并运行,根据其运行返回的值,按Result配置信息,跳转到新的服务(进入视图或Action)。

具体流程:

  1. 客户发送请求给StrutsPrepareAndExecuteFilter。
  2. StrutsPrepareAndExecuteFilter询问ActionMapper,该请求是否是一个Struts2请求(即是否返回一个非空的ActionMapping对象)。
  3. 若ActionMapper认为该请求是一个Struts2请求,则StrutsPrepareAndExecuteFilter把请求交给ActionProxy处理。
  4. ActionProxy通过Configuration Manager询问框架的配置文件,确定需要调用的Action类及Action方法。
  5. ActionProxy创建一个ActionInvocation的实例,并进行初始化。
  6. ActionInvocation实例在调用Action的过程前后,涉及相关拦截器(Interceptor)的调用。
  7. Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。调用结果的execute()方法(或配置指定的方法),渲染结果。
  8. 执行各个拦截器Invocation.invoke()之后的代码。
  9. 把结果发送到客户端。

在开发基于Struts2的Web应用程序,开发者主要的任务就是设计Action、在配置文件内配置Action信息,以及编写视图的工作。

必须的配置信息


 

1)在配置文件web.xml中配置Struts2的启动信息

Struts2通过StrutsPrepareAndExecuteFilter过滤器来启动,即需要在web.xml文件中添加Struts2的启动配置信息。

<!--定义Struts2的核心控制器Filter-->
<!--这里是用过滤器作为控制器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsAndexecuteFilter
</filter-class>
</filter>


<!--配置Struts2可以处理的Action请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2)在当前Web应用的classpath下添加struts2的配置文件struts.xml。

<?xml version="1.0" encoding="utf-8"?>  
 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd">  
 <!--配置文件的头信息-->
 <struts>  
     <!--各种配置信息-->
 </struts>  

 

Struts2框架初探

标签:ima   eem   servlet   调用   结果   div   工作流   理解   pac   

原文地址:https://www.cnblogs.com/dudududu/p/8596508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!