一、HttpServletRequest 类
(一)HttpServletRequest 类的作用
每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息(包括用户提交的信息以及客户端的一些信息)解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。 客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后服务器通过Request对象的相关方法来获取所有请求的信息。
(二)HttpServletRequest 类的常用方法
getRequestURI()
获取请求的资源路径
getRequestURL()
获取请求的统一资源定位符(绝对路径)
getRemoteHost()
获取客户端的 ip 地址
getHeader()
获取请求头
getParameter()
获取请求的参数
getParameterValues()
获取请求的参数(多个值的时候使用)
getMethod()
获取请求的方式 GET 或 POST
setAttribute(key, value)
设置域数据
getAttribute(key)
获取域数据
getRequestDispatcher()
获取请求转发对象
案例
web.xml:
<servlet>
<servlet-name>RequestAPIServlet</servlet-name>
<servlet-class>com.fox.servlet.RequestAPIServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RequestAPIServlet</servlet-name>
<url-pattern>/requestAPI</url-pattern>
</servlet-mapping>
Servlet:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RequestAPIServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的资源路径
System.out.println("URI => " + req.getRequestURI());
//获取请求的统一资源定位符(绝对路径)
System.out.println("URL => " + req.getRequestURL());
//获取客户端的ip地址
//在IDEA中,使用localhost访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1或者0:0:0:0:0:0:0:1(ipv6)
//在IDEA中,使用127.0.0.1访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1
//在IDEA中,使用 真实ip 访问时,得到的客户端 ip 地址是 ===>>> 真实的客户端 ip 地址
System.out.println("客户端 ip地址 => " + req.getRemoteHost());
//获取请求头
System.out.println("请求头User-Agent => " + req.getHeader("User-Agent"));
//获取请求的方式GET或POST
System.out.println( "请求的方式 => " + req.getMethod() );
}
}
(三)如何获取请求参数
web.xml:
<servlet>
<servlet-name>ParameterServlet</servlet-name>
<servlet-class>com.fox.servlet.ParameterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ParameterServlet</servlet-name>
<url-pattern>/parameter</url-pattern>
</servlet-mapping>
html:
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/WebStudy/parameterServlet" method="get">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
<input type="checkbox" name="hobby" value="java">Java
<input type="checkbox" name="hobby" value="js">JavaScript<br/>
<input type="submit">
</form>
</body>
</html>
Servlet:
import javax.servlet.ServletException;