请教,servlet的response.sendRedirect后面的URL是不能写WEB-INF里的路径的,那么sendRedirect后面想访问WEB-INFO下的views文件夹里的jsp,应该怎么访问呢?
sendRedirect
方法后面的URL不能直接写WEB-INF里的路径,因为WEB-INF目录是受保护的,不能直接访问。如果你想访问WEB-INF下的views文件夹里的jsp,可以通过以下两种方式实现:
将jsp文件移动到WebContent目录下,然后在sendRedirect
方法中使用相对路径访问,例如:
response.sendRedirect("views/example.jsp");
在sendRedirect
方法中使用绝对路径访问,例如:
response.sendRedirect(request.getContextPath() + "/views/example.jsp");
这里的request.getContextPath()
方法返回的是应用程序的上下文路径,例如,如果你的应用程序部署在localhost:8080/myapp下,那么request.getContextPath()
返回的就是"/myapp"。这样,使用绝对路径访问时就可以正确地定位到WEB-INF下的views文件夹里的jsp了。
对于sendRedirect()方法来说,它需要重定向到Web应用中的一个公开的资源(例如:HTML、JSP、Servlet等)。因此,不能直接通过写WEB-INF目录下的路径来访问WEB-INF/views文件夹里的jsp文件。如果您希望访问该文件夹下的jsp文件,可以将这些jsp文件移动到Web应用的公共路径(即webroot目录)下,或者使用内部转发(forward)代替sendRedirect进行请求跳转。