前言
Struts2是一个非常出色的MVC框架 它得到的广大程序开发人员的认可
一、理解MVC原理
MVC(Model-View-Controller) 模式-视图-控制器 是一种程序设计理念 目前在Java Web应用方面MVC框架有很多 常见的流行框架有Struts JSF Tapestry Spring MVC等等 在这些框架中Struts框架的应用最为广泛
1:控制器
使用中央控制器ActionServlet充当控制层 将请求分发信息 配置在struts.cfg.xml中 当客户端发送一个HTTP请求时 将由Struts的中央控制器对请求进行分发处理 在处理之后返回ActionForward对象 将请求转发到指定的JSP页面 也客户端进行回应
2:模型
模型层主要由Struts中的ActionFrom及业务JavaBean实现 其中ActionForm对象对表单数据进行封装 它能够与网页表单进行交互并传递数据 业务JavaBean用于处理真正的业务请求 由Action进行调用
3:视图
视图主要指用户看到并与之交互的界面 即Java Web应用程序的外观
二、Action对象
Action对象是Struts2框架中的重要对象 它主要用于对HTTP请求进行处理 在Struts2 API中 Action对象是一个接口 它位于com.opensymphony.xwork2包中 在Struts2项目开发中 创建Action对象都要直接或者间接实现此对象 声明代码如下
public interface Action{ public static final String SUCCESS="success"; public static final String NONE="none"; public static final String ERROR="error"; public static final String INPUT="input"; public static final String LOGIN="login"; public String execute()throws Exception; }
SUCCESS:Action执行成功时的返回值
NONE:也是Action执行成功的返回值 但不需要返回到成功页面
ERROR:Action执行失败时的返回值
INPUT:代表需要返回到某个输入信息的页面的返回值
LOGIN:代表需要用户登录的返回值
Action的基本流程
当浏览器向Web容器发送一个HTTP请求时 Web容器就要调用Struts2过滤器的doFilter()
方法 此时Struts2就接受到了HTTP请求,通过Struts2的内部处理机制 它会判断整个HTTP请求是否与某个Action对象相匹配 如果找到了与整个HTTP请求匹配的Action 就会调用Action对象的execute()
方法。并根据处理结果返回相应的值,然后Struts2就会通过Action的返回值找返回值所映射的页面 最后通过一定的视图回应给浏览器
流程时序图如下
动态Action
动态Action时通过请求Action对象中的一个具体的方法来实现动态操作的,其具体的操作方式是:
在请求Action的URL地址后方加上请求字符串(方法名称) 与Action对象中的方法进行匹配 需要注意的是 Action地址与请求字符串之间需要以!进行分割
/userAction!add /userAction!update
三:Struts2的配置文件
1:Struts2的包配置
在struts.xml文件中存放一个包的概念 它类似于Java中的包 配置文件struts.xml中的包使用<package>元素声明 主要用于放置一些项目中的相关配置 可以理解成配置文件中的一个逻辑单元 已经配置好的包可以被其他包继承 从而提高配置文件的重用性
<struts> <!--声明包--> <package name="user" extends="struts-default" namespace="/user"> ...... </package> </struts>
2:名称空间配置
在Java Web开发中 Web文件目录通常以模块进行划分 在Struts2配置文件提供了名称空间的功能,用于指定一个Action对象的访问路径,它的使用方法是通过在配置文件struts.xml的包声明中
使用namespace属性进行声明
<struts> <!--声明包--> <package name="book" extends="struts-default" namespace="/bookmanager"> ... </package> </struts>
3:Action相关配置
Struts2框架中的Action对象是一个控制器的对象 Struts2框架通过Action对象处理HTTP请求,其请求地址映射需要配置在sturts.xml文件中 它的配置方法使用<action>元素进行配置
<action name="userAction" class="com.lyq.action.UserAction" method="save"> <result>success.jsp</result> </action>
4:通配符实现简化配置
通过一定的命名约定 使用通配符来配置Action对象 从而达到一种简化配置的效果 主要有以下两个
* 匹配0或多个字符
\ 是一个转义字符 如需要匹配 \ 则使用\ /进行匹配
5:返回结果的配置
在MVC的设计思想中 业务逻辑处理需要返回一个视图View Struts2框架中通过Action结果映射配置返回视图
在配置文件struts.xml中 结果映射使用<result>
元素进行映射
<action name="user" class="com.lyq.action.UserAction"> <result>/user/Result.jsp</result> <result name="error">/user/Error.jsp</result> <result name="input" type="dispatcher">/user/Input.jsp</result> </action>