版权声明:yuanmomoya https://blog.csdn.net/yuanmomoya/article/details/82527473
request对象:
创建: 服务器运行中接受到用户请求时,会将请求报文封装为请求对象,并传入到service方法中最终交给doGet
代表:请求报文对象
作用:获取请求报文中的所有内容
1、获取请求头
2、获取请求url地址中的所有内容
3、获取请求参数[重要]
4、请求的转发[重要]
转发的特点: 转发和重定向的区别 是重点
- 转发是在服务器内部执行的
- 浏览器只发起了一次请求,得到了一个响应结果
- 浏览器地址栏地址没有改变,打开的页面变为了转发之后的资源,url地址和打开的资源不对应
- 浏览器不知道转发的发生
- 效率相对重定向高
获取请求头、上下文
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EHttpServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取请求头
String agent = request.getHeader("User-Agent");
System.out.println("agent:"+agent);
//2、获取请求地址内容
String scheme = request.getScheme();
String serverName = request.getServerName();
int port = request.getServerPort();
//上面的了解。在后面的动态获取项目的全路径时会用到
String path = request.getContextPath();//获取上下文路径,重点,项目中经常要获取项目名
System.out.println(scheme+","+serverName+","+port+","+path);
//3、获取请求参数[用户通过表单或get方式拼接在url地址后的键值对] get提交参数:url? username=aaa&age=111&password=1221321
String username = request.getParameter("username");//根据请求参数的name值获取value值
String age = request.getParameter("age");
System.out.println("username:"+username);
System.out.println("age:"+age);
//调用其他类处理请求,在根据处理结果给用户响应
//4、转发
//获取请求转发器
RequestDispatcher dispatcher = request.getRequestDispatcher("success.html");
//发起转发
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}