基本上,我希望一个servlet处理所有传入的请求,而不管路径是什么。我在共享主机环境中,可以配置我自己的web.xml文件。
我在web.xml中配置了以下内容,但它在Tomcat5上不起作用:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Redirect</display-name>
<servlet>
<display-name>Redirect</display-name>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.Redirect</servlet-class>
<init-param>
<param-name>host</param-name>
<param-value>www.myredirectdomain.com</param-value>
</init-param>
<init-param>
<param-name>redirect-type</param-name>
<param-value>301</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>上述方法适用于以路径中的目录开头的任何内容,例如:
www.mydomain.com/anypath1/anypath2...
www.mydomain.com/anypath1但是,对于以下情况不起作用:
www.mydomain.com/ or
www.mydomain.com我还尝试了以下servlet映射:
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>结果是一样的。都不管用。有人有什么建议吗?
发布于 2009-05-12 20:52:08
Tomcat5实现了Servlet2.4规范。可在此处下载:JCP Servlet 2.4 Spec
在pg上。86 - SRV.11.2它描述了如何指定Servlet映射。如果我没弄错的话,您是在尝试用一个Servlet拦截到您的服务器的每个请求(不管是什么路径)。为此,您的webapp需要在默认上下文(“根”)下挂载(对于Tomcat ),并且您的Servlet需要映射到web.xml中的默认servlet。您在web.xml中的映射是正确的。
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>我认为你遇到的问题是根上下文的问题。访问www.mydomain.com/和www.mydomain.com会显示什么?你没有提到你的共享主机环境是否允许你完全访问你自己的Tomcat配置,但是如果你可以访问和修改$TOMCAT5_HOME/conf目录,有几种方法可以让它为你工作。
可能最干净的方法是添加以下内容:
< Context path="" debug="0" docBase="your-app">到$TOMCAT5_HOME/conf/server.xml。这里假设您的应用程序名为" your -app.war“。
希望这能有所帮助。
发布于 2009-05-08 16:43:11
<url-pattern>/*</url-pattern>应该可以工作。您的webapp需要部署在根上下文中。默认情况下,tomcat使用名为根的for应用程序;但是,您可以将其更改为在server.xml中查找另一个for应用程序。
另一种方法是创建一个ServletFilter来完成这项工作,并以相同的方式映射它。每种方法(servlet和servlet过滤器)各有优缺点。然而,从您的示例中,看起来您只是想将所有内容发送到另一个站点,因此这两个站点中的任何一个都应该可以工作。
发布于 2009-04-29 04:15:13
Pattern /*将明确地调用您的重定向servlet。你有没有调试你的servlet,看看它是否收到了对这个url的请求?你的意思是没有起作用?你有没有收到任何错误或者发生了什么?
https://stackoverflow.com/questions/800725
复制相似问题