struts2返回結果的跳轉方式
1. <result>返回結果:跳轉方式
dispatch:請求轉發,預設值相應的跳轉到jsp頁面。並非Action。
redirect:重定向,不傳遞引數的.跳轉的應該是一個jsp頁面。並非Action。
redirectAction:重定向到一個action,不會傳遞相應的引數到下一個action中
chain:鏈,請求轉發到一個action,會傳遞相應的引數到下一個action中
stream:物件流物件,主要用於上傳下載檔案
action:
public class LoginAction extends ActionSupport{ // 通過物件方式取得到前臺頁面的資料 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } /** * 登入方法 */ public String login(){ System.out.println(user+"login"); return } /** * * @Description: 處理登入方法 * @return * @author mengqx * @date 2017年8月29日 */ public String doLogin(){ System.out.println(user+"doLogin"); return SUCCESS; } } |
Struts.xml
<struts> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.bjsxt.action.LoginAction" method="login"> <!-- result name屬性表示action中的返回值 type屬性表示跳轉方式 doLogin表示是一個Action。此時的Action:並不是指的某一個特定方法, 而是同<action> 標籤創建出來的name為doLogin的<action> --> <result type="chain">doLogin</result> </action> <action name="doLogin" class="com.bjsxt.action.LoginAction" method="doLogin"> <result type="redirect">/success.jsp</result> </action> </package> </struts> |
Login.jsp
<center> <h1>登入</h1> <form action="login.action" method="post"> userName: <input type="text" name="user.name"/><br> password: <input type="password" name="user.pwd"><br> <!-- springMVC 和 struts2 一個道理!都是通過物件.呼叫 --> address: <input type="text" name="user.adr.name"><br> <input type="submit" value="login"/> </form> </center> |
當一個Action中有多個return的時候。則需要在struts.xml中配置多個<result>標籤。 Name屬性對應的是前臺return返回值。
public String doLogin(){ if ("admin".equals(user.getName())) { return SUCCESS; }else{ return LOGIN; } } <action name="doLogin" class="com.bjsxt.action.LoginAction" method="doLogin"> <!-- 因為方法中有兩個return ,所以對應的分支應該也有兩個--> <result name="success" type="redirect">/success.jsp</result> <result name="login">/login.jsp</result> </action> |