目录
一、拦截器
1、创建实现类实现HandlerInterceptor 接口
2、注册拦截器对象
二、过滤器
拦截器与过滤器区别
三、打包运行windows版(jar包,war包)
1、打包为jar包
2、打包为 war包
一、拦截器
拦截器(Interceptor )是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行
作用:
在指定的方法调用前后执行预先设定的代码
阻止原始方法的执行
示例:
1、创建实现类实现HandlerInterceptor 接口
public class SysIntercerptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
//判断用户是否登录
User user = (User) session.getAttribute(Constants.USER_SESSION);
if (user == null){
System.out.println("用户未登录");
String path = request.getContextPath() + "/";
response.sendRedirect(path);
return false;
}
return true;
}
}
2、注册拦截器对象
@Configuration
public class SmbmsInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截的路径表达式
String[] path = {"/sys/**","/provider/**"};
//不拦截的路径表达式
String[] excludePath = {"/sys/add.do"};
//放行
registry.addInterceptor(new SysIntercerptor()).addPathPatterns(path).excludePathPatterns(excludePath);
}
}
二、过滤器
定义一个过滤器类Filter,在类的上方使用 @WebFilter指定过滤路径和@Component注解即可
注意:若创建的过滤器类不在启动类所在的包下面,则需要在启动类上面增加注解
@ServletComponentScan(basePackages=过滤器类所在包路径)
示例:
@Component
@WebFilter(value = {"/sys/**","/provider/**"})//过滤请求路径
public class SmbmsFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
//获取请求参数
Map<String,String[]> stringMap = request.getParameterMap();
//遍历请求方式
if (stringMap != null){
stringMap.forEach((k,v) ->{
System.out.println(k);
if (v != null){
for (String s : v) {
System.out.println(s);
}
}
});
}
//放行
filterChain.doFilter(servletRequest,servletResponse);
}
}
拦截器与过滤器区别
归属不同:Filter属于Servlet技术,Interceptor属于SpringMVc技术
拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强
三、打包运行windows版(jar包,war包)
1、打包为jar包
1、springboot默认打包为jar包,点击package
2、 找到打包好的文件,在搜索框输入cmd
3、 输入java -jar 文件名称
结束运行:ctrl+c
2、打包为 war包
1、主启动类继承 SpringBootServletInitializer
示例:
public class SpringBootSmbmsApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootSmbmsApplication.class, args);
}
}
继承 SpringBootServletInitializer 可以使用外部 tomcat。
SpringBootServletInitializer 就是原有的 web.xml 文件的替代。使用了嵌入式 Servlet,默认是不支
持 jsp。
2、修改pom文件中的packaging标签为:<packaging>war</packaging>
properties标签中配置跳过测试
<skipTests>true</skipTests>
3、打包
找到打包好的war包放入本地tomcat中webapp包中,找到tomcat的bin目录,点击startup.bat运行