1. 程式人生 > >Jsp呼叫Action的幾種方法

Jsp呼叫Action的幾種方法

由於最近剛剛開始接觸Spring+SpringMVC+mybatis的SSM框架來開發Web應用,頁面使用的是Jsp。

所以經常會從Jsp頁面呼叫到後端Java中Action類,因此希望總結一下,下次遇到類似問題不用再翻程式碼去檢視:

1. 最常見的form表單提交:

一般情況下,比如在登陸介面,因為主要只涉及到登陸的功能,我們會使用form表單提交的方式來向後端Action傳值以及跳轉頁面

舉例:

前端Jsp頁面中的表單提交方法:

<form action="<%=basePath%>login/isLogin" method="post">

	<input type="text" name="username"/> 

	<input type="text" name="password"/> 

	<input class="continue" type="submit" value="登入">

</form>

後端Java中Action類的接收方法:

@RequestMapping("/login")
public class LoginAction {

	@RequestMapping(value = "/isLogin", method = RequestMethod.POST)
    public ModelAndView isLogin(HttpServletRequest request, HttpSession session, User user) {
        if (user == null) {
            logger.error("could not find user");
            // return error page
        }
        ModelAndView mv = new ModelAndView();
        User u = userService.getUser(user);
        if (u == null) {
            mv.addObject("msg", "使用者名稱和密碼不匹配 或 此使用者不存在");
            mv.setViewName("/index.jsp");
            return mv;
        }     
        mv.setViewName("/Successful.jsp");
        session.setAttribute("userLogin", u);
        return mv;
    }

以上的案例的請求是POST請求,由於在後端Java類中存在user的VO類,其中也包括了name和password,所以能夠直接獲取到User類。

2. 通過<a href="#"></a>的方式呼叫後端Java中的Action類

如果頁面中需要對某個物件進行比較詳細的處理或者查詢,我們也可以使用<a href="#"></a>的方式進行頁面跳轉和傳值

舉例:

前端Jsp頁面的<a href="#"></a>方法:

<a href="<%=basePath%>inquiry/Detail/${uniq_code}" title="Detail">Detail</a>
後端Java中Action類的接收方法:
@RequestMapping("/inquiry")
public class TxnInqAction {
@RequestMapping(value = "Detail/{uniq_code}", method = RequestMethod.GET)
    public ModelAndView detailList(HttpServletRequest request, HttpSession session,
            @PathVariable("uniq_code") String uniqCode) {
        ModelAndView mv = new ModelAndView();
        if (uniqCode == null) {
            mv.setViewName("pages/TxnInq_list.jsp");         
        }
        ………………       
        mv.setViewName("pages/TxnDetail.jsp");
        return mv;
    }
}
通過<a href="#"></a>方法來呼叫後端Java Action類的請求是Get請求,一般性用的比較少因為Get請求可以直接從URL中看到傳的真實引數

3. 通過JS的方法呼叫後端Java中的Action類

如果前端同一個頁面有多個POST請求需要傳參和跳轉,可以使用該方法。

舉例:

前端JS方法呼叫:

<a href="#" onClick="deleteAuth(${userId})" title="Delete">刪除人員</a>
<script type="text/javascript">
function deleteAuth(authId)
{
	$.confirm({
	    title: "請確認",
	    content: "是否刪除此使用者?",
	    buttons: {
	       	 確定: function () {
	        	document.dpage.action="<%=basePath%>user/delete/"+authId;
	    		document.dpage.submit() ;
	        },
	       	 取消: function () {
	        }
	    },
	    useBootstrap: false,
	});
}
</script>
後端Java Action類中的接收方法:
@RequestMapping(value = "/delete/{userid}", method = RequestMethod.POST)
    public ModelAndView deleteUser(HttpServletRequest request, HttpSession session,
            @PathVariable("userid") String userId) {
        ModelAndView mv = new ModelAndView();
        userService.userSessionTransfer(session, mv, logger);

        userService.deactivateUser(userId);
        List<User> userList = userService.findAll();
        mv.addObject(CharacterCfg.USER.USERLIST, userList);
        mv.setViewName("pages/user_cfg/user_list.jsp");
        return mv;
    }
該方法與方法2的區別就只是在於一個是GET請求一個是POST請求。

目前只使用到了以上3種方式,如有新用方法會不斷新增。


相關推薦

Android延時執行呼叫方法(轉)

From: http://blog.sina.com.cn/s/blog_46726d2401015t8q.html 一、開啟新執行緒 new Thread(newRunnable() {    publicvoidrun()     {    Thread.sle

Unity解決指令碼相互呼叫方法

1.直接引用  最基本呼叫另一指令碼的辦法。通常專案中使用在一個預製體的內部,該模組完全由自己負責基本不對外耦合,操作方式簡單在Inspector中拖拽即可。 優點: 簡單高效,編輯器中直接可見。  缺點: 指令碼間強耦合、一個指令碼的變化可能帶來鏈式反應、也容易出現

Jsp呼叫Action方法

由於最近剛剛開始接觸Spring+SpringMVC+mybatis的SSM框架來開發Web應用,頁面使用的是Jsp。 所以經常會從Jsp頁面呼叫到後端Java中Action類,因此希望總結一下,下次遇到類似問題不用再翻程式碼去檢視: 1. 最常見的form表單提交:

jsp值傳到後臺Struts2中的action方法

login orm end 通過 實例化 eth log 名稱 選擇 Action接收表單傳遞過來的參數有3種方法: 如,登陸表單login.jsp: 1 <form action="login" method="post" name="form1"> 用戶名

jsp下頁面跳轉的方法小結

1. RequestDispatcher.forward()   在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔案,也即你的form提交至a.js

a標籤中href呼叫js的方法

我們常用的在a標籤中有點選事件: 1. a href=”javascript:js_method();” 這是我們平臺上常用的方法,但是這種方法在傳遞this等引數的時候很容易出問題,而且javascript:協議作為a的href屬性的時候不僅會導致不必要的觸發window.onbeforeun

Python呼叫shell命令的方法(在新程序中執行shell命令)

有時候難免需要直接呼叫Shell命令來完成一些比較簡單的操作,比如mount一個檔案系統之類的。那麼我們使用Python如何呼叫Linux的Shell命令?下面來介紹幾種常用的方法: 1. os 模組 1.1. os模組的exec方法族 Python的exec系

phpcms v9呼叫當前欄目的同級欄目的方法

(1)單網頁:     {loop $arrchild_arr $cid}<!--只適應用單網頁--> <li {if $catid==$cid}class="cur_link"{/if}><a href="{$CATEGORYS[$cid][

C#呼叫預設瀏覽器開啟網頁的方法

CSharp呼叫預設瀏覽器開啟網頁的幾種方法示例介面:方法一:從登錄檔中讀取預設瀏覽器可執行檔案路徑 private void button1_Click(object sender, E

分析函式呼叫關係圖(call graph)的方法

繪製函式呼叫關係圖對理解大型程式大有幫助。我想大家都有過一邊讀原始碼(並在頭腦中維護一個呼叫棧),一邊在紙上畫函式呼叫關係,然後整理成圖的經歷。如果運氣好一點,藉助偵錯程式的單步跟蹤功能和call stack視窗,能節約一些腦力。不過如果要分析的是指令碼語言的程式碼,那多半隻

java呼叫webservice介面 方法

webservice的 釋出一般都是使用WSDL(web service descriptive language)檔案的樣式來發布的,在WSDL檔案裡面,包含這個webservice暴露在外面可供使用的介面。今天搜尋到了非常好的 webservice provide

Jsp頁面跳轉和js控制頁面跳轉的方法

Jsp 頁面跳轉的幾種方法 1. RequestDispatcher.forward() 在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔

C#呼叫DLL的方法,包括C#呼叫C\C++\C#DLL

C# 語言有很多優點,越來越多的人開始使用它來程式設計。但是,C#還有一些不足,如對不少的底層操作是無能為力的,只能通過呼叫Win32 DLL 或C++等編寫的DLL;另外,一般認為C#程式的保密性不夠強,因為它容易被Reflector 反編譯而得到部分原始碼,所以需要使用混合程式設計加強C#程式的保密性,而

struts2中Action資料繫結方法

struts2中的Action接收表單傳遞過來的引數有3種方法: 1>  在Action類中定義表單屬性 如,登陸表單login.jsp:  <form action="login" method="post" name="form">  Us

手機頁面呼叫撥號的方法

手機訪問網站,點選手機號碼直接撥打電話:< a href=”tel://158xxxxxxxx”>號碼< /a>這種方式塞班、安卓與iphone都支援。經過測試這段撥號程式碼< a href=”wtai://wp/mc;158xxxxxxxx ”>撥打電話只在塞班與安卓上支

houdini dop中呼叫sop體積場的方法

首先要有體積場保證sop輸出的資訊裡包含vel 場資訊,例如: M1:popvop 第一種是用popvop節點,也是最自由的節點,可以隨意編輯匯入的vel資訊, 方式就是在vop中用volume

織夢dedecms呼叫文章釋出時間的方法彙總

織夢首頁時間標籤 1,11-20 樣式 ([field:pubdate function='strftime("%m-%d",@me)'/]) 2,May 15, 2009 樣式 ([field:pubdate function='strftime("%b %d, %Y

JSP頁面跳轉的方法以及注意點

       最近自己在做專案時遇到一個問題,明明加了response.sendRedirect() ,系統也執行了,但是它就是不跳轉;最後在網上找到原因如下:        首先我們要知道的是用r

NI LabWindows CVI 中呼叫 DLL 的方法

        這幾日上網發現CVI的討論者多了,也發現有很多CVI友們提出了一些困惑,比如用CVI載入別的程式語言寫的DLL時遇到的無法使用的問題。         首先是   extern "C",CVI中無法載入有此類宣告的DLL(有一些人發表的關於CVI載入DLL的文章中居然說必需有extern

利用Xposed Hook列印Java函式呼叫堆疊資訊的方法

在進行Android逆向分析的時候,經常需要進行動態除錯棧回溯,檢視Java函式的呼叫流程,Android的smali動態除錯又不是很方便,因此使用Android的Java Hook的方法,列印Java函式呼叫堆疊資訊輔助靜態分析。package com.xposeddemo