JavaEE HttpServletRequest

描述

使用 HttpServletRequest 对象,完成请求转发。

题目

使用 HttpServletRequest 对象,完成请求转发的功能。

题目解决思路

  1. 使用 @WebServlet 注解的方式创建 Servlet
  2. 通过 HttpServletRequest 对象,使用 setAttribute 方法,在请求域中创建键和值。
  3. 使用请求转发,将请求域的数据转发给第二个页面。

代码具体实现

ServletDemoOne 代码:

@WebServlet("/one") public class ServletDemoOne extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); // 请求域设值 request.setAttribute("user","haicoder"); // 请求转发 request.getRequestDispatcher("/two").forward(request,response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

ServletDemoTwo 代码:

@WebServlet("/two") public class ServletDemoTwo extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); // 获取请求域数据 PrintWriter pw = response.getWriter(); pw.print("嗨客网(www.haicoder.net)<br/>"); pw.print("<br/>"); String username = (String) request.getAttribute("user"); pw.println("页面二获取请求域数据:" + username); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

运行结果,如下图:

16_Java HttpServletRequest.png

以上案例通过 HttpServletRequest 对象,完成请求转发的操作,可以发现请求域的数据可以通过请求转发,发送到第二个页面,而且请求转发前后,浏览器只发送一次请求(URL 前后不变)。