开启事务(默认情况是开启,可以不写),在类或者方法上面加@Transactional注解
Spring事务失效场景:Spring事务失效的各种场景(13种)_java_脚本之家
拦截器
@Configuration //定义此类为配置文件(即相当于之前的xml配置文件)
public class InterceptorConfig implements WebMvcConfigurer {
//mvc:interceptors
@Override
public void addInterceptors(InterceptorRegistry registry) {
//要拦截user下的所有访问请求,必须用户登录后才可访问,
// 但是这样拦截的路径中有一些是不需要用户登录也可访问的
String[] addPathPatterns = {
"/user/**"
};
//要排除的路径,排除的路径说明不需要用户登录也可访问
String[] excludePathPatterns = {
"/user/out", "/user/error","/user/login"
};
//mvc:interceptor bean class=""
registry.addInterceptor(new UserInterceptor()).
addPathPatterns(addPathPatterns).
excludePathPatterns(excludePathPatterns);
}
}
public class UserInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("进入拦截器------------------------------");
//编写业务拦截的规则
//从session中获取用户的信息
User user = (User) request.getSession().getAttribute("user");
//判断用户是否登录
if (null == user) {
//未登录
response.sendRedirect(request.getContextPath() + "/user/error");
return false;
}
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 {
}
}
@Controller
@RequestMapping(value = "/user")
public class UserController {
//用户登录的请求,需要排除
@RequestMapping(value = "/login")
public @ResponseBody Object login(HttpServletRequest request) {
//将用户的信息存放到session中
User user = new User();
user.setId(1001);
user.setUsername("zhangsan");
request.getSession().setAttribute("user",user);
return "login SUCCESS";
}
//该请求需要用户登录之后才可访问
@RequestMapping(value = "/center")
public @ResponseBody Object center() {
return "See Center Message";
}
//该请求不登录也可访问
@RequestMapping(value = "/out")
public @ResponseBody Object out(HttpSession session) {
session.invalidate();
return "Out see anytime";
}
//如果用户未登录访问了需要登录才可访问的请求,之后会跳转至该请求路径
//该请求路径不需要用户登录也可访问
@RequestMapping(value = "/error")
public @ResponseBody Object error() {
return "error";
}
}
encoding编码格式
#关闭springboot的http字符编码支持
#只有关闭该选项后,spring字符编码过滤器过生效
spring.http.encoding.enabled=false
默认为ture,spirngboot默认已经帮我们配置好了,若关闭则需使用过滤器解决
@Configuration //将此类定义为配置文件
public class SystemConfig {
@Bean
public FilterRegistrationBean characterEncodingFilterRegistrationBean() {
//创建字符编码过滤器
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
//设置强制使用指定字符编码
characterEncodingFilter.setForceEncoding(true);
//设置指定字符编码
characterEncodingFilter.setEncoding("UTF-8");
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
//设置字符编码过滤器
filterRegistrationBean.setFilter(characterEncodingFilter);
//设置字符编码过滤器路径
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}