springmvc拦截器使用小结
想做个session拦截验证。 想到了过滤器, 首先百度了一下,照着一做,
先定了个过滤器类,继承HandlerInterceptorAdapter
public class SessionInterceptor extends HandlerInterceptorAdapter {
private final static String ignoreUrl=ConfigReader.get("session.ignore.url");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url=request.getServletPath();
if(ignoreUrl.contains(url)){
return true;
}
Users user=(Users)request.getSession().getAttribute("users");
if(user==null){
response.sendRedirect(request.getContextPath()+"/commons/sessionout.jsp");
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 {
} */
}
然后在springmvc配置文件中配置过滤器:
<!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" autowire="default" >
<!-- <property name="mappings">
<props>
<prop key="/users/userCenter.do">usersController</prop>
</props>
</property> -->
<property name="interceptors">
<list>
<ref bean="handlerInterceptor"/>
</list>
</property>
</bean>
但运行总是拦截不到。进入不了拦截器,
后来,换了一种配置方式,终于能拦截请求了。
<mvc:interceptors>
<bean id="handlerInterceptor" class="com.zlwh.member.interceptor.SessionInterceptor"/>
</mvc:interceptors>
方法更简单,当然里面还可以添加配置<property name="mappings"> ,指定拦截具体的url.
可能跟前面的配置有关吧,导致前一方式不起作用,
后一方式,则可以保证必定会在某一个地方拦截。所以推荐大家如果前一方式不起作用时,就用后一方式试试。
当时也可以在这进一步配置,要拦截的url及初始注入配置参数值
<mvc:mapping path="/register/eztxregister/doRegisterParentCreateChild.do" />
<mvc:mapping path="/register/eztxregister/doRegisterValidateParent.do" />
<mvc:mapping path="/register/eztxregister/saveRegisterTeacher.do" />
<mvc:mapping path="/register/eztxregister/saveStudent.do" />
<bean id="hbshregisterInterceptor" class="com.zlwh.member.interceptor.HbxhSyncterceptor">
<property name="isSync">
<value>${hbxh.register.flag}</value>
</property>
</bean>
</mvc:interceptor>
想做个session拦截验证。 想到了过滤器, 首先百度了一下,照着一做,
先定了个过滤器类,继承HandlerInterceptorAdapter
public class SessionInterceptor extends HandlerInterceptorAdapter {
private final static String ignoreUrl=ConfigReader.get("session.ignore.url");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url=request.getServletPath();
if(ignoreUrl.contains(url)){
return true;
}
Users user=(Users)request.getSession().getAttribute("users");
if(user==null){
response.sendRedirect(request.getContextPath()+"/commons/sessionout.jsp");
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 {
} */
}
然后在springmvc配置文件中配置过滤器:
<!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" autowire="default" >
<!-- <property name="mappings">
<props>
<prop key="/users/userCenter.do">usersController</prop>
</props>
</property> -->
<property name="interceptors">
<list>
<ref bean="handlerInterceptor"/>
</list>
</property>
</bean>
但运行总是拦截不到。进入不了拦截器,
后来,换了一种配置方式,终于能拦截请求了。
<mvc:interceptors>
<bean id="handlerInterceptor" class="com.zlwh.member.interceptor.SessionInterceptor"/>
</mvc:interceptors>
方法更简单,当然里面还可以添加配置<property name="mappings"> ,指定拦截具体的url.
可能跟前面的配置有关吧,导致前一方式不起作用,
后一方式,则可以保证必定会在某一个地方拦截。所以推荐大家如果前一方式不起作用时,就用后一方式试试。
当时也可以在这进一步配置,要拦截的url及初始注入配置参数值
<mvc:mapping path="/register/eztxregister/doRegisterParentCreateChild.do" />
<mvc:mapping path="/register/eztxregister/doRegisterValidateParent.do" />
<mvc:mapping path="/register/eztxregister/saveRegisterTeacher.do" />
<mvc:mapping path="/register/eztxregister/saveStudent.do" />
<bean id="hbshregisterInterceptor" class="com.zlwh.member.interceptor.HbxhSyncterceptor">
<property name="isSync">
<value>${hbxh.register.flag}</value>
</property>
</bean>
</mvc:interceptor>