这是一个正常工作的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<filter>
<filter-name>rememberMeCookieFilter</filter-name>
<filter-class>be.example.fun.jsp.filters.RememberMeCookieFilter</filter-class>
</filter>
<filter>
<filter-name>mustBeSignedInFilter</filter-name>
<filter-class>be.example.fun.jsp.filters.MustBeSignedInFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>rememberMeCookieFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>mustBeSignedInFilter</filter-name>
<url-pattern>/private/*</url-pattern>
</filter-mapping>
</web-app>
当我删除<filter>
元素并使用以下注释时:
@WebFilter(filterName="rememberMeCookieFilter")
public class RememberMeCookieFilter implements Filter
@WebFilter(filterName="mustBeSignedInFilter")
public class MustBeSignedInFilter implements Filter
然后,Tomcat 7.0.14给我以下错误:
java.lang.IllegalArgumentException: Filter mapping must specify either a <url-pattern> or a <servlet-name>
at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2956)
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2915)
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1180)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270)
...
我遵循了[这个问题](http://codingdict.com/questions/115618的答案,但这对我不起作用。
这是我的Web应用程序的依赖项:
<dependencies>
<!-- SLF4J (+ LOGBack) for logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>1.8.3</version>
</dependency>
<!-- The servlet API that I installed in my local repo -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<type>jar</type>
<scope>provided</scope>
<!--optional>false</optional-->
</dependency>
<!-- JUnit for testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
编辑:我只有在使用Tomcat(7.0.14)时才有问题。玻璃鱼很好。
这是Tomcat7中的错误。我将其报告为问题53354。
由于无法在中指定调用顺序
@WebFilter
,因此用户被迫<filter- mapping>
在web.xml中明确指定。可以与@WebFilter(filterName)
Glassfish和JBoss AS
中的结合使用,如下所示:@WebFilter(filterName="filter1") public class Filter1 implements Filter {} @WebFilter(filterName="filter2") public class Filter2 implements Filter {}
与
<filter-mapping> <filter-name>filter1</filter-name> <url-pattern>/url1/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>filter2</filter-name> <url-pattern>/url2/*</url-pattern> </filter-mapping>
然而,它在Tomcat的7.0.27失败,出现以下异常混乱(的
<url-pattern>
是 被设定)Caused by: java.lang.IllegalArgumentException: Filter mapping must
specify either a
or a
at
org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3009)
at
org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2968)
at
org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1207)
at
org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1294)
at
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
… 7 more
同时,最好的选择是使用Glassfish或JBoss AS,或者<filter>
无论如何都要注册过滤器。
我试图在tomcat 8上设置jsf 2.3,每当我使用“注入”时,我总是有一个错误,我已经在谷歌上搜索了stackoverflow.com但我找不到解决方案。我已经在上面安装了CDI(焊接),下面是@BalusC示例。如何在Tomcat上安装和使用CDI?然而,我一直有不满意的依赖:没有bean匹配注入点。我想不出来我是不是错过了什么? 配置bean。JAVA 豆。xml faces-confi
我正在尝试为tomcat 8配置SSL(https),并完成了以下步骤,但仍然不起作用 1)创建密钥库文件,使用 2)生成如下CSR 在tomcat中启用ssl调试后添加日志
由于catalina.sh中的默认“java.endorsed.dirs”选项,无法用Java9启动基于tomcat的应用程序。 这方面有什么工作吗?
问题内容: 我想@WebServlet在运行于Tomcat 8的Java EE Web应用程序中使用注释。 我已经读到我需要在自己的服务器中声明Servlet版本3.1,web.xml并且我的Servlet需要扩展HttpServlet。我做了所有这些,但仍然@WebServlet行不通。我正在获取HTTP 404。 我也试过我的配置用metadata-complete=”false”在我web.
我有两个相对简单的Spring Boot应用程序。他们都使用Tomcat 8.5.6和Spring Boot 1.4.2。它们工作得很好。 为了笑,我将Tomcat版本更改为该树中的最新版本8.5.8。 现在,两款应用都没有启动。“8080端口已在使用”。不知怎的,Spring Boot似乎启动了8080端口两次(或者没有捕捉到它已经启动并重试的事实)。 有什么想法吗?
问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt