在servlet名称后添加斜杠会导致不加载CSS和图像

时间:2011-11-10 15:07:46

标签: jsp servlets

我正在设置一个简单的servlet来充当转发器。基本上,您可以使用此http://localhost:8080/WebProjectName/ServletName/foo/bar而非此http://localhost:8080/WebProjectName/Main.jsp?par1=foo&par2=bar

来点击该页面

然而,它似乎打破了我甚至不知道从哪里开始寻找的方式。当我转到http://localhost:8080/WebProjectName/ServletName时,它会转发到页面,但是当我在末尾添加任何内容时,它不会加载任何样式或图像。只是页面的文本内容。

无论如何,这是我简单的servlet

protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    request.getRequestDispatcher( "/main.jsp" ).include( request, response ) ;
}

这是web xml块

<servlet>
  <description></description>
  <display-name>Main</display-name>
  <servlet-name>Main</servlet-name>
  <servlet-class>package.thing.Main</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>Main</servlet-name>
  <url-pattern>/ServletName/*</url-pattern>
</servlet-mapping>

当我甚至只添加一个斜杠时会发生什么,这会导致它只加载main.jsp的文本,而不是样式或任何图像?

这有效:http://localhost:8080/WebProjectName/ServletName

这打破了:http://localhost:8080/WebProjectName/ServletName/

这也打破了:http://localhost:8080/WebProjectName/ServletName/why

1 个答案:

答案 0 :(得分:0)

如果您使用../css,则需要放/your_uri/ 这意味着如果你有WebContent/css/file.css

至:/your_uri/ css = href="../css/file.css"

至:/your_uri/?par=my_thing css = href="../css/file.css

至:/your_uri css = href="css/file.css"