基本介绍
httpServletRequest对象对http请求进行了封装,我们使用这个对象就可以方便快捷的获取http中的信息。HttpServletRequest 对象代表客户端的请求,在里面就包含了所有的客服端信息,我们通过这个对象的方法便可以获取所有的客服端信息,包括请求头和请求体中的所有数据。
常见方法
- getRequestURL():得到请求的URI
- getRequestURL():得到请求的URL
- getHeader(String s):getHeader表示得到请求头,参数s表示想要获取请求头中的什么数据
- getHeader(“Host”):获取请求的主机
- getHeader(“Referer”):获取请求来自于哪里,一般用来做防盗链
- getRemotetAddr():得到请求的ip
- getParameter(String s):得到请求参数的值
- getParameterValues(String s):得到请求参数的值,用于参数有多个值,返回一个数组
方法演示
我们创建一个注册页面来提交数据,服务器将获取数据并进行展示,代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="http://localhost:8080/servlet/requestTest" method="post">
用户名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"><br>
爱好 <input type="checkbox" name="hobby" value="lq">篮球
<input type="checkbox" name="hobby" value="zq">足球
<input type="checkbox" name="hobby" value="pq">排球<br>
<input type="submit" value="注册">
</form>
</body>
</html>
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Arrays;
@WebServlet("/requestTest")
public class HttpServletRequestTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到请求URL
StringBuffer requestURL = request.getRequestURL();
System.out.println("请求的URL是:" + requestURL);
//得到请求URI
String requestURI = request.getRequestURI();
System.out.println("请求的URI是:" + requestURI);
//得到主机名Host
String host = request.getHeader("Host");
System.out.println("请求的主机名是:" + host);
//得到请求的ip
String ip = request.getRemoteAddr();
System.out.println(ip);
//得到请求参数,分别得到用户名,密码还有爱好
//如果参数中有中文,需要设置编码
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] hobbies = request.getParameterValues("hobby");
System.out.println("用户名为:" + username);
System.out.println("密码:" + password);
System.out.println("爱好为:" + Arrays.toString(hobbies));
//得到访问来自哪里
String referer = request.getHeader("Referer");
System.out.println("请求来自于:" + referer);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
下面是我们提交的数据
抓包进行查看
请求头
POST /servlet/requestTest HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 60
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/servlet/register_request.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=ABEC5EA43080A0BFA70C2AABDF39BB7C; Pycharm-cb145b54=bac13d99-2d7f-4b5f-9c85-e783571ee72d; Idea-8cd34e8b=1bf6d6e0-14ee-4950-96ec-48105743bb40
请求体
我们查看控制台输出
发现完全一样,我们可以通过HttpServletRequest获取http请求的所有信息。 HttpServletRequest方法众多,想要了解查看Api文档即可
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140320.html