result:輸出結果;第個Action返回一個字符串,Struts2根據這個值來決定響應結果html
name屬性:result的邏輯名。和Actin裏的返回值匹配,默認"success"java
值 :指定對應的實際資源位置web
若是Action中返回其它扯,result中的Name屬性要與之對應才能夠找到指定的資源apache
Action默認定義了一些常量,能夠拿來使用json
package com.opensymphony.xwork2; public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERROR = "error"; public static final String INPUT = "input"; public static final String LOGIN = "login"; }
<result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types>
這個配置顯示了幾種常見的結果類型,關於這些以及其餘結果類型,各自做用簡介以下:
dispatcher: 將請求轉發(forward)到本應用程序中指定的資源(JSP 或Servlet)
chain: Action 鏈式處理,將請求轉發(forward)到指定的Action
redirect: 請求重定向到指定的 URL(頁面或者Action)
redirectAction: 請求重定向到指定的Action
json:實現Ajax 時返回JSON 對象
freemarker:處理FreeMarker 模板
httpheader:控制特殊HTTP 行爲的結果類型
stream:像瀏覽器發送InputStream 對象,一般用來處理文件下載,還可用於返回Ajax
數據
velocity:處理Velocity 模板
xslt:處理XML/XLST 模板
plainText:顯示原始文件內容,例如文件源代碼
package com.pb.web.action; import com.opensymphony.xwork2.ActionSupport; import com.pb.entity.User; /* * 登陸響應action 以javaBean方式接收用戶登陸輸入的用戶名和密碼 */ public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; //實例化對象 private User user; //要有execute方法 public String execute(){ return SUCCESS; } public String login(){ if(user.getUserName().equals("accp") && user.getPassWord().equals("accp")){ return SUCCESS; }else{ return INPUT; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
<constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.pb.web.action.LoginAction" method="login"> <result name="success" type="redirect"> /loginSuccess.jsp </result> <result name="input" type="dispatcher"> /login.jsp </result> </action>
<package name="user" namespace="/user" extends="struts-default"> <action name="login" class="com.pb.web.action.UserAction"> <result type="chain"> <param name="actionName"> houseAction </param> <param name="namespace"> / house </param> </result> </action> </package> <package name="house" namespace="/house" extends="struts-default"> <action name=" houseAction " class="com.pb.web.action.HouseAction"> <result> /houseSuccess.jsp </result> </action> </package>
package com.pb.web.action; import com.opensymphony.xwork2.ActionSupport; public class HourseAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; public String add(){ System.out.println("執行添加操做!"); try{ if(1==1){ //調用service的方法 throw new Exception(); } }catch (Exception e){ e.printStackTrace(); return ERROR; } return "success"; } public String update(){ System.out.println("執行更新操做!"); try{ if(1==1){ //調用service的方法 throw new Exception(); } }catch (Exception e){ e.printStackTrace(); return ERROR; } return "success"; } public String delete(){ System.out.println("執行刪除操做!"); try{ if(1==1){ //調用service的方法 throw new Exception(); } }catch (Exception e){ e.printStackTrace(); return ERROR; } return "success"; } }
<global-results> <result name="error">/error.jsp</result> </global-results> <!-- <action name="hourse_*" class="com.pb.web.action.HourseAction" method="{1}"> <result name="success" type="dispatcher"> {1}success.jsp </result> </action> --> <action name="hourse_add" class="com.pb.web.action.HourseAction" method="add"> <result name="success" type="dispatcher"> /loginSuccess.jsp </result> </action> <action name="hourse_update" class="com.pb.web.action.HourseAction" method="update"> <result name="success" type="dispatcher"> /loginSuccess.jsp </result> </action> <action name="hourse_delete" class="com.pb.web.action.HourseAction" method="delete"> <result name="success" type="dispatcher"> /loginSuccess.jsp </result> <result name="error">/error1.jsp</result> </action> </package>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>登陸頁面</title> </head> <body> <form action="user/login.action" method="post"> <table> <tr> <td>用戶名:</td> <!--這裏的name要和提交的地址中聲明的實體類.屬性來用 --> <td><input type="text" name="user.username" /></td> </tr> <tr> <td>密碼:</td> <!--這裏的name要和提交的地址中聲明的實體類.屬性來用 --> <td><input type="password" name="user.password" /></td> </tr> <tr> <td><input type="submit" value="登陸" /></td> <td><input type="reset" value="重置" /></td> </tr> </table> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>管理員用戶頁面</title> </head> <body> 管理員用戶頁面 </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>普通用戶</title> </head> <body> 普通用戶頁面 </body> </html>
User實體類瀏覽器
package com.pb.enity; 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; } }
UserActionjsp
package com.pb.web.action; import com.opensymphony.xwork2.ActionSupport; import com.pb.enity.User; public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; //下一個中轉的Action private String nextDispose; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getNextDispose() { return nextDispose; } public void setNextDispose(String nextDispose) { this.nextDispose = nextDispose; } public String login(){ //用戶是admin就轉到adminAction if(user.getUsername().equals("admin") && user.getPassword().equals("admin")){ nextDispose="admin"; return SUCCESS; //用戶是admin就轉到commonAction }else if(user.getUsername().equals("common") && user.getPassword().equals("common")){ nextDispose="common"; return SUCCESS; //其它就跳轉到登陸頁面 }else{ return INPUT; } } }
CommonActionide
package com.pb.web.action; import com.opensymphony.xwork2.ActionSupport; public class CommonAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { return SUCCESS; } }
AdminActionpost
package com.pb.web.action; import com.opensymphony.xwork2.ActionSupport; public class AdminAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } }
struts.xmlui
<?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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <!-- Add packages here --> <package name="user" namespace="/user" extends="struts-default"> <action name="login" class="com.pb.web.action.UserAction" method="login"> <!-- 經過${}取出在UserAciton中定義的變量對應下面的action name --> <result name="success" type="redirectAction">${nextDispose}</result> <result name="input">/login.jsp</result> </action> <action name="admin" class="com.pb.web.action.AdminAction"> <result name="success">/admin.jsp</result> </action> <action name="common" class="com.pb.web.action.CommonAction"> <result name="success">/common.jsp</result> </action> </package> </struts>