1. 程式人生 > >springmvc請求一次,訪問多個controller中的方法

springmvc請求一次,訪問多個controller中的方法

有一個需求:請求一次,訪問多個controller中的方法

比如:先執行查詢操作,再將查詢出來的內容更新(當然也可以將方法寫到bo中,在controller中直接呼叫bo的方法,這裡只是舉個例子)

舉例:

JSP頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>在一個action中執行兩個方法</title>
</head>
<body>
1 哈哈 7000
    
<a href="${pageContext.request.contextPath}/emp/find?id=1" style="text-decoration:none">編輯</a>
</body>
</html>

Controller頁面

@Controller
@RequestMapping("/emp")
public class EmpAction { 
    @RequestMapping(value="/find")
    public String findEmpById(int id) throws Exception{
        System.out.println("查詢"+id+"號員工資訊");

        //轉發到EmpAction的另一個方法中去,即再次傳送請求
//        return "forward:/emp/update";

        //重定向到EmpAction的另一個方法中去,即再次傳送請求
        return "redirect:/emp/update.action?id=" + id;
    }

    @RequestMapping(value="/update")
    public String updateEmpById(int id,Model model) throws Exception{
        System.out.println("更新" + id +"號員工資訊");
        model.addAttribute("message","更新員工資訊成功");
        return "success";
    }
}

 結論:

1. ModelAndView並不能實現兩個方法之間的資料傳遞;

2. 可以通過Session來進行傳遞。

有多種方法可以實現Session傳遞

方法1:將HttpServletRequest作為方法形參 通過request.getSession().addAttribute

方法2:將HttpSession作為方法形參

方法3:通過@[email protected]來進行傳遞

使用HttpSession來存取資料,不過這樣又在springmvc中使用了servlet的內容,並不好

3. 使用轉發。在轉發情況下,共享request域物件,會將引數從第一個業務控制方法傳入第二個業務控制方法

return"forward:/emp/update.action";

4. 重定向不共享引數,所以要帶引數才行

return "redirect:/emp/update.action?id="+ id;


相關推薦

springmvc請求訪問controller方法

有一個需求:請求一次,訪問多個controller中的方法 比如:先執行查詢操作,再將查詢出來的內容更新(當然也可以將方法寫到bo中,在controller中直接呼叫bo的方法,這裡只是舉個例子) 舉例: JSP頁面 <%@ page contentType="t

C#實現類只例項化(被訪問呼叫)

C#簡單寫法如下: public  class  Singleton {      private  static  Singleton _instance =  n

使用jquery進行事件繫結點選傳送兩請求並且以後次數翻倍

出現的問題:使用jquery進行事件繫結,點選一次,執行兩次點選事件,並且在不重新整理頁面的時候,點選第三次的時候會執行四次,並且以後次數會進行翻倍。問題的原因:用jquery繫結一個click事件,jquery中並不是替換原因的function,而是接著新增。解決此問題的方

mkdir創建目錄

size sha color 承載 ima 技術分享 系統 term ext 系統管理員必用的十大基礎之一也可以這樣連貫起來一次性創建.... 其中的知識點其實就是花括號{}{};可承載一個以逗號(,)分割的列表,並將其展開為多個列表。。。。有個知識點 展開命令行~USER

如何在 Linux 重新命名檔案

你可能已經知道,我們使用 mv 命令在類 Unix 作業系統中重新命名或者移動檔案和目錄。 但是,mv 命令不支援一次重新命名多個檔案。 不用擔心。 在本教程中,我們將學習使用 Linux 中的 mmv 命令一次重新命名多個檔案。 此命令用於在類 Unix 作業系統中使用標準萬用字元批量移動、複製、追加和重新

readv writev 簡介 讀寫緩衝區

  一個小例子說明函式使用: 結構說明: struct iovec { void * iov_base //緩衝區地址 size_t iov_len //緩衝區輸入/輸出長度 } #include "util.h" #include <sys/u

Centos 卸載RPM包

clas 不支持 rpm -e 變量 bsp ffffff courier mar 多個 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Courier; color: #000000; background-col

asp.net 上傳檔案

看到一篇老外的文章,說在asp.net 中,如何先讓使用者把要上傳的檔案都選好了,然後一次上傳,今小結如下首先在頁面加一個上傳檔案控制元件,一個“attach"按鈕,一個listbox,用來存放等待上傳的檔名,一個"UPLOAD"按鈕,一個”刪除按鈕 <form

移動端上傳圖片(動態建立file型別的input)

描述 最近在做公司的一個移動端上傳圖片的業務,如果這是在PC端,將非常的簡單,因為給input設定屬性multiple後PC端按住ctrl鍵就可以一次性選擇多個圖片,但是在移動端確不可以,移動端選擇一張圖片後會自動返回到APP中,想再新增一張的話還需要再次進入

C#程式在一個終端只允許開啟防止開啟

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; names

slurm作業管理:提交執行任務

針對搶佔式的作業排程系統,如果分配節點時候是獨佔節點,那麼每次申請的資源最少就是1個節點。如何實現一次提交作業,計算多個任務呢?(包括序列、openmp或mpi的任務)。最簡單的方式就是按照自己的需求寫一個執行指令碼,然後通過作業管理系統提交即可。下面給出一個具

19道Python循環遍歷,while,for語句測試題網上看到的題目自己不看答案全部做了總共3小時左右

對稱 乘法 次數 輸入 一半 r語 整除 回文數 同時 # 1. 輸出10行內容,每行的內容都是“*****”。for i in range(0,10): for j in range(0,10): print("*",end="

使用條sql查詢的記錄數

nbsp lec sel code spa select bold style 查詢 方法一: select t1.num1,t2.num2,t3.num3 from (select count(*) num1 from table1) t1, (se

條sql刪除的資料

DELETE a.*, b.* FROM domain_project_tbl b RIGHT JOIN project_tbl a ON a.sn = b.project_sn WHERE a.name = '' AND a.is_del !=1 DELIMITER $ C

android實現登入之後不需要登入的方法tokensessionsharedpreference

token生成器 token生成器在這裡使用了一個隨機數來實現,即隨機生成一個數字,即實現token生成,如下所示: private static final Random random = new Random(System.currentTimeMillis()); public static final

Linux下vsftp建立單使用者訪問目錄的方法

vsftp作為FTP服務,建立單使用者訪問多個目錄的方法 需求:公司在內網有一臺許可權認證伺服器,用於做安全功能、滲透的驗證。接入的專案比較多,經常有專案組需要取日誌定位問題,日誌分散在三個不同的目錄,需要實時的獲得日誌。思路是想建一個FTP賬號,同時有

JAVA使用HBase根據Rowkey批量查詢資料(返回記錄)

最近有需求說是根據多個RowKey返回結果集: public static Configuration conf = null; public static Connection connection = null; public static Admin admin = nul

mysql查詢返回統計結果

1.sum(if) select sum(if(status=1,1,0)) as s1_count, sum(if(status=2,1,0)) as s2_count from order;

hql語句比對查詢單表字段

end nta 不能 ase color poll 存儲 pen ike 前端輸入客戶名稱,在使用hql查詢時,要同時比對表中,客戶名稱,客戶簡稱,拼音簡寫,客戶編碼等多個字段 hql寫法 String fdCustomerName=cv.poll("docMain.fdC

feign 發送請求參數時的寫法

method 接受 public ati -s state dna www. orm 第一:傳參方式寫法,當參數個數大於2個時,需要用@RequestParam @PostMapping(value = "/configReader/configValue.do",hea