我们在编写一个Servlet程序的时候,要继承HttpServlet这个抽象类并重写doGet()或者doPost()方法,重写的方法要调用方法传入2个参数,request和response,这里我们来看看HttpServletRequest这个接口
HttpServletRequest代表客户端的请求,用户通过HTTP协议访问服务器,Http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息
点进去这个接口,我们可以看到有如下方法
HttpServletRequest是继承ServletRequest接口的,ServletRequest里有如下方法
接下来将按照HttpServletRequest的实际应用演示这些方法
获取请求行数据
-
GET /Servlet01_war_exploded/hehe?name=zhangsan HTTP/1.1
-
方法:
-
获取请求方式 :GET String getMethod()
-
获取虚拟目录:/Servlet01_war_exploded String getContextPath()
-
获取Servlet路径: /hehe String getServletPath()
-
获取get方式请求参数:name=zhangsan String getQueryString()
-
获取请求URI:/Servlet01_war_exploded/hehe
String getRequestURI() /Servlet01_war_exploded/hehe
StringBuffer getRequestURL() http://localhost:8080/Servlet01_war_exploded/hehe
- URL:统一资源定位符
- URI:统一资源标识符
-
获取协议及版本:HTTP/1.1 String getProtocol()
-
获取客户机的IP地址: String getRemoteAddr()
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/hehe") public class ServletTest03 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 获取请求方式 String method = req.getMethod(); System.out.println(method); //2.(*)获取虚拟目录 String contextPath = req.getContextPath(); System.out.println(contextPath); //3. 获取Servlet路径 String servletPath = req.getServletPath(); System.out.println(servletPath); //4. 获取get方式请求参数 String queryString = req.getQueryString(); System.out.println(queryString); //5.(*)获取请求URI String requestURI = req.getRequestURI(); StringBuffer requestURL = req.getRequestURL(); System.out.println(requestURI); System.out.println(requestURL); //6. 获取协议及版本 String protocol = req.getProtocol(); System.out.println(protocol); //7. 获取客户机的IP地址 String remoteAddr = req.getRemoteAddr(); System.out.println(remoteAddr); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
-
获取请求头数据
-
方法
-
String getHeader(String name):通过请求头的名称获取请求头的值
-
Enumeration getHeaderNames():获取所有的请求头名称
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Enumeration;
-