请问,java高手,spring mvc拦截器如何拦截所有的请求啊,包括html和jsp页面?
目前配置的只能拦截controller的请求。我配置如下:<mvc:interceptors><mvc:interceptor><mvc:mappingpath="/**...
目前配置的只能拦截controller的请求。
我配置如下:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="loginInterceptor" class="com.blibao.dianping.web.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
----
/**
* 登陆拦截器.
*
* @author leizhimin 2014/6/26 16:08
*/
public class LoginInterceptor extends HandlerInterceptorAdapter {
// private static final String[] IGNORE_URI = {"/login.jsp", "/Login/","backui/","frontui/"};
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURL().toString();
boolean flag = false;
System.out.println(">>>: " + url);
/* for (String s : IGNORE_URI) {
if (url.contains(s)) {
flag = true;
break;
}
}
if (!flag) {
T_supplier_user user = LoginController.getLoginUser(request);
if (user != null) flag = true;
}*/
//跳转登录
if(url.contains("user/toLogin.do")){
return true;
}
request.getRequestDispatcher("/user/toLogin.do").forward(request, response);
return flag;
} 展开
我配置如下:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean id="loginInterceptor" class="com.blibao.dianping.web.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
----
/**
* 登陆拦截器.
*
* @author leizhimin 2014/6/26 16:08
*/
public class LoginInterceptor extends HandlerInterceptorAdapter {
// private static final String[] IGNORE_URI = {"/login.jsp", "/Login/","backui/","frontui/"};
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURL().toString();
boolean flag = false;
System.out.println(">>>: " + url);
/* for (String s : IGNORE_URI) {
if (url.contains(s)) {
flag = true;
break;
}
}
if (!flag) {
T_supplier_user user = LoginController.getLoginUser(request);
if (user != null) flag = true;
}*/
//跳转登录
if(url.contains("user/toLogin.do")){
return true;
}
request.getRequestDispatcher("/user/toLogin.do").forward(request, response);
return flag;
} 展开
6个回答
展开全部
web.xml里面这样配置 他就拦截所有请求了
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
追问
还是没有用,只能拦截controller的请求,拦截不了jsp的请求
展开全部
web.xml配置/*,如果是/默认不拦截jsp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果拦截所有的话,你应该用filter。
追问
filter有个问题,就是我拦截到session中有该用户时,我要帮她自动登录,此时service还没放入spring的容器中
追答
service还没放入spring容器,这个说法不会存在吧。 controller不会在filter的spring容器中倒是可能的。至于service,不太可能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
这样就会拦截所有请求了
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
这样就会拦截所有请求了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似这个HandlerInterceptorAdapter不能拦截对静态资源的拦截,只能拦截controller,用HandlerInterceptor可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询