request对象:封装请求数据对象
response对象:封装响应数据对象
Request请求转发
1. 请求转发(forward):一种在服务器服务器内部的资源跳转
Response重定向
Response重定向(redirect):一种资源跳转方式。重定向会产生两次请求
代码:
ReqServlet代码
@WebServlet("/ReqServlet")
public class ReqServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//转发 forward[request对象完成]
//1、获取前台表单提交的数据
String data1 = request.getParameter("data1");
//2、把数据放到共享对象Request
request.setAttribute("msg", "我的共享数据是:" + data1);
//3、
request.getRequestDispatcher("/ok.jsp").forward(request, response);
ReqServlet代码
@WebServlet("/ResServlet")
public class ResServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
ResServlet代码
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取前台表单提交的数据
String data2 = request.getParameter("data2");
//2、把数据放到共享范围比Request更大
HttpSession session= request.getSession();
session.setAttribute("msg", "我的重定向数据是:" + data2);
//3、跳转到ok.jsp,并且不采用forward->重定向
response.sendRedirect("ok.jsp");
}
Session
response重定向产生两次请求,导致第一次存入request对象的共享数据第二次无法获取,因此要将数据存入一个范围更大的对象Session。
实现方式:
request.getSession().setAttribute(key,Object);
request.getSession().getAttribute(key);