您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
02-Request获取请求数据-请求行&请求头&请求体
发布时间:2024-11-27 21:59:28编辑:雪饮阅读()
-
在servlet中的request对象中获取请求行与请求体的一个示例,没有什么可说的,见名知意。
package com;
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.BufferedReader;
import java.io.IOException;
@WebServlet("/HttpServlet9")
public class HttpServlet9 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求行的请求方法
String method=req.getMethod();
System.out.println("method:"+method);
//获取虚拟目录,项目访问路径(非当前servlet的urlPatterns),没有设置tomcat的那个contextPath的时候则就是当前项目名
String contextPath=req.getContextPath();
System.out.println("contextPath:"+contextPath);
//获取URL(统一资源定位符)
StringBuffer url=req.getRequestURL();
System.out.println("url:"+url);
//获取URI
String uri=req.getRequestURI();
System.out.println("uri:"+uri);
//获取请求参数
String queryString=req.getQueryString();
System.out.println("queryString:"+queryString);
//获取请求头 user-agent
String agent=req.getHeader("user-agent");
System.out.println("agent:"+agent);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取字符输入流,当前端请求体是纯文本内容时候,如普通表单的时候,只要不是文件的时候
BufferedReader br=req.getReader();
//按行读取请求体(这里应该是仅读取一行,如果表单数据比较多,一行应该是读取不完的)
String line=br.readLine();
System.out.println("post-line:"+line);
//因为是http请求,该请求结束后流会自动关闭的,所以这里BufferedReader无需关闭。
}
}
然后由于请求体这里是用表单来实现的,可以在webapp目录下建立一个含表单的html
如index3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/servlet01/HttpServlet9" method="post">
<input name="username"/>
<input name="password"/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
那么这里get请求可以访问如localhost:8080/servlet01/HttpServlet9?key1=val1&key2=val2
而post请求可以访问如http://localhost:8080/servlet01/index3.html
然后输入表单和提交表单。
那么post请求后在控制台中输出可如:
post-line:username=asdas&password=asd
而get请求则在控制台中输出可如:
method:GET
contextPath:/servlet01
url:http://localhost:8080/servlet01/HttpServlet9
uri:/servlet01/HttpServlet9
queryString:key1=val1&key2=val2
agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
关键字词:request,请求数据,请求行,请求体
上一篇:01-Request和Response介绍&Request继承体系(获取get请求参数、设置响应头,写入响应内容、请求对象的实际包或类路径)
下一篇:03-Request通用方式获取请求参数(servlet在get请求与post请求下中文乱码的彻底解决-多种方案)