Http与HttpServelRequest,HttpServletResponse
2021-01-08 02:28
标签:标签 uid 注销 idt 状态 font 长度 存在 端口 POST请求 响应的HTTP协议格式 HttpServletRequest类有什么作用 常用API介绍: 如何获取请求参数 表单: 服务器代码 解决GET请求中文乱码第一种方案: * 1、先以字符集iso-8859-1进行编码 * 2、以字符集UTF-8进行解码操作 解决GET请求中文乱码第二种方案: 找到你Eclipse中的Tomcat的配置文件server.xml,找到Connector标签,添加URIEncoding=”UTF-8” 属性 POST请求中文乱码解决方案一(不推荐使用): * 1、先以字符集iso-8859-1进行编码 * 2、以字符集UTF-8进行解码操作 POST请求中文乱码解决方案二(推荐使用): 请求的转发,是指,从一个动态资源,跳转到另一个资源的行为。叫转发。
web中/斜杠的不同意义 两个输出流的说明 要求往客户端回传字符串。hello。 响应的乱码解决 请求重定向,是指从一次请求结果,获取信息,再请求到另一个资源。这种行为叫请求重定向 转发 重定向 浏览器地址栏 没有变化 有变化 几次请求 1次请求 2次请求 API request response WEB-INF 可以访问WEB-INF下的资源 不能访问WEB-INF下的资源 共享request请求域数据 可以 不可以 目标资源 只能访问当前工程以内的资源 可以访问工程外的资源 . Http与HttpServelRequest,HttpServletResponse 标签:标签 uid 注销 idt 状态 font 长度 存在 端口 原文地址:https://www.cnblogs.com/zhaoyunlong/p/13545659.html 什么是HTTP协议
什么是协议?
协议是双方或多方相互之间约定好,大家都需要遵守的规则。叫协议。
什么是HTTP协议?
HTTP协议是客户端和服务器之间通信时数据都需要遵守的规则。
HTTP协议,也包含是通信的数据内容。
客户端和服务器之间数据通信的内容,也叫报文。
请求的HTTP协议格式
i.GET请求
1、请求行
(1)请求的方式 ====>>>> GET
(2)请求的资源地址 ====>>>> 请求的资源地址(+?+请求参数)
(3)请求的协议和版本号 ===>>>> HTTP/1.1
2、请求头
(1)key : value 不同的key有不同的作用
1、请求行
1、请求的方式 ====>>>> POST
2、请求的资源地址 ====>>>> 请求的资源地址
3、请求的协议和版本号 ===>>>> HTTP/1.1
2、请求头
1、key : value 不同的key有不同的作用
请求头和请求体之间有一个空行
3、请求体
常用请求头的说明
Accept: 客户端可以接收的数据类型
Accept-Language: 客户端可以接收的语言
Host: 请求的服务器IP和端口号
User-Agent: 浏览器的信息
Content-Length: 请求体的长度
Accept-Encoding: 服务器返回的数据,支持的压缩格式(或编码格式)
哪些是GET请求,哪些是POST请求
GET请求:
1、在浏览器地址栏中输入请求地址,然后敲回车
2、a标签
3、script标签引入js文件
4、link标签引入css文件
5、img标签引入图片
6、iframe标签引入页面
7、form标签 method=GET
POST请求:
form标签 method=POST
1、响应行
(1)响应的协议和版本号 HTTP/1.1
(2)响应状态码 200
(3)响应状态描述符 OK
2、响应头
(1)空行
3、响应体
a) 常用的响应码说明
200 表示请求成功
302 表示请求重定向
404 表示服务器已经收到你的请求,但是你请求的资源不存在
500 表示服务器已经收到你的请求,但是服务器内部错误(代码)
1.HttpServletRequest类
HttpServletRequest类它表示所有请求过来的信息。每次只要有请求进来。Tomcat服务器都会把请求里的内容封装到HttpServletReqeust对象中,然后传递给Servlet程序去使用。
HttpServletRequest对象实例,由Tomcat服务器在每次请求进来的时候负责创建。
a) HttpServletRequest类的常用方法
request.getRequestURI() 获取请求的URI地址 请求的资源地址
request.getRequestURL() 获取请求的统一资源定位符 请求的绝对路径
request.getRemoteHost() 获取客户端的ip
request.getHeader() 获取请求头
request.getParameter() 获取请求的参数值
request.getParameterValues() 获取请求的参数值==多个值
request.getMethod() 获取请求的方式
request.setAttribute(key, value); 保存域数据
request.getAttribute(key); 获取域数据
request.getRequestDispatcher() 获取请求转发对象
========================后面的内容=================================
request.getCookies() 获取Cookie信息
request.getSession() 获取会话信息public class RequestAPI extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// i.getRequestURI() 获取请求的URI地址 请求的资源地址
System.out.println( "请求的资源地址:" + request.getRequestURI() );
// ii.getRequestURL() 获取请求的统一资源定位符 请求的绝对路径
System.out.println("请求的资源绝对路径:" + request.getRequestURL());
// iii.getRemoteHost() 获取客户端的ip
/**
* 如果请求地址是localhost ====客户端是>>>0:0:0:0:0:0:0:1
* 如果请求地址是127.0.0.1 ====客户端是>>>127.0.0.1
* 如果请求地址是:你真正的ip(或域名) ====客户端是>>>真实的客户端ip地址
*/
System.out.println( "客户端的ip地址:" + request.getRemoteHost() );
// iv.getHeader() 获取请求头
System.out.println( "浏览器信息:" + request.getHeader("User-Agent") );
System.out.println( "Host:" + request.getHeader("Host") );
// getMethod() 获取请求的方式
System.out.println( "请求的方式:" + request.getMethod() );
}
}protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 用户名
String username = request.getParameter("username");
// 密码
String password = request.getParameter("password");
String[] hobby = request.getParameterValues("hobby");
System.out.println("用户名:" + username);
System.out.println("密码:" + password);
System.out.println("兴趣爱好:" + Arrays.asList(hobby));
}
a) GET请求的中文乱码解决
// 用户名
String username = request.getParameter("username");
/**
* 1、先以字符集iso-8859-1进行编码
* 2、以字符集UTF-8进行解码操作
*/
username = new String (username.getBytes("iso-8859-1"),"UTF-8" );
System.out.println( username );a) POST请求的中文乱码解决
// 设置请求体的字符集,解决post请求中文知码
// setCharacterEncoding方法一定要在getParameter之前调用才能生效
request.setCharacterEncoding("UTF-8");
a) 请求的转发(在jsp之后显示如何具体使用)
a) base标签的作用
a) Web中的相对路径和绝对路径
回顾JavaSE的路径:
相对路径: 从工程名开始算
绝对路径: 盘符:\文件名
JavaSE的路径,不能在html页面中使用。
Web的路径是:
相对路径:
. 当前目录
.. 上一级目录
资源名 ./资源名 ./可以省略
绝对路径:
http://ip:port/工程名/资源名
1、在实际开发中,不允许简单的使用相对路径进行开发
2、在实际开发中,都必须使用绝对路径。
http://ip:port/工程名/资源名
base标签+相对路径
斜杠打头的地址
在web中 /斜杠 就是绝对路径。
/斜杠 被html浏览器解析的时候,地址是:http://ip:port/
/斜杠 如果在服务器代码中被解析。则得到的地址是:http://ip:port/工程名/
比如说:
web.xml 配置文件:
1.HttpServletResponse类
a) HttpServletResponse类的作用
HttpServletResponse类表示所有响应的信息。通过这个类,我们可以设置返回给客户端的信息。
字符流 response.getWriter(); 常用
字节流 response.getOutputStream(); 少用(下载)
这两个流,只能同时使用一个。使用了字节流,就不能使用字符流。反之亦然。
两个流,同时只能使用一个。
a) 如何往客户端回传数据
// 先获取字符流
PrintWriter writer = response.getWriter();
// print方法往客户端输出数据
writer.print("hello");
// 同时设置客户端和服务器都统一使用UTF-8字符集,还设置了响应头
// 此方法一定要在获取流之前调用 才有效
response.setContentType("text/html; charset=UTF-8");
a) 如何设置响应头和响应状态码
// 设置响应状态码
response.setStatus(302);
// 设置响应头
response.setHeader("Location", "http://localhost:8080/day07/response2");
a) 请求重定向
// 设置请求重定向
response.sendRedirect("http://www.baidu.com");
1.请求转发和重定向的对比
1、看需求
(1)我要访问WEB-INF里面的内容 === 请求转发
(2)我要访问http://www.baidu.com === 请求重定向
2、在请求转发和请求重定向都可以跳转的情况下
(1)优先使用请求转发 (因为快 , SpringMVC底层默认也是使用请求转发)
(2)请求转发出bug,再排查,不行,再使用重定向。
(3)跳到首页(一般使用重定向,注销功能)
文章标题:Http与HttpServelRequest,HttpServletResponse
文章链接:http://soscw.com/index.php/essay/40837.html