使用 HttpServletRequest 对象,完成请求转发。
使用 HttpServletRequest 对象,完成请求转发的功能。
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);
}
}
运行结果,如下图:
以上案例通过 HttpServletRequest 对象,完成请求转发的操作,可以发现请求域的数据可以通过请求转发,发送到第二个页面,而且请求转发前后,浏览器只发送一次请求(URL 前后不变)。