tomcat8.0.11,jdk7,想使用servlet3.1的技术。
我写了一个过滤器,如下:
package net.xxzl.servlet.filter;
import java.io.IOException;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 如果登录的session值失效了,则提示重新登录
* 如果是 resin 服务器,请在 resin.xml 里将 session 的持久化配置注释掉
* 并且加入超时配置
*/
@WebFilter(
filterName = "Filter0",
dispatcherTypes = {
DispatcherType.FORWARD,
DispatcherType.INCLUDE,
DispatcherType.REQUEST,
DispatcherType.ERROR,
DispatcherType.ASYNC
},
urlPatterns={
"/common/*Servlet",
"/prog/*/*Servlet",
"/frames/*/*.jsp",
"/pages/*/*.jsp"
},
asyncSupported = true
)
public class Filter0 implements Filter {
/**
* Default constructor.
*/
public Filter0() {
}
/**
* @see Filter#destroy()
*/
public void destroy() {
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("Filter0");
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
//若存在会话则返回该会话,否则不新建会话并返回NULL
HttpSession session = req.getSession( false );
//如果session存在则继续,否则跳转到错误页面
if ( session != null && session.getAttribute( "userinfo" ) != null ) {
//清除缓存
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Pragma", "no-cache");
res.setDateHeader("Expires", -1);
chain.doFilter(req, res);
} else {
if ( session != null ) {
//清除session
session.invalidate();
}
request.getRequestDispatcher("/include/error3.jsp").forward(req, res);
}
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
}
}
然后启动TOMCAT,结果总是提示:
03-Dec-2015 16:20:59.238 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sbz]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1071)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1722)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> /frames/*/*.jsp in filter mapping
at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2914)
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2863)
at org.apache.catalina.startup.ContextConfig.configureContext(ContextConfig.java:1267)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1172)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:767)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5074)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more
按网上搜索的答案,完全排除了项目使用的 jar 版本不匹配的问题。。现在我找不到原因。
请求帮助!!谢谢
<spanstyle="font-family:'MicrosoftYaHei',Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">urlPatterns不能配成/prog/*/*Servlet
<spanstyle="font-family:'MicrosoftYaHei',Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#FFFFFF;">只能是/xxx/或.xxx那为什么resin这样配置就没有问题呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。