请求包含include()测试案例
首先来看
请求转发RequestDispatcher中的forward()与include()
在web开发中请求转发RequestDispatcher接口可用来实现数传递和页面跳转,而RequestDispatcher有2种方式实现跳转Servlet:include()和forward()
-
forward 请求转发,转发的作用在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理。(发给别人)
-
include() 请求包含 , 用于包含响应中某个资源(servlet、JSP 页面和 HTML 文件)的内容,将响应数据包含到自己的响应体中 (拿取别人)
测试案例
模拟分别有UserServlet和OrderServlet两个servlet类,在UserServlet使用include()将OrderServlet的订单信息与UserServlet中信息一并展示。
设计思路(实现原理)
-
创建两个Servlet,UserServlet定义String类型变量username,值为”张三”,并用printWriter输出;OrderServlet定义变量 String orderId=“001”;String orderContent=“小米su7”,并用printWriter输出
-
在UserServlet用include将OrderServlet包含进来,并返回到客户端。
-
服务器启动后,访问UserServlet映射的路径,查询页面查询信息。
UserServlet
package com.gd.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author LFXIANG
* description TODO
* @title UserServlet
* date 2024/3/29 10:50
*/
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username="张三";
// 设置响应文件类型与响应编码格式 解决中文输出乱码
resp.setContentType("text/html;charset=utf-8");
// 使用PrintWriter向页面输出信息
PrintWriter writer = resp.getWriter();
writer.write("用户名:"+username);
// 请求包含OrderServlet的内容,将响应数据包含到自己的响应体中
req.getRequestDispatcher("/OrderServlet").include(req,resp);
}
}
OrderServlet
package com.gd.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author LFXIANG
* description TODO
* @title OrderServlet
* date 2024/3/29 10:51
*/
@WebServlet("/OrderServlet")
public class OrderServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String orderId = "001";
String orderContent="小米su7";
resp.setContentType("text/html;charset=utf-8");
// 使用PrintWriter输出信息
PrintWriter writer = resp.getWriter();
writer.write("<br>订单编号"+orderId+"<br>订单内容"+orderContent+"<br>查询结果");
}
}