struts2註解需要struts2 convention plugin,所以你必須要理解Scanning Methodology 和Naming Converter原理
strust2掃描特定的包名struts,strust2,action,actions
掃描怎麼工作:
掃描特定的類,放在struts,strust2,action或者actions
掃描符合下面條件之一的:
實現 com.opensymphony.xwork2.Action的接口
繼承 com.opensymphony.xwork2.ActionSupport 類
或以Action結尾的類(UserAction,LoginAction)
命名轉換:
如:LoginAction.java
首先去除類尾部的Action,
其次轉換類的第一個字母爲小寫
LoginAction.action改變爲login.action
pom.xml
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.1.8</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-convention-plugin</artifactId> <version>2.1.8</version> </dependency>創建LoginAction繼承ActionSupport,ActionSupport默認返回success字符串
package com.dufeng.action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
import com.opensymphony.xwork2.ActionSupport;
@Namespace("/User")
@ResultPath(value="/")
@Result(name="success",location="/WEB-INF/view/login.jsp")
public class LoginAction extends ActionSupport{
}
xml相等的形式:
<package name="user" namespace="/User" extends="struts-default"> <action name="Login"> <result>pages/login.jsp</result> </action> </package>重載execute()方法,指定特定的@Action和@Result註解
package com.dufeng.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
import com.opensymphony.xwork2.ActionSupport;
@Namespace("/User")
@ResultPath(value="/")
public class WelcomeUserAction extends ActionSupport{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Action(value="Welcome", results={
@Result(name="success",location="/WEB-INF/view/welcome_user.jsp")
})
public String execute() {
return SUCCESS;
}
}
xml相等:
<package name="user" namespace="/User" extends="struts-default"> <action name="Welcome" class="com.dufeng.action.WelcomeUserAction"> <result name="SUCCESS">pages/welcome_user.jsp</result> </action> </package>login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World Annotation Example</h1>
<s:form action="Welcome">
<s:textfield name="username" label="Username"/>
<s:password name="password" label="Password"/>
<s:submit/>
</s:form>
</body>
</html>
welcome_user.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World Annotation Example</h1>
<h4>Hello <s:property value="username"/></h4>
</body>
</html>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Struts 2 Web Application</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>