1

我正在使用 Java 代码开发一个 Web 应用程序,我通过使每个页面都从一个 servlet 类开始来更改我的代码。

servlet“indexServlet”中的 Java 代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        DataGathering dBConnector = new DataGathering();
        List<Long> lstDetailVewOID;
        lstDetailVewOID = dBConnector.getDetailVewOID();
        request.setAttribute("detailVewLst", lstDetailVewOID);
        // pass the list to jsp page.
        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }

从那时起CSS代码停止工作,它给了我这个错误:

资源解释为样式表,但使用 MIME 类型 text/html 传输:“http://localhost:8080/firstApplication/Style-Sheet/Template-Style.css”。

在跟踪代码时,我发现通过doGet()在类中运行该方法servlet,它调用页面并运行它,然后再次返回servlet关闭该方法,我猜是这个过程导致的错误,但不确定,我无法解决。

通过互联网搜索时,我认为类型应该是 text/css 但我已经这样做了,并且在更改代码之前,相同的 CSS 文件正在工作。

在jsp页面中调用CSS文件:

<link href="Style-Sheet/Template-Style.css" rel="stylesheet" type="text/css">

编辑:web.xml 映射:

<servlet>
        <servlet-name>Index</servlet-name>
        <servlet-class>com.Teklabz.Servlets.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Index</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
4

1 回答 1

2

我认为您通过 servlet 返回静态资源,例如 css 和图像。这本身很糟糕,但如果这样做,您需要在响应标头中设置正确的 mime 类型。实际上,我认为您应该将 servlet-to-url 映射从 /* 更改为有点像 /*.jsp,因此,所有其他静态资源都将由您的 tomcat/jetty 处理,他们做得对。

<web-app>
    <servlet>
         <servlet-name>Servlet1</servlet-name>
         <servlet-path>foo.Servlet</servlet-path>
    </servlet>
    <servlet-mapping>
         <servlet-name>Servlet1</servlet-name>
         <url-pattern>/*.jsp</url-pattern> <!-- right here! -->
    </servlet-mapping>
</web-app>
于 2013-01-13T14:02:50.523 回答