2013-01-13 121 views
1

我正在使用Java代码处理Web应用程序,我通过使每个页面从一个servlet类开始来更改我的代码。CSS样式停止工作?

Java代码中的servlet “indexServlet”:

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”。

在跟踪代码,我发现,通过运行servlet类中的doGet()方法,它调用的页面,并运行它,然后回到这个servlet再次关闭方法,我猜是因为的错误这个程序,但不知道,我无法解决它。

当通过互联网搜索时,我认为该类型应该是文本/ 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> 
+0

你能包括定义servlet的web.xml中的相关部分?我对servlet的URL模式感兴趣。在我看来,CSS请求正在调用servlet(它不应该),但需要看到web.xml确定 – NickJ

+0

@NickJ我刚刚添加了web.xml代码 – IBRA

回答

2

我想你通过你的servlet返回如CSS和图像静态资源。这本身就不好,但如果你这样做,你需要在响应头文件中设置正确的MIME类型。其实我认为你应该从/ *改变servlet到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> 
+0

我曾经在c#上工作过,是我第一个使用java的项目。我不知道你说的“通过你的servlet返回静态资源”是什么意思。你也说过这是不好的做法,那么做什么是正确的。抱歉给你带来不便。 – IBRA

+1

@IbrahimSwaiss没关系,这是非常平常的新手错误。当你将所有的浏览器请求映射到你的servlet时,你必须处理它们,甚至简单地输出请求的文件,如css,js或图像文件。通常情况下,这不是你真正想要的(除非你真的想要读出静态内容,即从数据库)。因此,您可以仅根据要处理的请求(即* .jsp)映射浏览器请求,并将静态内容的传递请求传递给默认的tomcat servlet。这个servlet可以排除简单的静态资源(具有适当的mime类型)。 –

+0

感谢,它现在正在工作,但我有一个问题,如果你不介意,我设置应用程序从一个特定的servlet开始。正如你在问题中看到的那样,web.xml中的url是空的(即使它并不重要),当我启动应用程序时,url包含servlet“.java”的名称,但如果我去代码中的servlet直接输入,或者直接在浏览器中输入,url将显示为它在web.xml中写入的内容。它给出了相同的结果,但具有正确的网址。如何使它从一开始就以正确的URL开始。谢谢 – IBRA