SSM要拦截资源首先要有一个拦截器
springmvc中声明拦截器
在springmvc的配置文件中声明要拦截的请求和处理拦截的拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/lanjie/**"/>
<bean class="handler.Intercepter"/>
</mvc:interceptor>
</mvc:interceptors>
假设要拦截的请求是lanjie/**
处理这个拦截的是handler包下的Intercepter类
拦截器的处理类
这个处理器类必须继承HandlerInterceptor方法 然后重写他的preHandle方法,这个方法按名字就是在请求传来控制器处理之前进行拦截
public class Intercepter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session =request.getSession();
if(session!=null){
return true;
}
PrintWriter io=response.getWriter();
io.println("没登陆");
io.close();
return false;
}
}
假设模拟拦截没登陆的用户
注意:SSM有两种处理静态资源
第一种处理方式:处理静态资源请求,加入标签后框架会自动创建
控制器对象:DefaultServletHttpRequestHandler,这个对象可以把接收的请求转发给tomcat
的DefaultServlet,这种方式还是依赖tomcat的DefaultServlet
必须有注解驱动,<mvc:annotation-driven/>,这种方式相当于把所有请求都给tomcat了
<!-- <mvc:default-servlet-handler/>-->
<mvc:annotation-driven/>
<!--
第二种处理方式:依赖框架自己,因此常用
加入后框架会创建ResourceHttpRequestHandler处理器对象处理静态资源,不依赖tomcat
mapping:访问静态资源的url地址,使用通配符**
location:静态资源在项目中的目录位置-->
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/html/**" location="/html/"/>