1. 程式人生 > >從JSP頁面裡傳資料到SpringMVC中的Controller處理

從JSP頁面裡傳資料到SpringMVC中的Controller處理

a.直接讀取表單的資料。在控制器裡的方法裡,按照這種格式寫。

@RequestMapping(value="/login.action")
	public void login(HttpServletRequest req,HttpServletResponse resp){
		req.setCharacterEncoding("utf-8");//設定引數的編碼格式
		String userName = req.getParameter("txtUserName");
		String userPwd = req.getParameter("txtUserPwd");
		System.out.println("使用者名稱:"+userName);
		System.out.println("密碼:"+userPwd);
	}
b.SpringMVC的引數對映問題:(JSP頁面或者說url路徑的引數同控制器裡的方法的引數的對應)

1第一種對映方式:

   表單裡的表單元素的name名字和控制器裡的方法的形參名一致。

 比如介面中的資料:

<span style="font-size:18px;"><span style="color:#999999;"><input type="text" value="" name="</span><span style="background-color: rgb(255, 153, 255);">typeName</span><span style="color:#999999;">"/>
</span><span style="background-color: rgb(255, 255, 255);"><span style="color:#cc33cc;">  在控制器裡方法的定義:</span></span><span style="color:#999999;">
</span></span><pre name="code" class="java"><span style="color:#999999;">@RequestMapping(value="/addtype.action")
    public void addType(String </span><span style="background-color: rgb(204, 51, 204);">typeName</span><span style="color:#999999;">){
    	System.out.println("傳遞過來的資料:"+typeName);
}</span>

2)採取普通的java物件(POJO)傳值的方式:

jsp頁面裡的表單元素的name名字為java物件的欄位名。

比如:使用者的註冊頁面:

<span style="color:#cc33cc;">                     </span><span style="color:#999999;"><tr>
                         <td>使用者名稱:</td>
                         <td><input type="text" name="</span><span style="background-color: rgb(204, 51, 204);">userName</span><span style="color:#999999;">"/></td>
                     </tr>
                     <tr>
                         <td>密碼:</td>
                         <td><input type="password" name="</span><span style="background-color: rgb(204, 51, 204);">userPwd</span><span style="color:#999999;">"/></td>
                     </tr>
                     <tr>
                         <td>確認密碼:</td>
                         <td><input type="password" name="txtUserRpPwd"/></td>
                     </tr>
                     <tr>
                         <td>電子郵箱:</td>
                         <td><input type="text" name="</span><span style="background-color: rgb(153, 51, 153);">userEmail</span><span style="color:#999999;">"/></td>
                     </tr>
                     <tr>
                         <td>註冊原因:</td>
                         <td><input type="text" name="</span><span style="background-color: rgb(153, 51, 153);">regReason</span><span style="color:#999999;">"/></td>
                     </tr>
                     <tr>
                         <td>居住地:</td>
                         <td><input type="text" name="</span><span style="background-color: rgb(153, 51, 153);">userAddress</span><span style="color:#999999;">"/></td>
                     </tr></span>

在控制器裡的方法的定義:

<span style="color:#999999;">@RequestMapping(value="/reg.action")
	public void reg(</span><span style="background-color: rgb(153, 51, 153);">UserInfo</span><span style="color:#999999;"> u){
		System.out.println("使用者名稱:"+u.getUserName());
	}</span>

3)通過url引數傳遞。將url的引數和形參進行一個匹配:

自動對映URL對應的引數到Action上面的數值,RequestParam 預設為必填引數。

<span style="color:#999999;">public String GetContent( </span><span style="background-color: rgb(153, 51, 153);">@RequestParam(“key”) String key</span><span style="color:#999999;">){
              }
擴充套件:
@RequestParam(value="number", required=false) String number 
@RequestParam("id") Long id 
@RequestParam("balance") double balance 
@RequestParam double amount </span>

注意,最後一個例子沒有提供清晰的引數名。當且僅當程式碼帶除錯符號編譯時,結果會提取名為“amount ”的引數,否則,將丟擲IllegalStateException異常,因為當前的資訊不足以從請求中提取引數。由於這個原因,在編碼時最好顯式的指定引數名

controller中定義的方法的引數的類別:

預設支援的引數型別 

Ø   HttpServletRequest

Ø   HttpservletResponse

Ø   HttpSession

Ø   Model/ModelMap 

<span style="color:#999999;">比如:@RequestMapping(value="/reg.action")
	public void reg(UserInfo u){
		System.out.println("使用者名稱:"+u.getUserName());
	}</span>









相關推薦

no