-
1.构建实体类(使用了一个lombok插件)
@Data @AllArgsConstructor @NoArgsConstructor public class User { private Integer id; private String username; private String password; }
-
2.编写前端页面
-
login.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <form th:action="@{/doLogin}" method="post"> <h1>登录</h1> <p style="color: red" th:text="${msg}"></p> <input type="text" th:name="username"><br> <input type="password" th:name="password"><br> <input type="submit" th:value="登录"> </form> </body> </html>
-
success.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>登陆成功</h1> <br> <a th:href="@{/stu/logOut}">退出</a> </body> </html>
-
-
3.构建controller
@Controller public class StudentController { @RequestMapping("/doLogin") public String doLogin(String username, String password, HttpSession session, Model model){ User user = new User(1, "admin", "123456"); //应该从数据库中比对后查询出 if (username.equals(user.getUsername()) && password.equals(user.getPassword())){ session.setAttribute("student",user); //如果用户名与密码输入正确,就存入session return "redirect:/stu/toSuccess"; }else { model.addAttribute("msg","用户名或密码错误"); return "login"; //如果错误,重回登录页面 } } @RequestMapping("/stu/toSuccess") public String toSuccess(){ //登录成功后前往页面 return "success"; } @RequestMapping("/stu/logOut") public String logOut(HttpSession session){ session.removeAttribute("student"); //退出清除session return "redirect:/toLogin"; } }
-
4.自定义config
-
MyMvcConfig.java(拦截器)
//扩展springMv @Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login");//访问/路径前往login页面 registry.addViewController("/toLogin").setViewName("login"); } //注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/stu/**") //拦截stu下的所有请求 .excludePathPatterns("/index.html","/","/user/login","/css/**","/js/**","/img/**");//静态资源不拦截 } }
-
LoginHandlerInterceptor.java(使拦截器生效)
public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object student = request.getSession().getAttribute("student"); //获取student的session if (student==null){ //session为空则未登录,拒绝请求 request.setAttribute("msg","没有权限,请先登录"); request.getRequestDispatcher("/").forward(request,response); return false; }else { return true; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
-
-
依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>