@RequestMapping("/doUserUpdate") public ModelAndView doUserUpdate(HttpSession session, User user) throws Exception { User loginUser = (User) session.getAttribute("loginUser"); Long id = loginUser.getId(); user.setUpdateUser(id + ""); userService.updateUser(user); return userList(""); }
这是一个使用 Spring MVC 框架编写的控制器方法,映射了 "/doUserUpdate" 请求路径。该方法接受一个 HttpSession 对象和一个 User 对象作为参数,其中 HttpSession 对象用于获取当前登录用户的信息,User 对象则是要更新的用户信息。
方法的主要逻辑是首先从 HttpSession 中获取当前登录用户的信息,然后将其 ID 设置为要更新的用户的更新者 ID。接着调用 userService 的 updateUser 方法更新用户信息,最后返回一个包含所有用户信息的 ModelAndView 对象。
需要注意的是,该方法可能会抛出异常,因此需要在调用时进行异常处理。
@RequestMapping("/login") public String login(@RequestBody User user, @RequestParam String checkCode, HttpServletRequest request) throws IOException { HttpSession session = request.getSession(); String checkCodeGen = (String) session.getAttribute("checkCodeGen"); if (checkCodeGen.equalsIgnoreCase(checkCode)){ User result = userService.login(user.getUserName(), user.getPassword()); if (result != null){ session.setAttribute("userName",result.getUserName()); return "success" ; } }else{ return "验证码错误"; } return "用户名或密码错误"; } @RequestMapping("/checkCode") public void checkCode(HttpServletRequest request, HttpServletResponse response) throws IOException { String checkCodeGen = CheckCodeUtil.generateVerifyCode(4); HttpSession session = request.getSession(); session.setAttribute("checkCodeGen",checkCodeGen); System.out.println(session.getId()); ServletOutputStream os = response.getOutputStream(); CheckCodeUtil.outputImage(100,40,os,checkCodeGen); } @RequestMapping("/checkLogin") public String checkLogin(HttpSession session){ return (String)session.getAttribute("userName"); } @RequestMapping("/logout") public String logout(HttpSession session){ session.setAttribute("userName",null); return "success"; }
这段代码是一个基于Spring MVC框架的用户登录、验证码验证、注销功能的实现。其中:
- @RequestMapping是一个注解,用于映射请求的URL路径和Controller方法。
- @RequestBody注解用于将request请求的body部分转换成Java对象,并且可以通过@RequestParam注解获取请求参数。
- HttpSession是一个接口,用于存储和获取当前会话的数据。
- CheckCodeUtil是一个工具类,用于生成和输出验证码图片。
具体实现逻辑如下:
用户访问/login路径,请求会被映射到login方法。
login方法首先从request请求中获取用户提交的用户名和密码,以及验证码。
然后从session中获取之前生成的验证码,并与用户提交的验证码进行比较,判断是否输入正确。
如果验证码输入正确,则调用userService的login方法进行用户登录验证,如果成功则将用户名存入session,并返回"success"字符串表示登录成功。
如果验证码输入错误,则直接返回"验证码错误"字符串。
如果用户名或密码错误,则返回"用户名或密码错误"字符串。
用户可以在页面上访问/checkCode路径来获取验证码图片,该请求会被映射到checkCode方法。该方法通过CheckCodeUtil工具类生成验证码图片,并将验证码存入session中。
用户可以在页面上访问/checkLogin路径来检查当前用户是否已经登录,该请求会被映射到checkLogin方法。该方法从session中获取当前用户的用户名,并返回该值。
用户可以在页面上访问/logout路径来退出登录,该请求会被映射到logout方法。该方法将session中的用户名设为null,并返回"success"字符串表示注销成功。
使用ResponseEntity<>改写以下代码:@Controller @RequestMapping("/user") public class UserController { @RequestMapping(value = "/login", method = RequestMethod.POST) public ModelAndView login(User user,HttpSession httpSession) { ModelAndView modelAndView = new ModelAndView(); if (user.getUserName().equals("张三") && user.getPassword().equals("123")) { //modelAndView.addObject("user", user); httpSession.setAttribute("user",user); modelAndView.setViewName("success"); } else { modelAndView.setViewName("fail"); } return modelAndView; } }
@Controller @RequestMapping("/user") public class UserController {
@PostMapping("/login")
public ResponseEntity<String> login(User user, HttpSession httpSession) {
if (user.getUserName().equals("张三") && user.getPassword().equals("123")) {
httpSession.setAttribute("user", user);
return ResponseEntity.ok("success");
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("fail");
}
}
}
注意,这里返回的是一个ResponseEntity
相关推荐












