Spring MVC(五)--控制器通過註解@RequestParam接受參數
阿新 • • 發佈:2018-10-04
rip for ets -s 接受 pos text roo scrip
上一篇中提到,當前後端命名規則不一致時,需要通過註解@RequestParam接受參數,這個註解是作用在參數上。下面通過實例說明,場景如下:
在頁面輸入兩個參數,控制器通過註解接受,並將接受到的數據渲染到新的視圖。所以首先來創建輸入參數頁面,然後創建控制器,再創建對應的響應視圖。
1、創建輸入參數頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <% String root = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + root + "/"; %> <script type="text/javascript" src="<%=basePath%>jslib/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="<%=basePath%>jslib/jquery.form.js"></script> <script type="text/javascript" src="<%=basePath%>js/param.js"></script> <link href="<%=basePath%>css/param.css" type="text/css" rel="stylesheet"> <title>Insert title here</title> </head> <body> <!-- 簡單參數傳遞 --> <p style="text-align: center;color: red;font-size: x-large;">Spring MVC控制器接受參數方式測試</p> <div class="param"> <!--使用註解獲取參數 --> <div class="public annotaion"> <p style="text-align: center;">註解法獲取</p> <form id="annoForm" action="<%=basePath%>param/annoParam" method="post"> <table> <tr> <td>id:</td> <td><input type="text" name="paramId" value=""></td> </tr> <tr> <td>名稱:</td> <td><input type="text" name="paramName" value=""></td> </tr> <tr> <td></td> <td style="text-align: right;"><input type="submit" value="提交" id="setAnnoParam"></td> </tr> </table> </form> </div> </body> </html>
頁面如下:
2、創建控制器
@Controller @RequestMapping("/param") public class ParamController { /** * 通過註解的方式獲取參數 * * @param paramId * @param paramName * @return */ @RequestMapping(value = "annoParam", method = RequestMethod.POST) public ModelAndView getParamByAnno(@RequestParam(value = "paramId", required = false) String id, @RequestParam("paramName") String name) { ModelAndView mv = new ModelAndView(); System.out.println(id); System.out.println(name); mv.addObject("paramId", id); mv.addObject("paramName", name); mv.setViewName("annoParam"); return mv; } }
在控制器中,我的參數是id和name,但是前端傳過來的是paramId和paramName,這個時候如果直接接受會報錯,所以要通過註解進行轉化,註解的值就是前端傳過來的參數名,可以看到前端頁面中的參數名就是paramId和paramName。
註意??:如果參數被註解@RequestParam修飾,默認情況下該參數不能為空,如果為空系統會拋異常,如果允許它為空,還要給註解增加一個required屬性,屬性值設置為false即可。
上面的控制器獲取到參數之後將數據渲染到了視圖annoParam中,所以下一步就是創建這個響應視圖。
3、創建響應頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Annotatioin Param</title> </head> <body> <h2> 獲取到的參數id是:<label>${paramId }</label> <br /> 獲取到的參數名稱是:<label>${paramName }</label> </h2> </body> </html>
在該頁面獲取了控制器渲染的數據。至此,代碼完成,下面開始測試。
4、測試
首先在頁面輸入如下參數:
點擊提交之後結果如下:
可以看到渲染成功,說明控制器接受參數成功。
5、總結
註解方式需要註意兩點:
1、註解的value屬性值為前端傳遞過來的參數名
2、默認不能為空,如果希望允許為空,必須增加屬性required,並設置其值為false
Spring MVC(五)--控制器通過註解@RequestParam接受參數