Day04JavaWeb【Request】转发的原理***

request-转发的原理***

  • (1)什么是请求转发
    浏览器访问Servlet1,Servlet1将参数处理得到结果,没有直接返回给浏览器,而是将结果带给Servlet2,由Servlet2再处理之后返回给浏览器
  • (2)类比
    面试者的简历给前台,前台收到之后转给面试官
    (3)在哪里使用?
    搜索功能,还有很多地方。
    在这里插入图片描述

request-转发的代码实现

以下代码需要结合原理图理解 ,以后第二次Srevlet是使用jsp替换,因为jsp组装数据的效率更高。

  • (1)方法
setAttribute(key,value) 存一个key-value数据到请求中
getAttribute(key) 根key将对应的value取出来
back 后退 forward前进
getRequestDispatcher("/demo7").forward(request, response);

src\com\wzx\pack04_dispatch\Demo06Servlet.java

@WebServlet("/demo06")
public class Demo06Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //将"游戏本"添加到请求中,携带到下一个servlet
        //1 存数据
        request.setAttribute("name","游戏本");
        //2 携带到下一个servlet,只能使用转发
        request.getRequestDispatcher("/demo07").forward(request, response);
    }
}

src\com\wzx\pack04_dispatch\Demo07Servlet.java

@WebServlet("/demo07")
public class Demo07Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1 取数据
        String name = (String) request.getAttribute("name");
        //2 组装标签后,响应给浏览器
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println("<font color='red'>"+name+"</font>");
    }
}

request-转发和重定向的区别***

在这里插入图片描述
(1)重定向
两次请求,两次响应
重定向不携带数据
重定向地址栏发生改变

(2)转发
一次请求,一次响应
转发需要携带数据
转发地址栏不会发生变化

猜你喜欢

转载自blog.csdn.net/u013621398/article/details/108516460