-
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);
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");
return "redirect:/toLogin";
}
}
-
4.自定义config
-
MyMvcConfig.java(拦截器)
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/toLogin").setViewName("login");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/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");
if (student==null){
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>
 
|