request域对象
场景:有时候我们发送一个请求然后由一个对应的servlet处理请求,接着我们需要将当前的request对象的一些信息传递到另一个servlet或者jsp页面。
方法:
- 请求转发
假设当前处理请求的是Demo2Servlet(/demo2),需要传递信息到Demo3Servlet(/demo3)中。
request.getRequestDispatcher("/demo3").forward(request, response);
然后我们就可以在Demo3Servlet中获取request中的信息。
package com.oracle;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo3Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
- 使用request域对象(使用request的setAttribute()方法设置其他信息并传递到Demo3Servlet中)
package com.oracle;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("flag", 1);
request.getRequestDispatcher("/demo3").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
- 在Demo3Servlet中获取请求中的信息或者在Demo2Servlet中设置的新信息)
package com.oracle;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo3Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
//request.removeAttribute("flag");//如果在获取设置的属性前将其删除,后面将获取不到该属性
Integer a = (Integer)request.getAttribute("flag");
System.out.println(a);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}