package day03;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RequestDemo01 extends HttpServlet{
private static final long serialVersionUID = -4443329818152738956L;
// private static final long serialVersionUID = -4443329818152738956L;
// 1)tomcat服务器接收到浏览器发送的请求数据
// 2)tomcat服务器把请求数据封装成为HttpServletRequest对象
// 3)tomcat服务器调用doGet方法,把request对象传入servlet
/**
* 使用HttpServletRequest获取请求信息
* @author mzy
* 请求行:
* 请求方式:request.getMethod()
* 请求资源:request.getRequestURI()/request.getRequestURL()
* http协议的版本(分为:
* http1.0 一次链接只能完成一次请求就会断开
* http1.1一次链接可以连续使用):
* request.getProtocol();
* 请求头:
* request.getHeader("name")
* 通过名称来获取请求头后面对应的内容的String表示
* request.getHeaderNames()
* 获取当前请求中的所有的头名称{
* 具体可使用的场景:
* 循环遍历输出每个请求头对应的值的时候;
* getHeaderNames()返回值为Enumeration
* 通过其中的hasMoreElements boolean
* nextElement 配合getHeader来使用;
* 便可实现循环遍历的输出。
* }
*
* 获得实体内容:
* request.getInputStream()
*/
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 4)通过request对象获取请求数据
System.out.println("\t get方法");
System.out.println("---------------------------------");
// 请求的数据:
// 1.请求行
System.out.println("----请求行----");
// 1.1 请求的方式
System.out.println("请求的方式:"+request.getMethod());
// 1.2 请求的资源
System.out.println("URI:"+request.getRequestURI());
System.out.println("URL:"+request.getRequestURL());
// 1.3 http协议的版本号
System.out.println("http协议:"+request.getProtocol());
System.out.println("---------------------------------");
// 2.请求头
System.out.println("----请求头----");
String value = request.getHeader("host"); // 根据头名称获取头值
Enumeration<String> headers = request.getHeaders("host"); // 与names不同;names为全部名称,此方法得到的是value
System.out.println("host:"+value);
// 自动生成返回值的快捷键:将光标放置在getHeaderNames();后面,ctrl + 1:enter
Enumeration<String> enums = request.getHeaderNames(); // 获取所有头名称
while(enums.hasMoreElements()) {
String headerName = enums.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName+":"+headerValue);
}
System.out.println("---------------------------------");
// 3.实体内容
System.out.println("----请求实体内容----");
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf)) != -1) {
String str = new String(buf, 0, len);
System.out.println(str);
}
}
/*
* 注意:Get请求是没有实体内容的,只有Post请求才有实体内容。
* Post提交的参数才会出现在实体内容中。
*/
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("\t post方法");
System.out.println("---------------------------------");
// 3.实体内容
System.out.println("----请求实体内容----");
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf)) != -1) {
String str = new String(buf, 0, len);
System.out.println(str);
}
}
}
request请求入门,通过请求头操作
最新推荐文章于 2024-06-14 14:46:48 发布