我在社交网站上工作,我遇到以下问题。在profile.jsp
我有一个用户可以上传照片的表单。此表单包含对FileUploadHandler
servlet的操作,该操作会上传照片,然后将重定向发送到uploadfileController.jsp
,如下所示:
RequestDispatcher requestDispatcher;
requestDispatcher = request.getRequestDispatcher("/uploadfileController.jsp");
requestDispatcher.forward(request, response);
在uploadfileController.jsp
中,我将此帖子插入我的MySQL数据库,然后将重定向发送到profile.jsp
。
response.sendRedirect("/profile.jsp");
但后来我收到此错误消息:
HTTP状态404 - /profile.jsp
输入状态报告
消息/profile.jsp
说明请求的资源不可用。
然而,当我再次去profile.jsp
时,帖子就被创建了!有什么想法吗?
答案 0 :(得分:2)
如果响应与servlet上下文相关,则将上下文路径预先添加到URL。
String contextPath = request.getContextPath();
response.sendRedirect(response.encodeRedirectURL(contextPath + "/profile.jsp");
答案 1 :(得分:0)
您可以将sendRedirect
与相对地址一起使用。例如,如果servlets URL是
您将使用sendRedirect("bar/other")
,您将被重定向到同一上下文中的不同资源
但如果您在/
的开头添加sendRedirect
,那么/
将代表您服务器的主目录,
http://www.serwer.com/
^this one
因此sendRedirect("/bar/other")
会将您重定向到
http://www.serwer.com/ 的酒吧/其他
以便您看到yourwebapp
和foo
已从网址中删除。
在你的情况下,似乎缺少yourwebapp
的问题。你可以通过多种方式解决它。例如,您可以:
/
以使其相对于当前网址/
sendRedirect("/yourAppName/profile.jsp")
之后添加应用名称(您可以/yourAppName
使用mentioned by Roman C +1动态获取request.getContextPath()