2011-09-14 69 views
0

现在我有以下问题: 我正在尝试使用Tomcat 7和JSP创建网站。 但我无法正确配置服务器。 我想要一个在浏览器地址栏中显示的网站,如mydomain.com/about,而不带* .jsp或* .html。 为了实现这一点,我有一个重定向Bean,由JSP-Page调用,解析请求的URI并返回应该转发的JSP文件的路径。问题是web.xml中的servlet映射 在那里我试图创建一个servlet映射。 /关于它被映射到调用bean的redirect.jsp。问题是,我收到以下异常:Servlet映射失败

javax.servlet.ServletException:没有servlet类已经为servlet的指定重定向

下面是web.xml中的代码:

<servlet-mapping> 
    <servlet-name>redirect</servlet-name> 
    <url-pattern>/engine</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>redirect</servlet-name> 
    <url-pattern>/about</url-pattern> 
</servlet-mapping> 

BTW:index.jsp被正确调用,因为它在欢迎文件列表中。问题是重定向到其他网站,而不在地址栏中显示路径。

也许有一种方法可以在Javabean中转发。这可以由servlet映射中的<servlet-class> -tag调用。

感谢您的帮助提前! 最大

回答

4

没有servlet类已经为servlet的指定重定向

此错误只是意味着有一个与redirect被definied在web.xml

<servlet> 
    <servlet-name>redirect</servlet-name> 
    <servlet-class>com.example.YourServletClass</servlet-class> 
</servlet> 

或名称没有的servlet

<servlet> 
    <servlet-name>redirect</servlet-name> 
    <jsp-file>/redirect.jsp</jsp-file> 
</servlet> 

相应地修复您的web.xml


无关的具体问题,我建议使用一个单一的Filter一些(XML?)配置为这个而不是文件。类似于Tuckey's URL rewrite filter,与Apache HTTPD的mod_rewrite非常相似。

1

对不起, 这仅仅是一个块上方在web.xml

<servlet> 
    <servlet-name>redirect</servlet-name> 
    <description>The main redirection thing</description> 
    <jsp-file>/jsp/redirect.jsp</jsp-file> 
</servlet> 

<servlet-mapping> 
    <servlet-name>redirect</servlet-name> 
    <url-pattern>/engine</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>redirect</servlet-name> 
    <url-pattern>/about</url-pattern> 
</servlet-mapping> 

不是解决办法。我很确定,需要一个servlet定义的节点。但正如我所说,我需要一个JSP文件。