Servlet中的HttpServletRequest对象封装了客户端发起的请求信息,包括:
- 请求行
- 请求头
- 请求实体
- 网络相关信息
查询API可以获取相应的方法
获取请求行和请求头的demo:
package cn.berger.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
public class TestRequest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/**
* HttpServletRequest对象封装了请求的相关信息
* 请求行 请求方式 请求路径 协议版本
* 请求头
* 请求实体
* 网络相关信息
*/
// 请求行
System.out.println("以下是请求行信息:------------------------------");
String methodName = req.getMethod();
System.out.println("请求方法:" + methodName);
String uri = req.getRequestURI(); // URI是资源标识符
StringBuffer url = req.getRequestURL(); // URL是统一资源路径
System.out.println("URI是资源标识符:" + uri);
System.out.println("URL是统一资源路径:" + url);
String protocol = req.getProtocol(); // 获取协议和版本
String scheme = req.getScheme(); // 获取协议
System.out.println("protocol:" + protocol);
System.out.println("scheme:" + scheme);
// 请求头
System.out.println("以下是请求头信息:------------------------------");
Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()) {
String element = headerNames.nextElement();
System.out.println(element);
}
String host = req.getHeader("host");
System.out.println("host:" + host);
}
}
访问对应的url,控制台输出的结果如下:
获取请求头和相关网络信息的demo
// 请求实体
System.out.println("以下是请求实体信息:------------------------------");
String aaa = req.getParameter("aaa");
System.out.println(aaa);
// 网络相关信息
System.out.println("以下是网络相关信息:------------------------------");
String remoteAddr = req.getRemoteAddr();
int remotePort = req.getRemotePort();
System.out.println("当前访问的客户端地址为:" + remoteAddr + ":" + remotePort);
需要注意的是getParameter()
方法既可以获取get
方式拼接在URI后面的参数也可以获取post
方式携带的参数,且格式为application/x-www-form-urlencoded
.