为什么request域对象请求转发时,打印的地址值request不相同,response地址值相同???

为什么request域对象请求转发时,打印的地址值request不相同,response地址值相同???

请求转发时,tomcat会将request和response进行封装;封装后不是应该要么地址值都不相同,要么地址值都相同吗?

tomcat底层单独对request单独进行了强制转换,为什么要这样做呢?

@WebServlet("/receptionServlet")
public class ReceptionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         //获取数据
        System.out.println("接收到客户请求,客户要吃鸡肉卷");
        System.out.println("单子转发给厨师");
        request.setAttribute("require", "多放肉");
        //链式编程
        request.getRequestDispatcher("kitchenServlet").forward(request, response);
        System.out.println("ONErequest = " + request);
        System.out.println("ONEresponse = " + response);
    }

@WebServlet("/kitchenServlet")
public class KitchenServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("厨师拿到单子,开始做鸡肉卷");
//获取数据
String require = (String) request.getAttribute("require");
System.out.println("读取备注 : " + require);
response.setContentType("text/html;charset=utf-8"); //解码中文乱码
response.getWriter().print("鸡肉卷好了,请享用...");
System.out.println("TWOrequest = " + request);
System.out.println("TWOresponse = " + response);
}

打印结果

TWOrequest = org.apache.catalina.core.ApplicationHttpRequest@689d6aa4
TWOresponse = org.apache.catalina.connector.ResponseFacade@57d53d6a
ONErequest = org.apache.catalina.connector.RequestFacade@cc1097d
ONEresponse = org.apache.catalina.connector.ResponseFacade@57d53d6a

每次转发,都会构造一个新的 request 对象,所以不同。相同说明 response 是同一个对象