Spring MVC(三)

发布时间 2023-04-19 09:05:16作者: 挖洞404

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