Struts2体系结构与基本流程

一、Struts2基本流程

大致上,Struts2框架由三部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这三部分里,Struts2框架提供了核心控制器,

而用户需要实现业务控制器和业务逻辑组件。

1、核心控制器(FilterDispatcher)

FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在web框架中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会自

动过滤用户请求。如果用户请求以action结尾,该请求被转入struts2框架处理。

当Struts2获得*.action的请求后,会根据*.action的*部分判断调用哪个业务逻辑组件,例如user.action请求,Struts2会调用Action为user的业务逻辑来

处理该请求,Struts2的Action定义在struts.xml文件中。

2、业务控制器

业务控制器实际上就是用户实现Action类的实例,在此类中继承ActionSupport这个类,一般要重写它的execute方法。此方法返回一个字符串,根据处理结果的

不同,返回的字符串也不同,每个字符串对应着一个相应的返回视图。

我们开发出Action类之后还要在struts.xml文件中配置这个Action,有如下三部分需要定义:

(1)配置Action的name值,与客户端请求的Url对应

(2)配置Action组件的实现类,即class属性

(3)配置Action所包含的逻辑视图与物理资源之间的关系。即result标签的属性。

3、Struts2模型组件

Struts2的业务控制器不会对用户的请求进行处理,用户的请求一般最终由模型组件来处理,业务控制器只是负责中间调度的。

就比如平时做的项目中一般是由action层调用service层的方法对用户请求进行处理,srrvice层下面还可能隐含着Dao层。

4、Struts2的基本流程

Struts2的大致执行流程有如下几步:

(1)用户发起请求(.action表示一个Action请求)

(2)Struts2的FilterDispatcher拦截到用户发起的请求,判断这个请求是否是Action请求,如果是Action请求,那么交给对应的Action进行处理,在这个

过程中需要一个辅助对象:Action映射器(ActionMapper)

(3)交给对应的Action处理之后,根据struts.xml中对此Action的配置信息,首先执行拦截此Action的所有拦截器,然后再执行请求的Action对象。

(4)Action执行完毕之后需要返回一个结果(此结果用字符串表示),核心控制器根据此返回结果从配置文件中找到真正的路径,然后将请求转发给相应的视

图,由视图向客户端做出相应的响应。

二、Struts2的基本配置

配置3个文件:web.xml  struts.xml  struts.properties

1、web.xml

任何MVC框架都需要与web应用整合,这就不得不借助web.xml这个文件,只有配置在web.xml中的Servlet才会被应用加载。

通常,所有的MVC框架都需要在web.xml中加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher,web应用只需要负责加载

FilterDispatcher,FilterDispatcher就会自动加载Struts2框架。

在web.xml中配置FilterDispatcher的代码片段如下:

	<!-- 配置Struts2的核心Filter -->
	<filter>
		<!-- 配置Struts2核心Filter的名字 -->
		<filter-name>struts2</filter-name>
		<!-- 配置Struts2核心Filter的实现类 -->
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<!-- 配置Filter拦截的url,通过此配置让Filter拦截所有的用户请求 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

当然,配置这个Filter的时候也可以指定一些初始化参数或者常量(比如struts2的编码),平时我没怎么用到在这块加参数,所以没写,但是要知道这块是可以

加初始化参数的。

2、配置struts.xml

Struts2框架的核心配置文件就是struts.xml,该文件主要负责管理struts2框架的业务控制器,也就是管理Action。

在默认情况下,Struts2框架将自动加载放到/WEB-INF/classes路径下的struts.xml文件(所以我们在eclipse中要将struts.xml放到项目的src目录下)。

在大部分应用中,随着应用规模的增加,系统中的Action数量也在增多,造成struts,xml文件臃肿,所以我们在开发的时候要将Action分类配置到不同的xml

文件中,然后在struts.xml文件中包含其他的配置文件,例如,<include file="struts_util.xml"/>。这样可以提高struts.xml文件的可读性。

看一个struts.xml文件的结构,就是一个示范文件:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--下面是Struts2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<!--struts是struts2配置文件的跟元素 -->
<struts>
	<!--下面的元素可以出现0次,也可以出现无限多次 -->
	<constant name="" value="" />
	<!--下面的元素可以出现0次,也可以出现无限多次 -->
	<bean type&#
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值