概念:Hyper Text Transfer Protocol 超文本传输协议
* 传输协议:定义了,客户端和服务器端通信时,发送数据的格式
* 特点:
1. 基于TCP/IP的高级协议
2. 默认端口号:80
3. 基于请求/响应模型的:一次请求对应一次响应
4. 无状态的:每次请求之间相互独立,不能交互数据
- 请求消息数据格式
-
请求行
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1- 请求方式:
- HTTP协议有7中请求方式,常用的有2种
- GET:
- 请求参数在请求行中,在url后。
- 请求的url长度有限制的
- 不太安全
- POST:
- 请求参数在请求体中
- 请求的url长度没有限制的
- 相对安全
- GET:
- HTTP协议有7中请求方式,常用的有2种
- 请求方式:
-
- 用图解的方式了解HTTP和如何用虚拟路径
- 参数部分都要提交到后台进行操作,比较重要
- 虚拟路径
- 端口号可有可无,我设置的80, 浏览器默认的就是80,设置为其他的端口号则需要加上端口号
*下面的部分方法用代码和注释的方式演示
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;
/**
*request对象和response对象的原理
* 1. request和response对象是由服务器创建的。我们来使用它们
* 2. request对象是来获取请求消息,response对象是来设置响应消息
*/
/**
* request功能:
* 1. 获取请求消息数据
* 获取请求行数据
* GET /demo1?name=zhangsan HTTP/1.1
* 方法:
* 1. 获取请求方式 :GET
* String getMethod()
* 2. (*)获取虚拟目录:/
* String getContextPath()
* 3. 获取Servlet路径:
* String getServletPath()
* 4. 获取get方式请求参数:name=zhangsan
* String getQueryString()
* 5. (*)获取请求URI:/day14/demo1
* String getRequestURI(): /demo001/servletDemo01
* StringBuffer getRequestURL()
*
* URL:统一资源定位符 : http://localhost//demo001/demo1
* URI:统一资源标识符 : /demo001/demo1
*
* 6. 获取协议及版本:HTTP/1.1
* String getProtocol()
*
* 7. 获取客户机的IP地址:
* String getRemoteAddr()
*/
// 上述 几种方法进行代码演示
//浏览器为Chrome(谷歌)
@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取请求的方式:分为get 和 post ,并在控制台上打印
String method = request.getMethod();
System.out.println(method);
// 2. (*)获取虚拟目录:/
// String getContextPath()
String contextPath = request.getContextPath();
System.out.println(contextPath);
// 3.获取Servlet路径:
// String getServletPath()
String servletPath = request.getServletPath();
System.out.println(servletPath);
// 4.获取get方式请求参数:name=tg_锅锅
// String getQueryString()
String queryString = request.getQueryString();
System.out.println(queryString);
// 5.(*)获取请求URI:/day14/demo1
// String getRequestURI(): /demo1
// StringBuffer getRequestURL() :http://localhost/
String requestURI = request.getRequestURI();
System.out.println(requestURI);
// 6.获取协议及版本:HTTP/1.1
// String getProtocol()
String protocol = request.getProtocol();
System.out.println(protocol);
// 7. 获取客户机的IP地址:
// String getRemoteAddr()
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
- 执行结果