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 SUCCESS; } /** * * @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> |