建工程
建工程什么的就不多说了,可以参考我的另一篇博文:https://yangyongli.blog.csdn.net/article/details/126789154
项目目录:
编写controller
package com.yyl.firstdemo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("user")
public class UserController {
/**
* 登录验证
*
* @param username
* @param password
* @param session
* @param model
* @return
*/
@RequestMapping("login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session, Model model) {
//模拟数据库查询
if (username.equals("yangminghui") && password.equals("111")) {
session.setAttribute("username", "yangminghui");
return "redirect:/user/welcome";
} else {
model.addAttribute("msg", "用户名或者密码错误");
return "login";
}
}
/**
* 登录的页面
*
* @param model
* @return
*/
@RequestMapping("login-html")
public String loginHtml(Model model) {
model.addAttribute("msg", "");
return "login";
}
/**
* 欢迎首页
*
* @return
*/
@RequestMapping("welcome")
public String welcome() {
return "welcome";
}
}
登录页面与欢迎页面
登录页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/user/login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录"><br>
<span th:if="${msg}!=''" th:text="${msg}"></span>
</form>
</body>
</html>
欢迎页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>
欢迎欢迎!
</h1>
<img src="../test1.jpg">
</body>
</html>
编写登录拦截器
package com.yyl.firstdemo.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取session
HttpSession session = request.getSession();
//判断session总是否存在用户名
String username = (String) session.getAttribute("username");
if (username == null) {
//没有登录或者登录过期跳转登录页面
request.setAttribute("msg", "");
//重定向到请求/user/login-html
response.sendRedirect("/user/login-html");
//返回false,不执行后面的拦截器和Controller对应的方法
return false;
}
//放行
return true;
}
}
配置拦截器
package com.yyl.firstdemo.config;
import com.yyl.firstdemo.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class LoginInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
//拦截器要拦截url
.addPathPatterns("/**")
//排除拦截器要拦截的url
.excludePathPatterns("/user/login-html", "/user/login", "/css/**", "/js/**", "/img/**");
}
}
访问测试
登录失败:
登录成功: