概念: Hyper Text Transfer Protocol 超文本传输协议
传输协议: 定义了客户端与服务器端通信时,发送数据的格式
特点:
- 基于TCP/IP的高级协议
- 默认端口号为80
- 基于请求/响应模型的:一次请求对应一次响应
- 无状态的:每次请求之间相互独立,不能交互数据
HTTP中请求方法中,常用的两种:
GET:
- 请求参数在请求行中,在url后
- 请求的url的长度是有限制的
- 不太安全
POST:
- 请求参数在请求体中
- 请求的url的长度是没有限制的
- 相对安全
Request:
1.request对象与response对象的原理
1.request和response对象是由服务器创建的。我们来使用他们
2.request用于获取消息,response用于响应消息
2.request功能
3. 获取请求行数据
(一)获取虚拟目录
String getContextPath( )(二)获取请求URL
String getRequestURI( ) 短路径
String getRequestURL( ) 长路径
4.获取请求头信息
String name = request.getHeader( " name " )
5.获取请求体方法
请求体:只有POST请求才有请求体,在请求体中封装了POST请求的请求参数
5.1获取流对象
bufferedReader getReader() :获取字符输入流,只能操作字符
ServletInputStream getInputStream() : 获取字节输入流,可以操作所有数据类型
常用方法:
1.获取请求参数的常用方法:不论是get还是post请求都能用以下方法来获取参数
* String getParameter(String name) : 根据参数名返回参数值
* String[] getPatameterValues(String name) : 根据参数名返回参数值数组
* Enumeration<String> getParameterNames() : 获取所有请求的参数名称
* Map<String, String[]> getParameterMap() : 获取所有参数的Map集合
2.请求转发
*通过request对象获取请求转发对象: request.getRequestDispatcher("路径").forward(request,response);
特点:
1.浏览器地址不发生变化
2.只能转发当前服务器内的资源
3.转发是一次请求
3.共享数据
4.获取ServletContext
响应消息
实现重定向的方法:response.sendRedirect( " 路径名 " )
解决响应输出到浏览器乱码问题:
//设置编码,在获取流之前设置
response.setContentType("text/html;charset=utf-8")
//获取流对象
PrintWriter pw = response.getWriter()
//输出数据
pw.writer("你好!hello")