HttpServletResonse sendRedirect - css无法正常工作

时间:2018-02-12 15:37:04

标签: java servlets http-redirect

我想使用HttpServletResponse响应将用户重定向到简单的html页面。

response.sendRedirect("/myPath/mySimplePage.html");

Html文件如下所示:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <link rel="stylesheet" type="text/css" href="customStyle.css">

</head>
<body>
   ...
</body>
</html>

customStyle.css文件与我的.html文件位于同一目录中。当我在本地运行它时它可以工作,但是当我在服务器上部署应用程序时,不包括.css。这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

根据评论中讨论的内容,错误似乎是您重定向到您所指的css不可用的绝对路径。这意味着如果您的Servlet和您的css位于:SELECT D.* FROM Department D LEFT JOIN Employee E ON D.Id = E.DeptId WHERE E.id IS NULL http://yourhost/myPath/redirectServlet,但您重定向到http://yourhost/myPath/customStyle.css则无法访问css。

长话短说。重定向根本不会改变任何东西。如果您可以加载页面http://yourhost/mySimplePage.html并且已加载css,那么您可以。

重定向如何运作:

您将HTTP请求发送到给定的网址(例如http://yourhost/mySimplePage.html)。您获得的响应包含HTTP响应代码302(临时重定向)和HTTP位置标头。此标头包含您提供的URL或路径(在您的情况下为“/mySimplePage.html”)。客户端将使用此位置执行另一个HTTP-Request。如果是URL,它会将此请求发送到此URL。如果是路径,它将使用与使用此路径之前相同的主机。如果路径是相对的,则请求将发送到初始URL +相对路径。如果路径是绝对路径,则请求将转到主机+绝对路径。

示例:

您的重定向servlet位于http://yourhost/myPath/redirectServlet/

  1. http://yourhost/anyPath/redirectServlet会将您重定向到response.sendRedirect("/mySimplePage.html");
  2. http://yourhost/mySimplePage.html会将您重定向到response.sendRedirect("mySimplePage.html");
  3. http://yourhost/anyPath/mySimplePage.html会将您重定向到response.sendRedirect("https://stackoverflow.com/questions/48750057/httpservletresonse-sendredirect-css-not-working");
  4. 希望有所帮助