本文共 3713 字,大约阅读时间需要 12 分钟。
说明:页面存在缓存,所以我们需要禁用模板引擎的缓存
application.properties#关闭模板引擎缓存spring.thymeleaf.cache=false
模板引擎修改后,想要实时生效!页面修改完毕后,
IDEA小技巧 : Ctrl + F9 重新编译!即可生效!我们这里就先不连接数据库了,输入任意用户名都可以登录成功!
1、我们把登录页面的表单提交地址写一个controller!2、去编写对应的controller
package com.loey.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.thymeleaf.util.StringUtils;import javax.servlet.http.HttpSession;@Controllerpublic class LoginController { @PostMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session){ if(!StringUtils.isEmpty(username) && "123456".equals(password)){ //登录成功,将用户信息放入Session session.setAttribute("loginUser",username); return "dashboard"; // 跳转到首页 }else{ // 登录失败,存放错误信息 model.addAttribute("msg","用户名或密码错误"); return "index"; } }}
OK ,测试登录成功!
3、登录失败的话,我们需要将后台信息输出到前台,可以在首页标题下面加上判断
thymeleaf工具类重启登录失败测试:
优化,登录成功后,由于是转发,链接不变,我们可以重定向到首页!
4、我们再添加一个视图控制映射,在我们的自己的MyMvcConfig中:@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); registry.addViewController("index.html").setViewName("index"); registry.addViewController("/main.html").setViewName("dashboard"); registry.addViewController("/main").setViewName("dashboard"); }
首页dashboard.html:
Dashboard Template for Bootstrap 首页
5、将 Controller 的代码改为重定向
//登录成功!防止表单重复提交,我们重定向 return "redirect:/main.html";//跳转到登录成功页面
重启测试,重定向成功!后台主页正常显示!
但是又发现新的问题,我们可以直接登录到后台主页,不用登录也可以实现!怎么处理这个问题呢?我 们可以使用拦截器机制,实现登录检查!
1、我们先自定义一个拦截器:package com.loey.config;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public 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; } }}
2、然后将拦截器注册到我们的SpringMVC配置类当中!
myMvcConfig@Override public void addInterceptors(InterceptorRegistry registry) { // 注册拦截器,及拦截请求和要剔除哪些请求! // 我们还需要过滤静态资源文件,否则样式显示不出 registry.addInterceptor(new LoginHandlerInterceptor()) .addPathPatterns("/**") .excludePathPatterns("404.html","/index.html","/","/user/login","/css/*","/img/*","/js/*"); }
3、我们然后在后台主页,获取用户登录的信息
[[${session.loginUser}]]
然后我们登录测试拦截!
没登录前 登录后在地址栏直接输入会跳转到首页转载地址:http://amuki.baihongyu.com/