使用“/”创建servlet url-pattern

时间:2013-08-23 17:45:09

标签: java jsp servlets servlet-filters servlet-3.0

我创建了名为MainContent的servlet。我有这样的映射

<servlet>
    <display-name>MainContent</display-name>
    <servlet-name>MainContent</servlet-name>
    <servlet-class>ge.test.servlet.MainContent</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MainContent</servlet-name>
    <url-pattern>/main</url-pattern>
</servlet-mapping>

所以,当我去链接时:   // localhost:8080 / MyAppl / main 我进入了servlet的doGet()方法。然后我将RequestDispatcher转发到index.jsp。

一切正常!

RequestDispatcher rd = context.getRequestDispatcher("/index.jsp?language="+ lang);
rd.forward(request, response);

一切正常!

问题:

现在我需要更改url-pattern。我需要这样的东西 - 当我进入 localhost:8080 / MyAppl / 时,我需要被重定向到我的servlet。 所以我创造了类似的东西:

<url-pattern>/</url-pattern>

好,它有效!我被重定向到servlet。 这里发生了一些错误。当Servlet创建RequestDispatcher时,我的index.jsp中没有图像和css。 当我在firebug控制台中看到时,我看到了错误:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:8080/MyApp/font/font_big.css". localhost/:15
Resource interpreted as Image but transferred with MIME type text/html: "http://localhost:8080/MyApp/IMG/company.gif".

我该如何解决?

1 个答案:

答案 0 :(得分:2)

是的,就像@DwB指出的那样,'/'上下文是有问题的网址格式,它会导致您的问题。

使用

<servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern></url-pattern>
</servlet-mapping>

代替。这是“servlet 3.0方式”。

<强>来源

[1] http://www.coderanch.com/t/366340/Servlets/java/servlet-mapping-url-pattern

[2] How can I map a "root" Servlet so that other scripts are still runnable?