Java http
概念
超文本传输协议
传输协议:定义了客户端和服务器通信时,发送数据的格式
特点:
- 基于TCP/IP的高级协议
- 默认端口80
- 基于请求/响应模型的 一次请求对应一次相应
- 无状态的 每次请求相互独立,不能去交互数据
请求信息数据格式
请求行
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
请求方式:一共有7种 常用的有两种
GET POST的区别(重点)
1.GET: 请求参数在请求行中,在url后,ulr长度有限制
2.POST:请求参数在请求体中,ulr长度没有限制
请求头
请求头名称:请求头值
常见的请求头:
1.User-Agent:浏览器告诉服务器,访问服务器时用的浏览器版本信息。
2.Referer:告诉服务器,我(当前请求)从哪里来?
起防盗链和统计工作作用。
请求空行
空行 (起分割作用)
请求体(正文)
封装POST请求信息的请求参数的
Request
request和response对象的原理
request和response对象通过服务器自动创建,我们只是去使用它们

继承体系
HttpServletRequset -- 接口
| 继承
ServletRequset --接口
| 实现
org.apache.catalina.connector.RequestFacade 类
获取请求行数据
获取请求行数据
GET /day14/demo1?name=jie HTTP/1.1
获取请求方式: GET
String getMethon()
获取虚拟目录: /day14 (重点)
String getContextPath()
获取Servlet路径: /demo1
String getServletPath()
获取get方式请求参数 name=jie
String getQueryString()
获取请求URI :/day14/demo1 (重点)
String getRequestURI() 获取的是:/day14/demo1
StringBuffer getRequestURL 获取的是:http://localhost/day14/demo1
获取协议和版本 :HTTP/1.1
String getPrtocol()
获取客户机的IP地址
String getRemoteAddr()
代码操作
package request;
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;
@WebServlet("/RequestDemo1")
/* 获取请求方式: GET
String getMethon()
获取虚拟目录: /day14 (重点)
String getContextPath()
获取Servlet路径: /demo1
String getServletPath()
获取get方式请求参数 name=jie
String getQueryString()
获取请求URI :/day14/demo1 (重点)
String getRequestURI() 获取的是:/day14/demo1
StringBuffer getRequestURL 获取的是:http://localhost/day14/demo1
获取协议和版本 :HTTP/1.1
String getPrtocol()
获取客户机的IP地址
String getRemoteAddr()*/
public class RequestDemo1 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求方式: GET
String method=req.getMethod();
System.out.println(method);
//获取虚拟目录:
method=req.getContextPath();
System.out.println(method);
// 获取Servlet路径
method=req.getServletPath();
System.out.println(method);
//获取get方式请求参数 name=jie
method=req.getQueryString();
System.out.println(method);
// 获取请求URI
method=req.getRequestURI();
System.out.println(method);
//获取协议和版本
method=req.getProtocol();
System.out.println(method);
//获取IP地址
method=req.getRemoteAddr();
System.out.println(method);
}
}


获取请求头
方法
通过请求头名称获取请求头的值
String getHeader(String name)
获取所有的请求头名称
Enumeration<String>getHeaderNames

浙公网安备 33010602011771号