16 |
您所在的位置:网站首页 › vue页面重定向跳转 › 16 |
为了调试方便,禁用模板引擎的默认缓存机制,即修改页面会实时生效 spring: messages: basename: i18n.login # 禁用模板引擎缓存,修改页面会自动更新 thymeleaf: cache: falseedit configuration下do nothing 改成 update resources (1)首先创建一个controller文件夹下的LoginController类 @Controller public class LoginController { @PostMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Map map) { if (!StringUtils.isEmpty(username) && password.equals("123")) { return "dashboard"; } else { map.put("msg", "用户名或密码错误"); return "login"; } } }(2)在login.html修改action和添加name属性 Signin Template for Bootstrap Please sign in Username Password [[#{login.remember}]] Sign in © 2017-2018 中文12 Englishok,浏览器输入用户名(随意)和密码(123)后 ???????css样式呢??? F5刷新,还有这种提示 ??? 为了刷新不显示重复提交表单的提示,我们可以通过重定向跳转解决这一问题 2、重定向跳转(1)在MyMvcConfig配置类中再注册一个返回dashboard视图的视图控制 //使用WebMvcConfigurer可以来扩展SpringMVC的功能 //@EnableWebMvc 不要接管SpringMVC @Configuration public class MyMvcConfig implements WebMvcConfigurer { //所有的WebMvcConfigurer组件都会一起起作用 @Bean //将组件注册在容器 public WebMvcConfigurer webMvcConfigurer() { WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer() { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login"); registry.addViewController("/index.html").setViewName("login"); registry.addViewController("/main.html").setViewName("dashboard"); } }; return webMvcConfigurer; } @Bean public LocaleResolver localeResolver() { return new MyLocaleResolver(); } }即这一段 registry.addViewController("/main.html").setViewName("dashboard");(2)回到LoginController,使用redirect重定向 @Controller public class LoginController { @PostMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Map map) { if (!StringUtils.isEmpty(username) && password.equals("123")) { return "redirect:/main.html"; } else { map.put("msg", "用户名或密码错误"); return "login"; } } }ok,再登陆一次,哇草 样式也有了,是不是很神奇,我也觉得!! 3、数据校验在登陆页面中,如果我们想对用户名和密码进行校验,怎么做呢?? (1)加入一个p标签并写th:if判断 4、编写登录拦截器应该大家都懂为什么要配置登录拦截器,这里不想多说,怎么做呢? (1)首先我们得通过HttpSession记录正在登录的用户信息 LoginController @Controller public class LoginController { @PostMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Map map, HttpSession session) { if (!StringUtils.isEmpty(username) && password.equals("123")) { session.setAttribute("loginUser", username); return "redirect:/main.html"; } else { map.put("msg", "用户名或密码错误"); return "login"; } } }(2)在components文件夹下创建一个登录拦截器实现HandlerInterceptor接口 public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("loginUser"); if (user == null) { //未登陆,返回登陆页面 request.setAttribute("msg", "没有权限请先登陆"); request.getRequestDispatcher("/index.html").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 { } }(3)创建完拦截器后,我们还要在MyMvcConfig类中注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**") .excludePathPatterns("/index.html", "/", "/user/login", "/asserts/**", "/webjars/**"); }Ok,大功告成 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |