登录
开发期间模板引擎页面修改以后,要实时生效
1)禁用模板缓存
2)idea中页面修改以后按住ctrl+f9:重新编译
登录错误消息的显示
<!--th:if进行判断,如果msg为空,p标签不生效,th:if的优先级比text高-->
<p style="color: red" th:text="${msg}" th:if="not ${#strings.isEmpty(msg)}"></p>
问题解决:表单提交的页面没有属于请求转发,不会加载css样式,可以使用重定向的方式,刷新时页面不会提示重复提交表单(谷歌浏览器中)
设置拦截器
ublic class LoginHandlerInterceptor implements HandlerInterceptor {
//目标方法执行之前进行检查
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("LoginUser");
if(loginUser==null){
//未登录,返回登录页面
request.setAttribute("msg","请先登录");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{
//已登录,放行请求
return true;
}
配置类中
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截任意路径的请求,排除"/index.html","/","/user/login"
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").
excludePathPatterns("/index.html","/","/user/login");
}
controller中
@PostMapping("/user/login")
public String Login(@RequestParam("username") String username,
@RequestParam("password")String password,
Map<String,Object> map, HttpSession session){
if(!StringUtils.isEmpty(username)&&"123456".equals(password))
{
//将用户名保存到session中
session.setAttribute("LoginUser",username);
//登录成功,防止表单重复提交,可以重定向页面
return "redirect:/main.html";
}else
{
map.put("msg","用户名密码错误");
return "login";
}
}
}
问题:一开始的时候css被拦截,排除“/assert/**”以后显示css样式,但是去掉以后重新部署还是可以显示,非常迷惑,不知道是idea的问题还是有哪里没搞懂。。。