Spring Interceptor 拦截器不能拦截 "/"问题

还是那个少年彬 2015-03-31 10:53:28
拦截器配置如下:
<mvc:annotation-driven />
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/manage/**"/>
<mvc:exclude-mapping path="/manage/goLogin.*"/>
<mvc:exclude-mapping path="/manage/login.*"/>
<mvc:exclude-mapping path="/manage/logout.*"/>
<bean class="com.sky.manage.interceptor.ManageInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>

拦截器实现代码片段如下:
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
//拦截未登录
HttpSession session=arg0.getSession();
Object obj=session.getAttribute("manager");
System.out.println(obj);
if(obj==null){

String from=arg0.getRequestURL().toString();
if(from.contains("manage/upload")){
String timestampStr=arg0.getParameter("timestamp");
String securitycodeStr=arg0.getParameter("securitycode");
if(!StringUtil.isEmpty(timestampStr)&&!StringUtil.isEmpty(securitycodeStr)){
long timestamp=Long.parseLong(timestampStr);
long t1=System.currentTimeMillis()-timestamp;
if(t1>0&&t1<3600000&&securitycodeStr.equals(StringUtil.getSecurityCode(timestamp))){
return true;
}
}

}
String queryString=arg0.getQueryString();
if(queryString!=null&&!"".equals(queryString)){
from+="?"+queryString;
}
from=com.xiaopu.common.util.UrlUtil.encode(from, "");
arg1.sendRedirect(arg0.getContextPath()+"/manage/goLogin.htm?from="+from);
}
return true;
}

浏览器中输入的127.0.0.1:8080/myspringmvc/manage/ 地址 不拦截,日志提示的是controller中找不到匹配URI,求解
...全文
564 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YxSimple 2015-03-31
  • 打赏
  • 举报
回复
引用 3 楼 mijinghjb 的回复:
@YxSimple 在拦截器实现类里打印日志,发现那个地址请求没有运行到拦截器实现类,控制台日志提示是[org.springframework.web.servlet.PageNotFound]-[WARN] No mapping found for HTTP request with URI [/myspringmvc/manage/] in DispatcherServlet with name 'springmvc'



我这边试了下,没问题,能进到拦截器




刚看了下你的日志,是映射配错了,把web.xml中DispatcherServlet 的名字改成myspringmvc就应该行了
  • 打赏
  • 举报
回复
@YxSimple 在拦截器实现类里打印日志,发现那个地址请求没有运行到拦截器实现类,控制台日志提示是[org.springframework.web.servlet.PageNotFound]-[WARN] No mapping found for HTTP request with URI [/myspringmvc/manage/] in DispatcherServlet with name 'springmvc'
A-wolf 2015-03-31
  • 打赏
  • 举报
回复
在你的拦截类中 如果没有达到可以放行的条件 请 return false;
YxSimple 2015-03-31
  • 打赏
  • 举报
回复
意思是说url是过了你的拦截器却没有拦截到,controller没找到映射?拦截器拦截是manage/ 这个配置不是/,应该能截到,如果拦截到后不用controller再处理的需要修改返回值,记不太清了是false还是true,仔细检查一下配置什么的吧

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧