1.Struts 历史简介
Struts是一个JavaWeb框架, Struts2并不是在Struts1基础上改进的一个框架,而是基于 WebWork的全新框架。Struts2是基于MVC开发模型的一个框架, 基于表现层框架.
2.Struts2的执行原理与流程
2.1执行图
3.Struts2 的配置文件
3.1配置文件的加载顺序
a、default.properties : struts2-core**.jar org.apache.struts 包 b、struts-default.xml : struts2-core**.jar [只看]
c、struts-plugin.xml : 在插件的jar包 [只看]
d、struts.xml:在应用的构建路径顶端,自己定义的Struts配置文件。(推荐使用)
e、struts.properties:在应用的构建路径顶端(不推荐)
f、web.xml:配置过滤器时,指定参数(不推荐)
前三个,我们只能看,不能修改,如要修改,个人推荐在struts.xml中修改。
3.2配置文件中的常用标签
3.2.1 constant 指定处理请求后缀:
<!--修改请求的后缀,多个后缀之间,以英文的","相隔-->
<constant name="struts.action.extension" value="do"/>
Struts2 的默认请求路径为xxx.action 改为了xxx.do
<!--当配置文件修改之后,系统是否默认的加载配置文件,默认是false ,看default.properties-->
<constant name="struts.configuration.xml.reload" value="true"/>
<!--有dev的时候,用的时候就改为true,那也是重载-->
<constant name="struts.devMode" value="true"/>
<constant name="struts.i18n.encoding" value="utf-8"> </constant>
指定默认编码集
<constant name="struts.multipart.maxSize" value"10485670"></constant>
上传文件大小限制,限制为10M
3.2.2 package元素
意义:分模块开发
属性:name:必须要有的没配置文件中要唯一,一个名字
extends:不是必须的。指定父包,会把父包中的配置内容继承下拉。一般需要直接继承一个叫做“struts-default”的包(该包在strust-default。xml中,配置文件中),如果不继承,struts2核心功能无法使用。
abstract: 是否是抽象包. 没有任何 action 元素的 package 可以声明为抽象包.
namespace: 指定名称空间. 般以 “/“ 开头 . 该包中的动作访问 径: namespace+动 作名称 . 如果 namespace=““, 这是默认名称空间和 写该属性是 样的. 但与namespace= “/“ 同
<package name="p1" extends="struts-default" >
<!--action后不可以写前缀-->
<action name="hello" class="class中写该action的路径" method="bye">
<result name="error">error.jsp</result>
</action>
</package>
//这就是在struts.xml文件中的配置
3.2.3 action元素
作用:定义一个动作
属性:name: 必须的. 动作名称, 用户于发起请求, 在包中要唯 .
class: 指定动作类的全名. 框架会通过反射机制去实 化. 写 默认是 com.opensymph ony.xwork2.ActionSupport .
method: 指定动作类中的动作 法. 框架会执 该 法. 默认是 execute(). execute () 法默认返回 success
4 动作类:
4.1编写动作类的三种方式
4.1.1 POJO
普通的javaBean 没有任何继承
4.1.2 实现Action接口
实现com.opensymphony.xwork.Action2接口,可以使用接口中的常量:
public interface Action {
String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";
String execute() throws Exception;
}
4.1.3继承ActionSupport:
public class ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable {
//这些是他实现的方法
4.2 使用通配符配置action
在配置 元素时, 允许在指定 name 属性时, 使用模式字符串 (用 “ * “ 代表一个或多个字符)。
<action name="*Customer" method="{1}Customer" class="这里面写CustomerAction的路径">
<result name="success">{1}Customer.jsp</result>
</action>
//上边的是xml文件中
<a href="${pageContext.request.contextPath}/addCustomer .action">增加</a>
<a href="${pageContext.request.contextPath}/deleteCustomer
.action">删除</a>
<a href="${pageContext.request.contextPath}/updateCustomer
.action">修改</a>
<a href="${pageContext.request.contextPath}/checkCustomer
.action">查看</a>
</body>
//上边的是jsp中调用的链接