Struts2框架工作流程以及配置

一.什么是Struts2框架

是一个基于MVC设计模式的web应用框架,相当于一个servlet,相当于MVC中的C层(controller)。它的前身是webwork,控制器应用框架,可以优化对C层的操作。

二.Struts2框架的工作流程

1.流程图我是从百度百科截图截下来的,如下:

2.Struts2工作流程如下:(注:在请求之前,首次访问页面时会先执行一次web.xml文件,去找到核心控制器

StrutsPrepareAndExecuteFilter的源文件)

(1) 接收请求后,web容器将请求传递给ActionContextCleanUp过滤链,保证后面的过滤器的执行,然后再经过其他过滤器处理后,将请求传递到核心控制器FilterDispatcherStrutsPrepareAndExecuteFilter)。

(2) StrutsPrepareAndExecuteFilter调用ActionMapper来确定请求是哪个action,然后再将控制权委派给ActionProxy代理。

(3)ActionProxy调用配置管理器ConfigurationManager从配置文件struts.xml中读取配置信息,然后创建ActionInvocation对象。

(4) ActionInvocation在调用action之前会依次调用拦截器链,然后执行action,返回结果字符串,ActionInvocation会根据结果字符串查找对应的Result。

(5)Result会调用视图显示,在给客户端响应之前,会执行相反顺序的拦截器链,最后通过服务器响应将视图发送到客户端。

三.Struts2框架配置(以一个小例子为列)

1.下载Struts2框架:

下载地址为:http://struts.apache.org/download.cgi,2.3版本与2.5版本有一定区别,2.5版本将xwork包封装到了struts2包中,并且2.5中的部分包名与2.3版本有区别。

2.引入jar文件到WEB-INF下的lib文件夹下,常用包如下:


3.新建3个JSP页面:index.jsp,success.jsp(正确界面),error.jsp(错误界面)

index.jsp如下:


4.在当前web项目的web.xml中配置核心控制器


5.编写action类

如下:


6.在struts.xml中配置action,action必须在package中


注:

(1)Struts常量:用于改变Struts2框架默认行为(如:改变编码),可以定义在如下三个文件中:

struts.xml,struts.properties,web.xml

加载的顺序:从左到右

覆盖的顺序:从右到左

a.在struts.xml中通过<constant name="常量属性名 " value="常量值 " />来配置常量。

b. 在src下创建struts.properties文件,在其中以属性名=值的形式存储常量,

如struts.i18n.encoding=UTF-8,设置struts的编码为UTF-8,默认值就是utf-8。

注:. properties文件:都是程序中使用的属性文件,在其中一般以键值对的形式存储数据,方便修改。

c.在web.xml中配置:

<init-param>

<param-name></param-name>

<param-value></param-value>

</init-param>

建议:在实际开发中不建议在web.xml中配置常量,如果常量较少可以在struts.xml中配置,如果常量较多一般都是选择直接在struts.properties文件中定义的方式。

(2)包:package,作为引用名来使用

<package name="default" namespace="/" extends="struts-default">

name:必须属性,指明被引用时的名称。

extends:指定继承的其他包,可选属性。

namespace:可选的属性(命名空间)。

注:

namespace(命名空间):为了解决同名action问题,同一个命名空间中不可以出现同名action,namespace="/";表示默认命名空间。

命名空间的值将会影响用户访问数据时的映射地址(访问地址):

例如:

默认的namespace:http://ip地址:端口/web地址/user.action

namespace的值为:/one,则映射地址为:http://ip地址:端口/web地址/one/user.action。

另:命名空间错误会出现异常404(找不到路径)

Struts2搜索action的顺序:1.指定命名空间下的action 2.寻找默认命名空间下的action 3.未找到会出现异常

在struts.xml中引用其他xml文件:<include file="xml文件地址 "/>(将其他xml文件的内容引入到struts.xml中)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值