Action是Struts2的核心,其中包括:部分业务逻辑,资源包获取,表单验证,返回视图页面等。jsp
Struts2不须要实现任何借口或扩展类,只须要实现一个public String execute();方法,返回结果画面ide
第一步:书写action方法post
public class LoginAction{ public String execute(){ ... return "success"; //struts.xml配置文件的字符串配置一致 } }
第二步:在struts.xml中对Action进行声明ui
能够参照配置文件说明:struts.xmlthis
<package name="user" namespace="/User" extends="struts-default"> <action name="login" class="com.action.user.LoginAction"> <result name="success">/welcome.jsp</result> </action> </package>
如今就能够经过一下连接进行访问spa
.action后缀是能够配置的,在strut.xml中配置struts.action.extension属性code
参照配置文件说明:struts.xmlorm
虽然Action能够不用实现任何借口,可是通常为了更加方便的使用Action,会去实现xml
com.opensymphony.xwork2.ActionSupport public class ActionSupport implements Action, Validateble, ValidationAware, TextProvider, LocaleProvider, Serializable{...}
ActionSupport提供了一些功能
验证:在Action中实现一个public void validate()方法便可
文字本地化:使用gettext()方法获取资源包的信息
public void validate(){ if("".equals(user.getUserName())){ addFieldError("username", getText("username.required")); } }
Struts2除了能够在xml中声明Action外,还能够使用注解的方式来声明。
@Namespace("/User") @ResultPath(value="/") public class LoginAction extends ActionSupport{ @Action(value="welcome", result={ @Result(name="success", location="/welcome.jsp") }) public String execute(){ return "success" } }
表单数据包含在Action中,经过Getter和Setter获取
<!-- JSP --> <form action="login.action"method="post"> 用户名:<input type="text"name="username"/> <br/> 密码: <input type="password"name="password"/><br/> <input type="submit"value="登录"/> </form> <!-- Action --> public class LoginAction{ private String username; private String password; public String execute(){ return "success"; } public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } }
<!-- JSP --> <form action="login.action"method="post"> 用户名:<input type="text"name="user.username"/> <br/> 密码: <input type="password"name="user.password"/><br/> <input type="submit"value="登录"/> </form> <!-- Bean --> public class User{ private String username; private String password; public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } } <!-- Action --> public class LoginAction{ private User user; public String execute(){ return "success"; } public User getUser(){ return user; } public void setUser(User user){ this.user = user; } }
<!-- JSP --> <form action="login.action"method="post"> 用户名:<input type="text"name="username"/> <br/> 密码: <input type="password"name="password"/><br/> <input type="submit"value="登录"/> </form> <!-- Action : Action类要实现一个泛型接口 --> public class LoginAction extends ActionSupport implements ModeDriven<User>{ private User user = new User(); public String execute(){ return "success"; } public User getModel(){ return User; } }
<s:if test="hasActionErrors()"> <div class="error"> <s:actionerror/> </div> </s:if>
<s:if test="hasActionErrors()"> <div class="message"> <s:actionmessage/> </div> </s:if>
JAVA代码部分:经过addActionError()及addActionMessage()方法来设置信息。