16

您所在的位置:网站首页 vue页面重定向跳转 16

16

2024-07-15 20:51| 来源: 网络整理| 查看: 265

为了调试方便,禁用模板引擎的默认缓存机制,即修改页面会实时生效

spring: messages: basename: i18n.login # 禁用模板引擎缓存,修改页面会自动更新 thymeleaf: cache: false

edit configuration下do nothing 改成 update resources 在这里插入图片描述

1、登录页面的跳转

(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 English

ok,浏览器输入用户名(随意)和密码(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