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
    评论
低清版51M 大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 技术篇 第1章 大型门户网站架构分析 3 1.1 大型门户网站与小型企业网站的区别 3 1.2 高性能、高负载门户网站架构剖析 9 1.2.1 服务器操作系统的选择 10 1.2.2 dns服务器bind 16 1.2.3 cache服务器squid 18 1.2.4 带负载均衡的http服务器apache 19 1.2.5 支持集群功能的web服务器tomcat 21 1.2.6 开源数据库服务器之骄子mysql 23 1.2.7 功能强大的flv流媒体服务器red5 24 1.3 门户网站开发指导思想 26 1.4 ssh 2组合框架—门户网站开发之首选 28 1.4.1 mvc混血宠儿struts 2 28 1.4.2 幕后的财政部长spring 2.5 30 1.4.3 orm中间件香馍馍hibernate 3.2 31 1.5 小结 32 第2章 mvc混血宠儿struts 2 33 2.1 初识mvc新秀struts 2 33 2.1.1 mvc概述 33 .2.1.2 struts 2的mvc实现 35 2.1.3 struts 2的基本组成 36 2.1.4 struts 2的常用类介绍 38 2.1.5 struts 2的业务控制器action实现 39 2.1.6 struts 2的处理结果result 45 2.1.7 功能强大的表达式语言ognl 47 2.1.8 struts 2的运行流程分析—helloworld 48 2.1.9 struts 2的异常处理 52 2.2 struts 2配置精要 54 2.2.1 web.xmlstruts 2的配置实现 54 2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的国际化 87 2.4.3 struts 2国际化语言的动态切换 89 2.5 struts 2的校验框架 90 2.5.1 在action中实现手动校验 90 2.5.2 调用校验框架进行自动校验 91 2.5.3 自定义国际化struts 2校验错误消息 92 2.5.4 struts 2的自带校验器 92 2.6 struts 2的拦截器 94 2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100 第3章 struts 2标签库详解与ajax技术应用 103 3.1 struts 2主题与模板 103 3.2 struts 2控制标签详解 105 3.2.1 if/elseif/else标签详解 105 3.2.2 iterator标签详解 106 3.2.3 append标签详解 108 3.2.4 generator标签详解 110 3.2.5 merge标签详解 112 3.2.6 subset标签详解 113 3.2.7 sort标签详解 115 3.3 struts 2数据标签详解 116 3.3.1 action标签详解 116 3.3.2 bean标签详解 118 3.3.3 date标签详解 120 3.3.4 debug标签详解 121 3.3.5 i18n标签详解 122 3.3.6 include标签详解 123 3.3.7 param标签详解 126 3.3.8 push标签详解 127 3.3.9 set标签详解 128 3.3.10 text标签详解 129 3.3.11 url标签详解 130 3.3.12 property标签详解 132 3.4 struts 2表单标签详解 134

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值