2

我创建了名为 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我进入了 servlets doGet() 方法。然后我创建 RequestDispatcher 转发到 index.jsp。

一切正常!

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

一切正常!

问题:

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

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

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

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".

我该如何解决?

4

1 回答 1

2

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

采用

<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]如何映射“根”Servlet 以便其他脚本仍可运行?

于 2013-08-23T18:02:01.683 回答