参考: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/**" />