目录
1、创建实现类实现HandlerInterceptor 接口
一、拦截器
拦截器(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运行
转载:https://blog.csdn.net/qi341500/article/details/128921355