Struts2基础总结-入门篇
一、Struts2环境搭建
- 在web项目的WEB—IFN/lib目录下导入所需的jar包
- 可在Struts2的示例项目中的Copy
在web.xml中配置Struts2的Filter
<!-- 配置Struts 2框架的核心Filter --> <filter> <!--过滤器名 --> <filter-name>struts2</filter-name> <!-- 配置Struts 2的核心Filter的实现类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- 让Struts 2的核心Filter拦截所有请求 --> <filter-mapping> <!--过滤器名 --> <filter-name>struts2</filter-name> <!-- 匹配所有请求 --> <url-pattern>/*</url-pattern> </filter-mapping>
- 复制struts.xml文件到web应用的src下,同样可以从Struts2的示例代码中Copy
二、Struts.xml详解
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--
package: 包. struts2 使用 package 来组织模块.
name 属性: 必须. 用于其它的包应用当前包.
extends: 当前包继承哪个包, 继承的, 即可以继承其中的所有的配置. 通常情况下继承 struts-default
struts-default 这个包在 struts-default.xml 文件中定义.
namespace 可选, 如果它没有给出, 则以 / 为默认值.
若 namespace 有一个非默认值, 则要想调用这个包里的Action,
就必须把这个属性所定义的命名空间添加到有关的 URI 字符串里
http://localhost:8080/contextPath/namespace/actionName.action
namespace的搜索顺序:指定命名空间-->默认命名空间-->报错
-->
<package name="helloWorld" extends="struts-default">
<!--
配置一个 action: 一个 struts2 的请求就是一个 action
name: 对应一个 struts2 的请求的名字(或对一个 servletPath, 但去除 / 和扩展名), 不包含扩展名
class 的默认值为: com.opensymphony.xwork2.ActionSupport
method 的默认值为: execute
result: 结果.
-->
<action name="product-input"
class="com.opensymphony.xwork2.ActionSupport"
method="execute">
<!--
result: 结果. 表示 action 方法执行后可能返回的一个结果. 所以一个 action 节点可能会有多个 result 子节点.
多个 result 子节点使用 name 来区分
name: 标识一个 result. 和 action 方法的返回值对应. 默认值为 success
type: 表示结果的类型. 默认值为 dispatcher(转发到结果.)
-->
<result name="success" type="dispatcher">/WEB-INF/pages/input.jsp</result>
</action>
</package>
</struts>
- 在Struts2中使用package来管理Action,package的作用和java中的类包相似。
- package配置时必须指定name属性并且保证唯一性
- 通常每个package都应该继承struts-default
- package还可指定abstract=“true”定义为抽象包。抽象包中不包含Action
三、action和Action类的区别
action | Action |
---|---|
代表struts的一个请求 | 能够处理Struts的请求类 |
关于Action类定义的要求
1. 属性名必须遵守与javaBean属性相同的命名规则,属性的类型可以是任意类型,8种基本数据类型可实现自动转换。
2. 必须带有无参构造函数
3. 至少有一个供struts执行action调用的方法
4. 同一个Action类中可设置不同的方法用来应答不同的action请求
5. Struts2会为每个action创建新的Action实例,既Struts为线程安全。