java重定向与请求转发

重定向是不能直接访问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是外部重定向

 

posted @ 2019-04-23 15:20  caotao0918  阅读(642)  评论(0编辑  收藏  举报