從JSP頁面裡傳資料到SpringMVC中的Controller處理
阿新 • • 發佈:2019-01-14
a.直接讀取表單的資料。在控制器裡的方法裡,按照這種格式寫。
b.SpringMVC的引數對映問題:(JSP頁面或者說url路徑的引數同控制器裡的方法的引數的對應)@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); }
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>