1. 程式人生 > >淺談ActionForward的三種重定向

淺談ActionForward的三種重定向

ActionForward是 Struts的核心類之一,其基類僅有4個屬性name / path / redirect / classname。在基於Struts的Web應用程式開發過程中,Action操作完畢後程序會通過Struts的配置檔案struts- config.xml連結到指定的ActionForward,傳到Struts的核心類ActionServlet,ActionServlet使用 ActionForward提供的路徑,將控制傳遞給下一個JSP或類。ActionForward控制接下來程式的走向。ActionForward代表一個應用的URI,它包括路徑和引數,例如:path=”/login.jsp” 或path=“/modify.do?method=edit&id=10” ActionForward的引數除了在struts-config.xml和頁面中設定外,還可以通過在Action類中新增引數,或重新在Action中建立一個ActionForward。

       actionForward的作用:封裝轉發路徑,通俗點說就是說完成頁面的跳轉和轉向。那它既然是轉向,到底是轉發還是重定向呢?預設的情況下,actionForward採用的是轉發的方式進行頁面跳轉的。

       順便說一下
轉發和重定向的區別。最大的區別就是轉發的時候,頁面的url地址不變,而重定向的時候頁面的url地址會發生變化。簡單說明一下原因,因為轉發的時候是採用的同一個request(請求),既然頁面跳轉前後是同一個request,頁面url當然不會變了;而重定向採用的是2個request,因為是二次轉發頁面跳轉前後的url當然會不同了。

       既然actionForward跳轉的方式預設的是轉發,那如果我非要用重定向的方式,該如何設定呢?恩,這很簡單,大家都在struts-config.xml做過actionForward的配置吧,比如這句    
<forward name=”login” path=”/login.jsp” redirect=”true”/>

以下是三種常用的在action中覆蓋execute方法時用到的重定向方法:

示例程式碼如下:

public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
            
            /****重定向的三種方法*******/

            //方法1 
            response.sendRedirect(request.getContextPath() + "/login.jsp");
            return null;

            //方法2
            ActionForward forward = mapping.findForward("login");
            forward.setRedirect(true); 
            return forward ;

           //方法3            
           PrintWriter out = null;   
        try
        {
            // 設定回發內容編碼,防止彈出的資訊出現亂碼
            response.setContentType("text/html;charset=UTF-8");
            response.setCharacterEncoding("UTF-8");
            out = response.getWriter();
            String alertString = "你好!這是返回資訊!";
            String redirectURL = request.getContextPath() + "/login.jsp" ;  
            out.print("<script>alert('" + alertString + "')</script>");
            out.print("<script>window.location.href='" + redirectURL + "'</script>");
            out.flush();
            out.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return null;           
    } 


宣告:OSCHINA 部落格文章版權屬於作者,受法律保護。未經作者同意不得轉載。

相關推薦

ActionForward定向

ActionForward是 Struts的核心類之一,其基類僅有4個屬性name / path / redirect / classname。在基於Struts的Web應用程式開發過程中,Action操作完畢後程序會通過Struts的配置檔案struts- config.

thinkphp5 定向(跳轉)

scrip names 成功 三種 line hist server -s 需要 頁面跳轉 在應用開發中,經常會遇到一些帶有提示信息的跳轉頁面,例如操作成功或者操作錯誤頁面,並且自動跳轉到另外一個目標頁面。系統的\think\Controller類內置了兩個跳轉方法succ

學習之路(五)語句結構,vim編輯器快捷鍵及使用方法,find命令使用

vim編輯器循環;forwhileuntil for 變量 in 列表; do 循環體 done e.g for I in ‘seq 1 $FILE‘ ; doecho "Hello,‘head -n $I

TCP次握手和四次分手

必須 通信 服務 嘗試 pro 標示 cnblogs 通話 應該 TCP(Transmission Control Protocol傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議提供可靠的連接服務,采用三次握手確認建立一個連接,比如我們去訪問

Office 365 SharePoint 遷移)使用SP Migration API遷移

O365 SHAREPOINT 遷移 Office 365 Migration 下邊開始進入正題,首先來談談如何使用SharePoint Migration API進行文檔庫的遷移。 操作說明之前先來說下SharePoint Migration API他的大概功能,本

UART串列埠通訊之()--字元與資料的轉換

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/solar_Lan/article/details/78093692 學串列埠通訊的應用主要是實現微控制器和電腦之間的資訊互發,可以用電腦控制微控制器的一些資訊,可以把微控制器的一些資訊狀況發給電腦

Redirect 客戶端定向 和Dispatch 伺服器端定向

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

TCP--次握手及四次揮手

因為TCP是面向連線的,可靠的流式服務,所以對於傳輸層中它是一個非常重要的協議,我們必須要掌握它。 接下來我們來看看連線過程(三次握手)及斷開連線(四次揮手)過程。 1:三次握手 連線的時候只能是客戶端主動連線伺服器,伺服器可不能請求連線客戶端(因為伺服器不會知道客

SpringMVC學習筆記(定向與轉發)

SpringMVC中重定向與轉發通過return實現 重定向: return “redirect:/重定向頁面路徑” 轉發: return “forward:/轉發頁面路徑” 使用示例: @RequestMapping("/test2") pub

SpringCloud () Ribbon負載均衡

就會 rul back alt build 算法 實例 app creat 什麽是負載均衡 當一臺服務器的單位時間內的訪問量越大時,服務器壓力就越大,大到超過自身承受能力時,服務器就會崩潰。為了避免服務器崩潰,讓用戶有更好的體驗,我們通過負載均衡的方式來分擔服務器壓力。

資料中心網路架構

構建一個數據中心網路時,除了考慮網路硬體裝置的架構,2-7層網路設計也需要考慮。這兩者其實不能完全分開,硬體架構有時候決定了網路設計,網路設計有時候又限制了硬體架構。從應用場景,例如SDN/NFV來看,網路設計是最直接需要考慮的。所以這部分說說網路設計。**傳統

以C/C++語法二十三設計模式(一)——工廠模式(Factory Method)

0.寫在前面 在軟體開發過程中,為了提高開發效率、增強軟體執行的穩定性,降低後期專案維護的成本,我們志在追求更加高效、簡單的設計思路來引領我們的專案產品,在經過不斷的探索與總結的過程中,我們最常用的設計模式有23中,總體分為三大類,即建立型模式、結構型模式和行為型模式,具體如下:

shellfor、while、until迴圈

一、簡介 Shell程式設計中迴圈命令用於特定條件下決定某些語句重複執行的控制方式,有三種常用的迴圈語句:for、while和until。while迴圈和for迴圈屬於“當型迴圈”,而until屬於“直到型迴圈”。迴圈控制符:break和continue控制流程轉向。

Qt十二二維碼條形碼解析

一、簡介         二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的黑白相間的圖形記錄資料符號資訊的,其應用廣泛,如:產品防偽/溯源、廣告推送、網站連結、資料下載、商品交易、定位/導航、電子憑

Python介面(3):Python例項Python與C/C++相互呼叫

一、問題      Python模組和C/C++的動態庫間相互呼叫在實際的應用中會有所涉及,在此作一總結。 二、Python呼叫C/C++ 1、Python呼叫C動態連結庫         Python呼叫C庫比較簡單,不經過任何封裝打

java 23設計模式之模板方法模式(Template )

模板方法模式:模板方法模式是類的行為模式的一種,符合開閉原則(對擴充套件開放,對修改關閉)。父類提取子類公共方法,並提供若干抽象方法供子類實現,以減少子類中的重複程式碼,並提高可複用性。示例:1.建立一個父類bird,每天只有吃和睡才能生活,但是必須要先進行吃,然後再進行睡:

[Django]幾定向的方式

這裡使用的是django1.5 需求: 有一個介面A,其中有一個form B, 前臺提交B之後,後臺儲存資料之後,返回介面A,如果儲存失敗需要在A介面提示錯誤。 這裡就需要後臺的重定向,而且需要可以帶著引數,也就是error message 這裡收集了幾種方法,簡答說下需要那些包,怎麼簡單使用。 一、

python爬蟲之scrapy中user agent(兩方法)

user agent簡述 User Agent中文名為使用者代理,簡稱 UA,它是一個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本、CPU 型別、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器外掛等。 開始(測試不同型別user agent返回值) 手機use

Docker兩事

操作 客戶 一模一樣 自定義 改變 .com 1.5 依賴包 常見 Docker 到底是個什麽東西呢?我們在理解 Docker 之前,首先得先區分清楚兩個概念,容器和虛擬機。可能很多人都用過虛擬機,而對容器這個概念比較的陌生。我們用的傳統虛擬機如 VMware , Visu

TCP次握手,四次揮手

今天我們來講一下TCP的三次握手和四次揮手,先來張思維導圖。      一、TCP是什麼 TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。 我們知道了上述瞭解到了TCP的定義,通俗一點講