0%

struts2第一个示例

Struts2第一个示例

首先,导入struts核心包

1
2
3
4
5
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>

web.xml配置struts2拦截器

1
2
3
4
5
6
7
8
9
10
<!-- 配置struts2的拦截器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

struts.xml中配置action

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
<!--
package 是struts的模块
name 用于其他包应用当前包
namespace 默认/ 访问路径
extends 继承的包,可以继承其中的所有的配置 通常继承struts-default
-->
<!--struts-default是在struts-core中的struts-default.xml中配置的package -->
<package name="helloWorld" namespace="/userAction" extends="struts-default">
<!-- 配置action 一个请求就是一个action
name 对应请求名字
class 默认值为 com.opensymphony.xwork2.ActionSupport
method 默认值为 execute
public String execute() throws Exception {
return "success";
}
result 结果
-->
<action name="helloworld">
<!--
result 结果,表示action执行之后可能返回的一个结果,一个action节点可能会有多个result子节点,使用name进行区分
name:标识一个result,默认为success
type: 结果类型 默认dispatcher
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.result.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.result.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.result.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.result.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.result.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.result.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.result.PlainTextResult" />
<result-type name="postback" class="org.apache.struts2.result.PostbackResult" />
</result-types>
-->
<result>/pages/helloworld.html</result>
</action>

<action name="test" class="com.zhanghe.study.action.UserAction" method="test">
<result>/pages/helloworld.html</result>
</action>
</package>
</struts>

创建Action类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Action类:能够处理Struts2请求的类
* - 属性的名字必须遵守javabean属性名的命名规则
* - 必须有一个不带参的构造器 由于反射(action元素中的class属性会反射构造器生成对象)
* - 至少有一个供struts在执行这个action时调用的方法
* - 同一个Action类可以有多个action方法
* - Struts2会为每一个HTTP请求创建一个Action实例,Action不是单例的,线程安全
* @author zh
* @date 2020/12/21 14:51
*/
public class UserAction {

private User user;

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public String test(){
System.out.println(user.getName());
return "success";
}
}

访问

1
http://localhost:8080/struts/userAction/test.action?user.name=张三