- GET 和 POST 是 HTTP 协议中两种主要的请求方法,其主要区别在于传输数据的方式不同。
GET
- GET 方法是通过 URL 传递参数,可以获取被请求的资源,通常用于获取数据,例如查询 API、获取网页内容等。其作用是向服务器发送一个请求,要求返回某个资源的表示形式,比如网页的 HTML 代码。GET 方法不支持传输敏感信息,比如信用卡信息等。
- 这是因为 GET 方法的安全性较高,不会对服务器造成太大的负担。
登录界面代码
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(Model model){
model.addAttribute("siteName", siteConfig.getSiteName());
model.addAttribute("siteUrl", siteConfig.getSiteUrl());
return "admin/system/login";
}
POST
- POST 方法通过 HTTP 请求体传递参数,是将数据提交到服务器,通常用于提交表单数据、上传文件等。其作用是向服务器发送一个请求,要求执行某个操作,比如提交表单、上传文件等。POST 方法可以传输敏感信息,比如信用卡信息等。
- POST 方法则可能会对服务器造成较大的负担。
登录界面代码
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> login(HttpServletRequest request,User user,String cpacha){
if(user == null){
return Result.error(CodeMsg.DATA_ERROR);
}
CodeMsg validate = ValidateEntityUtil.validate(user);
if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
return Result.error(validate);
}
if(StringUtils.isEmpty(cpacha)){
return Result.error(CodeMsg.CPACHA_EMPTY);
}
Object attribute = request.getSession().getAttribute("admin_login");
if(attribute == null){
return Result.error(CodeMsg.SESSION_EXPIRED);
}
if(!cpacha.equalsIgnoreCase(attribute.toString())){
return Result.error(CodeMsg.CPACHA_ERROR);
}
User findByUsername = userService.findByUsername(user.getUsername());
if(findByUsername == null){
return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
}
if(!findByUsername.getPassword().equals(user.getPassword())){
return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
}
request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);
request.getSession().setAttribute("admin_login", null);
operaterLogService.add("用户【"+user.getUsername()+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登录系统!");
log.info("用户成功登录,user = " + findByUsername);
return Result.success(true);
}