Day10_JavaWeb

一、HTTP

1.HTTP请求消息数据格式

在这里插入图片描述

* 请求消息数据格式
	1. 请求行
		请求方式 请求url 请求协议/版本
		GET /login.html	HTTP/1.1

		* 请求方式:
			* HTTP协议有7中请求方式,常用的有2* GET1. 请求参数在请求行中,在url后。
					2. 请求的url长度有限制的
					3. 不太安全
				* POST1. 请求参数在请求体中
					2. 请求的url长度没有限制的
					3. 相对安全
	2. 请求头:客户端浏览器告诉服务器一些信息
		格式:“请求头名称: 请求头值”
		* 常见的请求头:
			1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
				* 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

			2. Referer:http://localhost/login.html
				* 告诉服务器,我(当前请求)从哪里来?
					* 作用:
						1. 防盗链:
						2. 统计工作:
	3. 请求空行
		空行,就是用于分割POST请求的请求头,和请求体的。(Get请求没有请求空行和请求体)
	4. 请求体(正文)* 封装POST请求消息的请求参数的。(Get请求没有请求空行和请求体)

Referer:http://localhost/login.html为什么可以起到防盗链的功能?
优酷花了几百万买了“战狼二”的版权,你自己写了个小视频网站让战狼二播放链接指向优酷的播放链接,你一分钱没花却盗取了优酷的版权。

Referer 告诉服务器,当前请求从哪里来
优酷会利用if referer.equals("优酷首页")来判断你这个请求是否从优酷首页来的,如果不是那就不允许播放

Referer:http://localhost/login.html为什么可以起到统计的功能?
你投了300万让百度、新浪、搜狐给你打广告,用户在百度/搜狐上发现了这个广告就会点进去。
Referer 告诉服务器当前请求从哪里来,所以你可以统计百度用户的数量、搜狐用户的数量、新浪用户的数量
从而看这钱花的值不值

1.HTTP响应消息数据格式

在这里插入图片描述

2. 响应消息:服务器端发送给客户端的数据
	* 数据格式:
		1. 响应行
			1. 组成:协议/版本 响应状态码 状态码描述
			
			  什么是响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
			  状态码都是3位数字 :
					1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
					2. 2xx:成功。代表:200
					3. 3xx:重定向。代表:302(重定向)304(访问缓存)
					       	302:浏览器访问A资源,A资源发了个302(重定向)说我办不了你找C去吧。
					       	304:浏览器访问了一张图片并把它缓存下来,当它再次访问这张图片时该图片就会发出304表示你本地有缓冲,你从缓冲里面找吧
					5. 4xx:客户端错误。
						* 代表:
							* 404(请求路径没有对应的资源) 
							* 405:请求方式没有对应的doXxx方法(你代码里面删掉了doGet方法,你启动servlet,浏览器访问该页面就会报错为4056. 5xx:服务器端错误。代表:500(服务器内部出现异常)
		2. 响应头:
			1. 格式:头名称: 值
			2. 常见的响应头:
				1. Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
				2. Content-disposition:服务器告诉客户端以什么格式打开响应体数据
					* 值:
						* in-line:默认值,在当前页面内打开
						* attachment;filename=xxx:以附件形式打开响应体。文件下载
		3. 响应空行
		4. 响应体:传输的数据

1. HTTP协议之响应状态码

1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
2xx:成功。代表:200
3xx:重定向。代表:302(重定向)304(访问缓存)
			302:浏览器访问A资源,A资源发了个302(重定向)说我办不了你找C去吧。
			304:浏览器访问了一张图片并把它缓存下来,当它再次访问这张图片时该图片就会发出304表示你本地有缓冲,你从缓冲里面找吧
4xx:客户端错误。
	* 代表:
		* 404(请求路径没有对应的资源) 
		* 405:请求方式没有对应的doXxx方法(你代码里面删掉了doGet方法,你启动servlet,浏览器访问该页面就会报错为4055xx:服务器端错误。代表:500(服务器内部出现异常)

200 OK //客户端请求成功

400 Bad Request // 客户端有语法错误,不能被服务器所理解

402 Forbidden //服务器收到请求,但是拒绝提供服务

404 not find //请求资源不存在

1.关于get和post的区别(面试常问!)

在这里插入图片描述

二、Request

2.Request对象的主要方法

1.获取路径相关
request.getContextPath()  /day14
request.getRequestURI()   /day14/demo1
request.getRequestURL()   http://localhost/day14/demo1

2. 获取请求头数据
request.getHeader("user-agent")
request.getHeaderNames():获取所有的请求头名称

3.获取请求参数
request.getParameter("username");
request.getParameterValues("hobby");
request.getParameterNames();
request.getParameterMap();

4.设置编码:
* get方式:tomcat 8 已经将get方式乱码问题解决了
* post方式:会乱码,需要request.setCharacterEncoding("utf-8");
* 设置了编码以后request.getParameter("username");//获取到的username是“张三”也不会乱码了

5.请求转发
你可以看到request的主要功能都是获取get方法(获取请求头、获取参数、获取请求体等等)
一旦要是出现了set方法那就是要走人了(先setAttribute,然后就是拿着属性转发走了)
request.setAttribute("msg","hello");
request.getAttitude("msg");
request.removeAttribute("msg");
request.getRequestDispatcher("/requestDemo9").forward(request,response);

6.其它:
getSession()

getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组

getCharacterEncoding():返回请求中的字符编码方式

3.获取请求参数

在这里插入图片描述
在这里插入图片描述

4.乱码问题

@WebServlet("/requestDemo7")
//doGet里面:

        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");//获取到的username是“张三”也不会乱码了

//doPost: 
        this.doPost(request,response);

5.请求转发示例

@WebServlet("/requestDemo8")
doPost:
        System.out.println("demo8888被访问了。。。");

        request.setAttribute("msg","hello");
        request.getRequestDispatcher("/requestDemo9").forward(request,response);
doGet:
        this.doPost(request,response);
@WebServlet("/requestDemo9")
doPost:
        Object msg = request.getAttribute("msg");
        System.out.println(msg);

        System.out.println("demo9999被访问了。。。");
doGet:
        this.doPost(request,response);

2.URI和URL的区别是什么?

* URI:统一资源标识符 : /day14/demo1
* URL:统一资源定位符 : http://localhost/day14/demo1	
* URI相当于“共和国”,URL相当于“中华人民共和国”,URI的范围要大于URL的范围

URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

2.转发和重定向的区别

		* 重定向的特点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackTurn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值