1. 程式人生 > 實用技巧 >Spring MVC(三)

Spring MVC(三)

參考:http://c.biancheng.net/view/4406.html

討論前端傳送請求

1、傳送方式
常見的有get、post、put和delete
其中get方式的傳送資訊可見,在請求的URL上
而其它三種資訊不可見,put和delete是特殊的post
2、特殊
值直接在URL中,類似

http://a.b.c/doLogin/username/password

3、傳送格式
這主要是針對post和put、delete方式來說
json格式,或者xml格式

4、多媒體格式

前後端不分離資料接收

1、通過實體Bean接收請求引數

  • 適用於get和post提交請求方式
  • Bean的屬性名稱必須與請求引數名稱相同
@RequestMapping("/login")
public String login(UserForm user){}

2、通過處理方法的形參接收請求引數

  • 適用於get和post提交請求方式
  • 形參名必須與請求引數名稱相同
  • 該方法不會報404錯誤
@RequestMapping("/register")
public String register(String uname,String upass){}

3、通過HttpServletRequest接收請求引數

  • 適用於get和post提交請求方式
@RequestMapping("/register")
public String register(HttpServletRequest request){}

4、通過@PathVariable接收URL中的請求引數

@RequestMapping("/user/{uname}/{upass}")
public String register(@PathVariable String uname,@PathVariable String upass){}

5、通過@RequestParam接收請求引數

  • 適用於get和post提交請求引數
  • 該方式會報404錯誤
@RequestMapping("/register")
public String register(@RequestParam String uname,
    @RequestParam String upass){}

6、通過@ModelAttribute接收請求引數

  • 適用於get和post提交請求方式
  • 當 @ModelAttribute 註解放在處理方法的形參上時,用於將多個請求引數封裝到一個實體物件,從而簡化資料繫結流程,而且自動暴露為模型資料,在檢視頁面展示時使用
@RequestMapping("/register")
public String register(@ModelAttribute("user") UserForm user) {}

轉發與重定向

@RequestMapping("/index")
public class IndexController {
    @RequestMapping("/login")
    public String login() {
        //轉發到一個請求方法(同一個控制器類可以省略/index/)
        return "forward:/index/isLogin";
    }
    @RequestMapping("/isLogin")
    public String isLogin() {
        //重定向到一個請求方法
        return "redirect:/index/isRegister";
    }
    @RequestMapping("/isRegister")
    public String isRegister() {
        //轉發到一個檢視
        return "register";
    }
}

在 Spring MVC 框架中,不管是重定向或轉發,都需要符合檢視解析器的配置,如果直接轉發到一個不需要 DispatcherServlet 的資源,例如:

return "forward:/html/my.html";

則需要使用 mvc:resources 配置:

<mvc:resources location="/html/" mapping="/html/**" />