【Javaweb】Servlet八 | 请求转发的代码实现【详解】

请求的转发

什么是请求的转发?

请求转发是指,服务器收到请求时,从一次资源转到另一个资源的操作叫做请求转发。

 

部分代码

//        获取请求的参数(办事的材料)查看
        String username=req.getParameter("username");
        System.out.println("在Servlet1(柜台1)中查看参数(材料)"+username);
//        给材料   盖一个章,并传递到servlet2(柜台2)去查看
        req.setAttribute("key1","柜台1的章");
//        问路,servlet2(柜台2)怎么走
        /*
         * 请求转发必须以斜杠打头, / 斜杠表示地址为:http://ip:port/工程名/ ,映射到idea代码的web目录
         **/
        RequestDispatcher requestDispatcher=req.getRequestDispatcher("/Servlet2");

//        走向servlet2(柜台2)
        requestDispatcher.forward(req,resp);
//        获取请求的参数(办事的材料)查看
        String username=req.getParameter("username");
        System.out.println("在Servlet2(柜台2)中查看参数(材料)"+username);

//        查看 柜台1 是否有盖章
        Object key1=req.getAttribute("key1");
        System.out.println("柜台1是否有章"+key1);
//        处理自己的业务
        System.out.println("Servlet2 处理自己的业务");

实现功能

 

也可以直接用网址传值

 

 

 

 

 请求转发的特点

1、浏览器地址栏没有变化

2、请求转发虽然访问了两个资源,但这是一次请求

3、他们共享Request域中的数据

requestDispatcher.forward(req,resp);//这句代码接收

4、可以转发到WEB-INF目录下(转发可以实现,但浏览器不可以实现)

 /*
         * 请求转发必须以斜杠打头, / 斜杠表示地址为:http://ip:port/工程名/ ,映射到idea代码的web目录
         **/
        RequestDispatcher requestDispatcher=req.getRequestDispatcher("/WEB-INF/form.html");

5、是否可以访问工程以外的资源————❌

【相当于直接在  http://ip:port/  后面加地址,所以访问不到 】

 

posted @ 2023-01-26 00:14  喝着农药吐泡泡o  阅读(323)  评论(0编辑  收藏  举报