javascript
Spring框架深入(四)--SpringMVC配置详解
一、SpringMVC web模型
?
二、@RequestMapping參數說明
1、value:定義處理方法的請求的URL地址;
2、method:定義處理的方法的http method類型,如GET/POST方法;不指定的時候,可以處理任何方式的http請求;
3、params:定義請求的URL中必須包含的參數,用于窄化請求;
4、headers:定義請求的request headers 中必須包含的參數,與params類似;
5、consums:指定處理請求的提交類型(content-type),application/json,用于窄化請求;
6、produces:指定返回的內容類型,僅當request請求頭中的類型包含指定類型才返回;
params的使用
用于前臺向后臺的參數的傳遞;通過判斷傳遞的參數中有或者沒有“target”,來判斷是否進入該方法;
//請求中有target參數時,才能進入 @RequestMapping(value="/find1.action",params="target") public String find1(String target) {System.out.println("find1");System.out.println(target);return "result"; }//請求中不能有target參數 @RequestMapping(value="/find1.action",params="!target") public String find2() {System.out.println("find2");return "result"; }//請求中target值等于test時,進入find3 @RequestMapping(value="/find1.action",params="target=test") public String find3(String target) {System.out.println("find3");System.out.println(target);return "result"; }?
value配置詳解
value支持通配符的使用;
?:代表匹配文件名中的一個字符;
*:代表匹配文件名中的任意字符;
**:代表匹配多層路徑;
示例:
有這樣幾個跳轉鏈接,
<a href="find.action">find.action</a><br> <a href="find/id.action">find/id.action</a><br> <a href="find/ida.action">find/ida.action</a><br> <a href="find/idaa.action">find/idaa.action</a><br> <a href="find/id/abc.action">find/id/abc.action</a><br> <a href="find/id/abc/abc.action">find/id/abc/abc.action</a><br>分別對應到的controller方法:
@RequestMapping("/find/id?.action") public String match1() {System.out.println("match1:"+"/find/id?.action");return "result"; } @RequestMapping("/find/id*.action") public String match2() {System.out.println("match2:"+"/find/id*.action");return "result"; } @RequestMapping("/find/id/*.action") public String match3() {System.out.println("match3:"+"/find/id/*.action");return "result"; } @RequestMapping("/find/id/**/abc.action") public String match4() {System.out.println("match4:"+"/find/id/**/abc.action");return "result"; } @RequestMapping("/find.action") public String match5() {System.out.println("match5:"+"/find.action");return "result"; }
運行結果:
或關系
一個value的配置可以支持兩個URL路徑的映射;通過這兩個路徑,可以同時訪問到這個方法;
@RequestMapping(value= {"/get.action","/fetch.action"}) public String get() {System.out.println("get");return "result"; }正則表達式
頁面鏈接:
<a href="get/2-b.action">reg</a>controller代碼:
@RequestMapping("get/{\\d+}-{[a-z]}") public String regularExpression() {System.out.println("regularExpression");return "result"; }通過正則表達式還可以實現路徑參數的獲取;
@RequestMapping("get/{number:\\d+}-{text:[a-z]}") public String regularExpression2(@PathVariable String number,@PathVariable String text) {System.out.println("regularExpression");System.out.println("number:"+number);System.out.println("text:"+text);return "result"; }先在路徑中接收正則表達式的值,再通過@PathVariable獲取值;
運行結果:
?
RESTFUL支持
1、restful:輕量級的SOA(面向服務)的實現,將一個個的請求做出的相應以資源的形式返回;
2、請求資源:
以前:userServlet?type=”add”;
Restful:URL風格:將參數通過URL傳遞到服務器端;
3、SpringMVC支持restful風格,可以通過URL進行參數的傳遞;
示例:
<a href="user/add.action">add</a> @RequestMapping(value="/user/{type}.action") public String userMgr(@PathVariable("type") String initParam) {System.out.println("userMgr:"+initParam);return "result"; }路徑中的值add,就會作為參數被type接收;
先使用@PathVariable(“type”)中的type來接收通過URL路徑傳遞的type值,再給InitParam初始化參數;
?
三、基于注解的參數綁定
1、@RequestParam:設置綁定的參數名和傳入的參數名的值;
<a href="param.action?param=paramTest">測試</a><br> @RequestMapping("/param.action") public String param(@RequestParam("param")String value) {System.out.println("param:"+value);return "result"; }2、@ PathVariable
?
四、數據回顯深入理解
數據回顯的方法:
(1)、原生servlet的方式:
(2)、ModelAndView
(3)、Model/ModelMap:默認在request作用域實現數據傳遞
@RequestMapping("/back.action") public String back(Model model) {String msg="this is msg;";model.addAttribute("msg", msg);//默認的作用域范圍是requestreturn "result"; }在前臺頁面可直接通過EL表達式獲取值;
(4)、ModeAtrribute
可以用于方法的返回值:用來在處理@RequestMapping之前,為請求綁定需要從后臺查詢到的model;
將數據綁定到request作用域,每個請求都可以從作用域中拿出數據;
當前@RequestMapping的每一個返回都可以攜帶ModelAttribute中的屬性和屬性值;
@ModelAttribute("list") public List<User> findAllUser(){User user1=new User(1,"admin","admin");User user2=new User(2,"test","test"); List<User> list=new ArrayList<User>();list.add(user1);list.add(user2);return list; }在前臺頁面通過request.getAttribute獲取值;
(5)、@SessionAttributes:用于類和接口
將與ModelAttribute中的key相同的屬性值也放到session作用域中;
@Controller @SessionAttributes(value= {"list","msg"}) public class ParamController {@RequestMapping("/param.action")public String param(@RequestParam("param")String value) {System.out.println("param:"+value);return "result";}@ModelAttribute("list")public List<User> findAllUser(){User user1=new User(1,"admin","admin");User user2=new User(2,"test","test");List<User> list=new ArrayList<User>();list.add(user1);list.add(user2);return list;} }在前臺頁面通過session可以同時獲取到list和msg;
?
PS:因作者能力有限,如有誤還請諒解;
轉載于:https://www.cnblogs.com/WHL5/p/9088009.html
總結
以上是生活随笔為你收集整理的Spring框架深入(四)--SpringMVC配置详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二分查找(等于x,小于x,小于等于x,大
- 下一篇: go的http服务报错accept4: