乐趣区

关于java:tomcatHTTP

什么是服务器?

服务器: 分为服务器硬件(独立 IP 地址的计算机) 和 服务器软件(就是一个计算机程序,tomcat 服务器软件), 才能够对外提供服务。
tomcat 就是一个 web 服务器软件,是由 apache 组织提供的一款服务器软件,特点:玲珑灵便,收费开源,简略易用。

HTTP 协定?

HTTP 协定是用于规定浏览器和服务器之间的通信形式 / 规定
次要规定了浏览器给服务器发送的申请信息的格局
服务器给浏览器发送响应信息的格局
根本准则:

一次申请,只对应一次响应
由浏览器发动,服务器只能期待申请,依据申请作出回应。

HTTP 申请:

申请行中:

 7 种提交形式, 然而咱们只用 GET 和 POST。申请资源门路
遵循的协定和版本

申请头:

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

申请实体:

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


状态行:

遵循的协定和版本 + 解决的后果的状态码

若干响应头:

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 配置

当浏览器发申请到服务器时, 服务器将会调用 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 协定的格局发送给浏览器。

转发:

一种跳转形式
发送申请拜访服务器中的某一个资源(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()办法从域中获取。

实现重定向:

特点:
重定向是两次申请、两次响应
浏览器的地址栏地址会发生变化
request 对象不是同一个
重定向前后的两个资源能够是来自不同的 web 利用
实现代码:

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

退出移动版