1.@RequestMapping 用法
SpringMVC中,@RequestMapping用來處理請求,比如XXX.do
2:接收帶參數的請求,接收用戶請求參數 值
請求1: /test/start.do?name=zhangsan
請求2: /test/start/zhangsan.do
在請求2中 將參數作爲請求URL傳遞,感覺用的不習慣
採用 URL模板
@RequestMapping("/start/{name}")//這個name 隨便 啥都可以
- public String start(@PathVariable("name") string name){ //和上面的對應
- return ;//方法體裏面就可以直接獲得參數
- }
包含多個 @RequestMapping ("/start/{name}/{age}")
3不同請求方法,用不同處理方法 get post
@RequestMapping (value="/start" ,method=RequestMethod.GET)//處理post 就換成 POST
另外,如果Servlet想要做到/test/start/zhangsan.do這種請求的話
需要 URL 重寫才能做到,或者用 /start/* 作爲 Servlet 請求控制器,在其中進行截取和判斷。
第二種方法:自己寫一個 URL 重寫的 Filter
第三種方法:使用現成的 urlrewriter 工具
第四種方法:使用 Web 服務器的 URL 重寫功能
Servlet中用Filter重寫示例
web.xml中:
controller接收參數的使用
springmvc提供了@RequestParam註釋幫助我們獲取參數。
用法@RequestParam("接收的參數名")
例如:
@RequestMapping(params="servlet=login")
public String login(@RequestParam("username")String username,@RequestParam("password")String password,HttpServletRequest request,ModelMap map){
//處理登錄邏輯,省略
return "success";
}
當客戶端的URL提交了username參數,password參數,那麼我們的Controller就可以接收並處理了。
要注意,提交的username參數和password參數不可以是null,即一定要傳這兩個參數,不然會拋異常。
另外,@RequestParam可以省略參數名,那麼就會以它註釋的變量名作爲參數名。
視圖名的確定。
spring mvc可以通過可以通過多種方式確定視圖名,在前面的例子中,方法無返回值,視圖名更具請求參數確定。Controller方法還是返回一個String類型的值作爲視圖名
如
@RequestMapping("edit")
public void edit(@RequestParam int id) {...}
則返回的視圖爲../edit.jsp