Struts2系列之二:页面传值
Struts2系列之三:注解式Action
1. 新建一个Maven Project
2. 在pom.xml文件中加入struts2等依赖:
<properties>
<struts2.version>2.3.15.1</struts2.version>
<testng.version>6.4</testng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Eclipse等IDE工具会帮我们加入struts2的依赖项:
3. 配置web.xml
加入下面的配置段:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="mystruts2" version="2.5">
<display-name>MyStruts2 Web Application</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- The below filter class was deprecated since Struts 2.1.3 -->
<!--<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern><!-- 可以写成*.action,不能写成/*.action -->
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
4. 配置struts.xml
把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>
<constant name="struts.action.extension" value="do,action,"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.multipart.maxSize" value="20701096"/>
<package name="helloworld" namespace="/hw" extends="struts-default">
<action name="first" class="com.john.struts2.HelloWorldAction" method="hello">
<result name="success">/WEB-INF/main.jsp</result>
</action>
</package>
</struts>
注:
a. package的namespace是可选属性,值一般以'/'开头。如果设定,有该前缀的请求才会分发到此package处理;否则,该package匹配任意前缀。
b.
extends属性必须指定,否则运行时报错。可以使用自定义的package或struts-default(Struts2预定义)。
c. action的
name属性不能加前缀'/',否则请求会报404错误。也是构成请求url的一部分。
HelloWorldAction.java:
public class HelloWorldAction {
public String hello() {
return "success";
}
}
main.jsp:
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
5. 运行该工程,在地址栏输入http://localhost:8080/mystruts2/hw/first.do,查看效果。
附
普通Web工程的配置:
①. 新建一个Dynamic Web Project
②. 加入依赖包(版本可能不同):
struts2-core-2.1.8.jar
xwork-core-2.1.6.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
最好是把它们加到/WEB-INF/lib/目录中,这样Web server启动时容易找到。