Struts2(六)result

1、result簡述

result:輸出結果;第個Action返回一個字符串,Struts2根據這個值來決定響應結果html

name屬性:result的邏輯名。和Actin裏的返回值匹配,默認"success"java

值 :指定對應的實際資源位置web

2、Action中返回其它值

 若是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";



}

3、type屬性

 <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>

 

4、全局結果

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>

5、動態結果

 

<%@ 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>

相關文章
相關標籤/搜索