我想使用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。这种行为的原因是什么?
答案 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/
http://yourhost/anyPath/redirectServlet
会将您重定向到response.sendRedirect("/mySimplePage.html");
http://yourhost/mySimplePage.html
会将您重定向到response.sendRedirect("mySimplePage.html");
http://yourhost/anyPath/mySimplePage.html
会将您重定向到response.sendRedirect("https://stackoverflow.com/questions/48750057/httpservletresonse-sendredirect-css-not-working");
希望有所帮助