Result

 

1.經常使用四種類型:html

      a)          dispatcher(默認)java

      服務器跳轉(普通轉發),就是forward到一個JSP或者HTML或者其餘結果頁面,不能是Actionweb

                   視圖請求地址是             http://localhost:8080/myweb/r1/r1.jsp瀏覽器

                   瀏覽器最後顯示的地址是  http://localhost:8080/myweb/r1/r1.jsp服務器

       b)         redirectjsp

       重定向到結果視圖ide

                   視圖請求地址是             http://localhost:8080/myweb/r2/r2.jspui

                   瀏覽器最後顯示的地址是  http://localhost:8080/myweb/r2.jspspa

        c)         chaindebug

        服務器forward(轉發)到一個另外一個Action 

                   視圖請求地址是             http://localhost:8080/myweb/r3/r1.jsp

                   瀏覽器最後顯示的地址是  http://localhost:8080/myweb/r1/r1.jsp 

         d)         redirectAction

        重定向到另一個Action 

                   視圖請求地址是             http://localhost:8080/myweb/r4/r2.jsp

                   瀏覽器最後顯示的地址是  http://localhost:8080/myweb/r2.jsp

 

                   重點是上面兩種

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="resultTypes" namespace="/r" extends="struts-default">
        <action name="r1">
            <result type="dispatcher">/r1.jsp</result>
        </action>
        
        <action name="r2">
            <result type="redirect">/r2.jsp</result>
        </action>
        
        <action name="r3">
            <result type="chain">r1</result>
        </action>
        
        <action name="r4">
            <result type="redirectAction">r2</result>
        </action>
        
    </package>

 

若是chain是不一樣的命名空間:

<result type="chain">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>

 

 

2.全局結果集

 

Global_Results

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="user" namespace="/user" extends="struts-default">
        
        
        <global-results>
            <result name="mainpage">/main.jsp</result>
        </global-results>
        
        <action name="index">
            <result>/index.jsp</result>
        </action>
        
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result>/user_success.jsp</result>
            <result name="error">/user_error.jsp</result>
        </action>        
    </package>
    
    <package name="admin" namespace="/admin" extends="user">
        <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
            <result>/admin.jsp</result>
        </action>
    </package>
</struts>

 

Global_Results是在package標籤下。

意思就是說這個namespace下全部的action共享,當某一個action找不到對應的result時,就找到了它。

 

extends

 

同時這個extends 是表示namespace繼承的意思,能夠獲得它繼承namespace的全部配置

默認的都是繼承於 

 extends="struts-default"

 

它的源碼在struts-core-2.1.6.jar包裏面

裏面配置了不少的攔截器等。

可是在實際開發中,這種繼承關係若是多了就會很複雜

因此實際上通常用在

好比說有好幾個模塊,用戶管理,學生管理,老師管理,權限管理等

它們有公用頁面

好比返回首頁,錯誤信息返回等,

可使用到繼承

 

 

$這種寫法

用在能夠在配置文件裏往值棧裏面取值

一個UserAction.java裏面的內容都會存放在值棧裏面

能夠去讀value Stack 裏的內容

 

 

能夠在類中用一個屬性用來保存一個結果

這個屬性的值能夠動態肯定

在struct裏面能夠用$符號把結果取出來

 

 

3.動態結果

        在action中保存一個屬性,存儲具體的結果位置location

 

index.jsp:

<body>
   動態結果
  必定不要忘了爲動態結果的保存值設置set get方法
<ol>
    <li><a href="user/user?type=1">返回success</a></li>
    <li><a href="user/user?type=2">返回error</a></li>
</ol>
    
</body>

 

struct.xml :

經過$符號取出值棧裏面的內容

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="user" namespace="/user" extends="struts-default">
        
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result>${r}</result>
        </action>        
    </package>
        
</struts>

 

UserAction.java

爲這個屬性動態指定location

@Override
    public String execute() throws Exception {
        if(type == 1) r="/user_success.jsp";
        else if (type == 2) r="/user_error.jsp";
        return "success";
    }


/user_success.jsp
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>UserSuccess</title>
</head>
<body>
    User Success!
    <s:property value="r"/>
    <s:debug></s:debug>
</body>
</html>

 

 

4.傳遞參數

struct中間帶參數

重定向才須要傳遞

使用${}

 

 <package name="user" namespace="/user" extends="struts-default">
        
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result type="redirect">/user_success.jsp?t=${type}</result>
        </action>        
    </package>

redirect如何能把數據從一個視圖傳遞到另外一個視圖?
連接 用action向其餘視圖傳遞參數(redirect才須要傳遞)
相關文章
相關標籤/搜索