浏览器直接请求RequestTest04,在RequestTest04里面设置一个参数encoding值为gbk,再转发给RequestTest05上,在RequestTest05获取到encoding的值。Java代码(RequestTest04.java):public class RequestTest04 extends HttpServlet( public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ / 设置共享数据 _________; / 获取请求调度对象 RequestDispatcher rd = _________("/request05"); / 实现转发功能 _________; ) public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException()
浏览器直接请求RequestTest04,在RequestTest04里面设置一个参数encoding值为gbk,再转发给RequestTest05上,在RequestTest05获取到encoding的值。
Java代码(RequestTest04.java):
public class RequestTest04 extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// 设置共享数据
_________;
// 获取请求调度对象
RequestDispatcher rd = _________("/request05");
// 实现转发功能
_________;
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
}
题目解答
答案
根据题目要求,需在 RequestTest04 中设置参数 encoding="gbk",并通过请求转发传递至 RequestTest05,最终在页面输出该值。核心步骤如下:
-
在
RequestTest04中设置共享数据
使用HttpServletRequest的setAttribute()方法将键值对绑定到当前请求作用域:req.setAttribute("encoding", "gbk"); -
获取请求转发器对象
通过HttpServletRequest获取RequestDispatcher,目标路径为/request05:RequestDispatcher rd = req.getRequestDispatcher("/request05"); -
执行请求转发
调用forward()方法将当前请求与响应对象转发至目标资源:rd.forward(req, resp); -
在
RequestTest05中接收并输出数据
通过getAttribute()获取共享数据,并设置响应编码后输出:String encoding = (String) req.getAttribute("encoding"); resp.setContentType("text/html;charset=utf-8"); resp.getWriter().println("I am RequestTest05, 我的编码方式是: " + encoding);
完整代码实现:
RequestTest04.java
public class RequestTest04 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("encoding", "gbk");
RequestDispatcher rd = req.getRequestDispatcher("/request05");
rd.forward(req, resp);
}
}
RequestTest05.java
public class RequestTest05 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String encoding = (String) req.getAttribute("encoding");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().println("I am RequestTest05, 我的编码方式是: " + encoding);
}
}
访问 https://localhost:8080/teaching03_war_exploded/request04 后,浏览器将显示:
I am RequestTest05, 我的编码方式是: gbk