tomcat+HTTP

什么是服务器?

服务器:分为服务器硬件(独立IP地址的计算机) 和 服务器软件(就是一个计算机程序,tomcat服务器软件),才可以对外提供服务。
tomcat就是一个web服务器软件,是由apache组织提供的一款服务器软件,特点:小巧灵活,免费开源,简单易用。

HTTP协议?

HTTP协议是用于规定浏览器和服务器之间的通信方式/规则
主要规定了浏览器给服务器发送的请求信息的格式
服务器给浏览器发送响应信息的格式
基本原则:

一次请求,只对应一次响应
由浏览器发起,服务器只能等待请求,根据请求作出回应。

HTTP请求:
tomcat+HTTP_第1张图片
请求行中:

7种提交方式,但是我们只用GET和POST。
请求资源路径
遵循的协议和版本

请求头:

Key-Value结构
localhost通知服务器,浏览器要请求的是哪一台虚拟主机。
Accept:text/html, appliaction/xhtml+xml通知服务     器,浏览器能接收的响应数据类型。

请求实体:

GET 提交,请求实体是没有内容的!
POST 提交,并且请求中携带了数据,请求实体中才会有内容

tomcat+HTTP_第2张图片
状态行:

遵循的协议和版本+处理的结果的状态码

若干响应头:

key-value格式
响应的数据类型+服务器响应数据的长度...

响应实体内容:

响应实体就是浏览器所请求文件的内容

GET提交和POST提交有什么区别?
GET提交:

数据通过问号拼接在地址栏URL地址的后面,不安全
数据量是有限制的,通常不能超过1KB或者4KB

POST提交:

POST提交是通过请求实体将数据提交给服务器,不会显示在地     址栏上,安全
数据量理论上是没有限制的

总结:

请求中没有数据,尽量使用GET提交
但数据量不大,并且数据没有隐私性,也尽量使用GET提交
数据量比较大或者数据较为隐私,此时推荐使用POST提交

什么是Servlet?

Servlet本质上是一段Java程序,无法独立运行,需要将Servlet程序放在服务器中,由服务器调用才可以执行
doGet方法:

 当浏览器发送请求为GET提交时, 将会调用doGet方法来        处理请求
 doPost方法:当浏览器发送请求为POST提交时,调用doPost      方法来处理请求

web.xml配置
tomcat+HTTP_第3张图片

当浏览器发请求到服务器时,服务器将会调用Servlet中的service方法来处理请求。在调用service方法之前会创建出request和response对象
每次浏览器访问服务器,在调用service方法处理请求之前都会创建request和response对象
响应结束时,服务器会销毁request和response对象。

request和response介绍:

request是代表HTTP请求信息的对象, 封装了浏览器发送给服     务器的请求信息(请求行、请求头、请求实体等)

获取值:
request.getParameter(String paramName)
根据请求参数的名字获取对应的参数值返回值是一个字符串;
参数有多个值,只会返回第一个值
不存在的参数,返回值为null
request.getParameterValues(String paramName)
返回值是一个字符串数组,参数名对应的所有参数值
不存在的参数,返回值为null

中文乱码问题:
GET提交的中文参数,会出现乱码问题!(Tomcat8后)
POST提交,会用iso8859-1编码接收,会出现中文乱码问题!
解决:request.setCharacterEncoding("utf-8");
(set卡润的硬扣顶)
 

response是代表HTTP响应信息的对象,服务器再将response     中的数据取出,按照HTTP协议的格式发送给浏览器。

转发:
tomcat+HTTP_第4张图片
一种跳转方式
发送请求访问服务器中的某一个资源(A)时,该资源将请求转交给另外一个资源(B)进行处理响应的过程
特点:

一次请求,一次响应
浏览器的地址栏地址不会发生变化。
request对象是同一个
请求转发前后的两个资源必须属于同一个Web应用

转发实现:

request.getRequestDispatcher(url地址/转发到资源的地址).forward(req, res);
Dispatcher(第四八的) forward(佛尔韦的)

//从当前Servlet转发到 index.jsp(http://localhost/day10/index.jsp)
//request.getRequestDispatcher("/index.jsp").forward(request, response);
request.getRequestDispatcher("index.jsp").forward(request, response);

作为域对象使用

request在实现转发时,通过request.setAttribute(啊吐比的)和request.getAttribute方法带数据到目的地时
域对象所具备的三大特征:

生命周期:Servlet程序的service方法之前,会创建代表请求的request对象在请求处理完,响应结束时,会销毁request对象。
作用范围:在一次请求范围内
和请求转发配合使用,从Servlet带数据到JSP

request对象的getParameter和getAttribute方法有什么区别?

getParameter()方法是用于获取(从浏览器发送过来的)请求参数的,在服务器端再通过getParameter方法获取请求中的参数

getAttribute()方法是用于从request域中获取域属性时用的,即得先通过setAttribute方法将数据存入request域中,再通过getAttribute()方法从域中获取。

实现重定向:
tomcat+HTTP_第5张图片
特点:
重定向是两次请求、两次响应
浏览器的地址栏地址会发生变化
request对象不是同一个
重定向前后的两个资源可以是来自不同的web应用
实现代码:

response.sendRedirect(所重定向到资源的URL地址);
(森特,雨衣的雨哎)
response.sendRedirect( "http://www.baidu.com" );

你可能感兴趣的:(java)