重定向是不能直接访问WEB-INF下的资源的,因为重定向是浏览器二次请求,众所周知,客户端是不能直接访问WEB-INF下的资源的。
而请求转发却可以直接访问。
然而重定向却可以间接访问WEN-INF下的资源,如下所示:
1 /** 2 客户端访问这个Servlet,然后可以重定向到另一个Servlet,另一个Servlet请求转发到 WEB-INF 下的资源,以实现重定向的目的 */ 3 @Override 4 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 resp.setContentType("text/html;charset=utf-8"); 6 PrintWriter out = resp.getWriter(); 7 out.println("hello world..."); 8 req.getSession().setAttribute("name","java"); 9 resp.sendRedirect("hello");//hello是另一个Servlet的访问url 10 } 11 12 @Override 13 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 14 super.doPost(req, resp); 15 }
附两张图,一边理解
重定向
请求转发
forward是内部重定向,而redirect是外部重定向