个人博客开发记录-遇到的问题

Request method 'GET' not supported

在写controller的时候遇到的问题

 @PostMapping("/login")
    public String login(@RequestParam(required = false) String username,
                        @RequestParam(required = false) String password,
                        HttpSession session,
                        RedirectAttributes attributes) {
        User user = userService.checkUser(username, password);
        if (user != null) {
            user.setPassword(null);
            session.setAttribute("user",user);
            return "admin/index";
        } else {
            attributes.addFlashAttribute("message", "用户名和密码错误");
            return "redirect:/admin";
        }
    }

运行之后会报错需要将PostMapping改为RequestMapping则可以解决

原因分析:

关于post和get的区别:
get请求就是url中可以看见你的用户名和密码,而post更为安全,看不见用户名和密码.本质上都是Tcp链接,并无区别
但是get会产生一个数据包,而post则会产生两个数据包
get是将请求头和data一起发送过去,服务器响应200
post则是先将请求头发送,服务器响应100,然后在发送数据,响应200,返回数据


Required request parameter 'username' for method parameter type String is not present

在写controller的时候遇到的问题

  @RequestMapping("/login")
    public String login(@RequestParam() String username,
                        @RequestParam() String password,
                        HttpSession session,
                        RedirectAttributes attributes) {
        User user = userService.checkUser(username, password);
        if (user != null) {
            user.setPassword(null);
            session.setAttribute("user",user);
            return "admin/index";
        } else {
            attributes.addFlashAttribute("message", "用户名和密码错误");
            return "redirect:/admin";
        }
    }

运行之后报错,需要将@RequestParam删除则可以解决

原因分析

两者的区别

@RequestMapping("/list")
public String test(int userId) {
  return "list";
}
@RequestMapping("/list")
public String test(@RequestParam int userId) {
  return "list";
}

区别:

  • 不加的话参数为非必传,就和加了required=false一样,第二种是参数必须传,参数名字为userId
  • 第二种可以通过@RequestParam("userId")或@RequestParam(value = "userId")指定参数名。
posted @ 2021-10-08 16:14  1_f  阅读(347)  评论(0)    收藏  举报