版权声明:看什么?6,你和我,走一波! https://blog.csdn.net/qq_31323797/article/details/84653219
1 更改页面,实时生效
a): 禁用模板引擎缓存
spring.thymeleaf.cache=false
b): 更改页面完成后,按 Ctrl + F9 进行编译
2 登录
package com.gp6.springboot18.controller;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
public class LoginController {
//@RequestMapping(value = "/user/login",method = RequestMethod.POST)与@PostMapping(value = "/user/login")等效
@PostMapping(value = "/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.setAttribute("loginUser", username);
return "redirect:/main.html";
} else {
//登录失败
map.put("msg", "用户名密码错误");
return "login";
}
}
}
3 自定义拦截器
3.1 MyHandlerInterceptor
package com.gp6.springboot18.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 自定义拦截器
*/
public class MyHandlerInterceptor implements HandlerInterceptor {
//目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 判断session是否包含用户名
Object user = request.getSession().getAttribute("loginUser");
if(user == null){
//未登陆,返回登陆页面
request.setAttribute("msg","没有权限请先登陆");
request.getRequestDispatcher("/login.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.2 将自定义拦截器注入容器
package com.gp6.springboot18.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyConfig implements WebMvcConfigurer {
/*
所有的WebMvcConfigurer组件会一起生效
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login.html").setViewName("login");
registry.addViewController("/main.html").setViewName("dashboard");
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
/*
SpringBoot已配置静态资源映射,编写拦截器时,无需考虑静态资源
*/
registry.addInterceptor(new MyHandlerInterceptor()).
// 拦截的请求(/** : 所有)
addPathPatterns("/**")
// 放行的请求
.excludePathPatterns("/login.html","/","/user/login");
}
/*
将自定义的区域信息解析器注入到容器中
*/
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}