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启动时容易找到。