登录功能
Controller:
拦截器:
controller:
@GetMapping("/login")
public String login(){
return "login";
}
@RequestMapping("/tologin")
public String tologin(@RequestParam("username") String username,
@RequestParam("password") String password,
Model model, HttpSession session){
if (!StringUtils.isEmpty(username) && "123456".equals(password)){
session.setAttribute("loginUser",username); //登录成功后session获取到值
return "redirect:/index";
}else {
model.addAttribute("msg","用户名或密码错误");
return "login";
}
}
config
LoginHandlerIntercaptor
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//登录成功后应该有用户的session
Object loginUser = request.getSession().getAttribute("loginUser"); //loginUser接收session的值
if(loginUser==null){ //如果没有登录 //如果loginUser session的值为空,返回主页面登录
request.setAttribute("msg","请先返回主页面登录");
request.getRequestDispatcher("/login.html").forward(request,response); //只要执行到此语句之后则立刻进行跳转,可以传递request属性。服务器端跳转,地址栏内容不变(即客户端浏览器的地址栏不会显示跳转后地址的URL)。客户端请求到达以后,服务器发现当前资源给不出回应,要在服务器内部请求另一个资源的跳转,即服务器端跳转。所以,这种跳转与否客户端不知道(URL不变),属于一次request。
return false;
}else {
return true;
}
}
}
config
MyConfig
@Override
public void addInterceptors(InterceptorRegistry registry) { //拦截器
registry.addInterceptor(new LoginHandlerInterceptor()) //获取
.addPathPatterns("/**") //拦截全部
.excludePathPatterns("/login.html","/tologin","/img/**","/layui/**","/style.css"); //放行的功能
}
登录页面:login
使用了layui组件
<body>
<div class="box">
<h2>后台管理</h2>
<p style="color: red" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
<form action="tologin" method="post">
<div class="inputBox">
<input type="text" name="username" required="">
<label>Username</label>
</div>
<div class="inputBox">
<input type="password" name="password" required="">
<label>password</label>
</div>
<input type="submit" name="" value="登录">
<input type="submit" value="注册" style="float:right;">
</form>
</div>
<!-- 你的HTML代码 -->
<script src="./layui/layui.js"></script>
<script>
//一般直接写在一个js文件中
layui.use(['layer', 'form'], function(){
var layer = layui.layer
,form = layui.form;
// layer.msg('Hello World');
});
</script>
</body>
直接请求index,失败返回登录页面
输入账号密码,登录成功,进入index页面
版权声明:本文为weixin_49071539原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。