Tomcat服务器、Http请求与响应

静态web资源:指页面中数据始终不变的

动态web资源:指页面中数据由程序产生,不同时间点内容不同

web应用:由多个静、动态Web资源组成,这些文件一般通过一个目录组织,这个目录被称为Web应用所在目录

网址访问:(客户端到服务器发送数据的全过程)

1.常用Web服务器

(1)WebLogic:是BEA公司产品,支持JavaEE规范(支持全部13门技术),商业服务器,负责政府银行债券可能会用到此服务器

(2)WebSphere:是IBM公司的产品,支持JavaEE规范,商业服务器

(3)Tomcat:支持全部的Jsp和Servlet规范(13种技术的两种)

Tomcat服务器

1.启动常见问题

(1)配置JAVA_HOME环境变量:Tomcat是用Java写的程序,需要对Java的支持才能运行。所以运行时必须要知道Jdk的位置

(2)端口占用问题:Tomcat服务器端口被其它程序占用Tomcat启动时读的是配置文件是server.xml,通过修改来修改Tomcat的默认监听的端口

(3)Catalina_home环境变量:startup.bar会启动此环境变量绑定地址的Tomcat服务器,不配置就会启动对应的

2.Tomcat目录结构

3.虚拟目录的映射方式

Web应用交给服务器管理的过程被称为虚拟目录的映射,Web服务管理Web应用

3.1  定义方式1

(1)在server.xml中的<host>标签中配置<Context  path="/虚拟目录名称"  docBase="Web应用所在目录地址">虚拟目录==>对外访问路径(访问网站时浏览器地址栏中需输入的值)

(2)映射缺省web应用:<Context  path=""  docBase="web应用所在目录" />。这样设置以后浏览器不用输入虚拟目录名称,即可访问web应用所在目录的文件

3.2 定义方式2

(1)在【conf/Catalina/主机名/】这个目录下修改,在此目录下创建xml文件,这个xml文件名就是虚拟目录名。xml文件中定义<Context  docBase=""web应用所在目录" />

(2)可通过定义xml文件名为【a#b#c.xml】,【#】这里可充当虚拟目录的目录分隔符

(3)可通过命名xml文件名为【Root.xml】来定义缺省Web应用

3.3 定义方式3

(1)只要文件放在webapps目录中,即可映射成虚拟目录的映射

4.web应用所在目录结构

5. 配置首页

在web应用的web.xml中可配置首页,这个配置文件可以为web配置很多东西,如监听器、过滤器


 
 
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  5. version= "3.0">
  6. <welcome-file-list>
  7. <welcome-file>web应用根目录的首页文件名称 </welcome-file>
  8. </welcome-file-list>
  9. </web-app>

6.配置虚拟主机

(1)在server.xml中配置<Host  name="www.wxhd.com"  appBase="主机所在目录" >

(2)然后还需要配置System32/drivers目录下的Host文件,因为DNS上你没有注册,只能通过这种方式

特:可通过<Context>标签中配置属性reloadable="ture",这样可以实现网站的自动更新。不过尽量别使用,因为有频繁的加载问题

7.Tomcat体系结构

8.加密连接器——公钥 私钥

(1)对称加密:我们一般所使用的加密方式,加密文件的密码无法安全的告诉用户

(2)不对称加密:公钥/私钥加密——公钥加密的数据只能私钥解,私钥加密的数据只能公钥解

安全加密的实现:服务端创建自己的公钥和私钥,然后把公钥发送给服务端,用户用得到的公钥加密数据,然后把加密完的数据发送给服务端,服务端用自己的私钥解密数据,即可实现安全获取数据。其中过程中第三者截取服务端的公钥和加密的数据后将无法对这个数据进行解析。

 

问题:如果第三者截取服务端发送的公钥后,自己创建一对公钥与私钥,然后以服务端名义把私钥发送给服务端,安全隐患仍然存在?!

问题解决:问题产生在于公钥不是由服务端发送过来的,而是由第三者发送过来的。解决只需让用户检验公钥确实是服务端发送过来的即可。可用ca(数字证书)这种方式确定解决这个问题,密码学这个讨论结果就是没有安全可言,必须基于某个信任点来考虑

 

服务端的公钥被ca所担保,并且给服务端一份数字证书,然后服务端把证书发送给用户,证书中包括ca的签名和公钥。而且用户也会建立自己的公钥与私钥,公钥发送给服务端,并且用私钥对数据证书的数据进行加密返回。服务端用用户的公钥解得数据成功,即可验证数据是由用户发送回来的。然后验证数字签名和用自己的私钥进行解密数据,即可安全获取数据。

HTTP协议

HTTP:hypertext   transfer  protocol——是TCP/IP应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程

Http1.0:建立与服务器的连接后,客户端只能获得一个web资源,然后断开连接

Http1.1:建立与服务器的连接后,客户端能获取多个web资源,而且不会断开连接

知识点:

<1>.web页面中有几个链接,就会产生多少个请求

<2>.talnet中输入【talnet  localhost 8080】后,默认回写没有打开,需要用【ctrl+]】来打开。这个工具可以向服务器发送http请求

1.Http请求

1.1 请求行

GET  /books/java.html  HTTP/1.1

(1)请求方式【GET】

(2)请求的资源地址地址【/books/java.html】

(3)请求协议【HTTP/1.1】

(2)get与post的区别

         <1>.get:浏览器直接输入地址访问、点超链接等都是get访问方式,不设置一般都是get。是以【URL地址?数据=值&数据=值...】这种方式传递值,地址后附带的参数是有限的,其数据量大小不能超过1k

         <2>.post:在请求正文中传递数据,并且传送数据大小是无限的

=======================================================================================================================

1.2 请求消息头

(1)Accept:用于告诉服务器,客户机所支持的数据类型(MIME类型,这种类型可以在Tomcat的web.xml中查询)

(2)Accept-Charset:用于告诉服务器,客户机所支持的码表

(3)Accept-Encoding:用于告诉服务器,客户机所支持的压缩格式【如gzip】

(4)Accept-Language:用于告诉服务器,客户机的语言环境(google可通过识别这个请求来想不通的客户机发送不通语言的页面

(5)Host:用于告诉服务器,客户机想访问服务器哪台主机

(6)If-Modified-Since:用于告诉服务器,客户端对于资源的最后缓存时间(通过判断这个时间,可以让客户机只访问自己缓存,服务器不向客户机发送资源,可提升服务器性能

(7)Referer:用于告诉服务器,客户机是从哪个页面访问服务器的(可实现防掉链或者获取不同网站的本站广告点击次数

(8)User-Agent:用于告诉服务器,客户机的机器环境(例如使用的操作系统和浏览器的版本号)

(9)Cookie:客户端可以通过这个头字段带一些数据给服务器

(10)Connection:用于告诉了服务器,客户机请求完毕后是否关闭连接

(11)Date:用于告诉服务器,客户机当前请求的时间值

=======================================================================================================================

1.3 请求正文

特:只有请求的类型为时post才会有,并且消息头和正文之间有一个空行的

2. Http响应

2.1 响应行

(1).【Http版本号    状态码     原因叙述】

(2)常见状态码:

    <1>.200——表示一切正常

    <2>.302(307):页面重新指定向(可用在付款前必须登录、联网前必须登录)

    <3>.304:表示文件未修改,使用内存中获取页面资源

    <4>.404:表示找不到网页

    <5>.500:服务端出错,可能是代码错误

=======================================================================================================================

2.2 响应头

(1)Location:用来告诉浏览器请求需要重新指定,接下来去访问哪个网页。(一般结合状态码302来使用)

(2)Server:用来告诉浏览器服务器的类型

(3)Content-Encoding:用来告诉浏览器服务端对回送数据采用的压缩方式(值为gzip——降低了流量和浏览速度的提升,降低了花销)

(4)Content-length:用来告诉浏览器回送数据大小【值为数字】

(5)Content-Language:用来告诉浏览器回送数据的语言环境【值为语言环境名称】

(7)Content-Type:用来告诉浏览器回送数据的类型【值为MIME类型,可以为码表类型】

(8)Last-Modified:用来告诉浏览器回送数据最后的修改时间

(9)Refresh:用来告诉浏览器多上时间刷新一次

(10)Content-Disposition:用来告诉浏览器用下载的方式打开文件

(11)Transfer-Encoding:告诉浏览器数据以块的形式回送

(12)Set-Cookie:用来告诉浏览器要存储的内容(数据的回送格式)

(13)ETag:为网页生成唯一的编号,服务器的网页一更改这个编号也会变化。服务端可以通过判断浏览器缓存中网页存储的编号是否是改变后的,来让浏览器是否使用缓存(Etag控制缓存的级别可到毫秒级别,Modified响应头能控制到秒级别)

(14)Expires:缓存相关,控制浏览器缓存数据的时间【-1或0】:不让浏览器缓存浏览器回送的数据。【时间值(2015 1 23)】:表示在这个时间点之前客户机不需要从服务端拿数据,使用缓存即可,只关联一个文件

(15)Cache-Control:【no-cache】不让缓存数据(因为市场上浏览器太多,支持的不同,所以需要多个响应头控制缓存)

(16)Pragma:【no-cache】不让缓存数据(控制不让缓存记得Expires、Cache-Control、Cache-Control三个响应头一起用)

(17)Connection:【close/Keep-Alive】连接完成后是否保持连接

(18)Date:回送数据的时间

=======================================================================================================================

2.3 响应正文

就是页面的数据或者程序产生的数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值