JavaEE:day1 JavaWebServer&HTTP

Tomcat

Tomcat的目录结构

  • bin:存放启动和关闭Tomcat的脚本文件
  • conf:存放Tomcat服务器的各种配置文件
  • lib:存放Tomcat服务器的支撑jar包(JavaEE的Servlet包放在这里)
  • logs:存放日志文件
  • temp:存放运行时产生的临时文件
  • webapps:web应用所在目录,即供外界访问的web资源的存放目录
  • work:Tomcat的工作目录

Tomcat的context元素的属性

  • path:指定该web应用的url入口
  • docbase:指定web应用的绝对路径
  • reloadable:true时,tomcat服务器在运行状态下会监视在web-inf/classes、web-inf/lib目录下class文件的改动,以及监视web应用的WEB-INF/web.xml文件的改动,如果检测到有更新,服务器会自动冲洗加载web应用。其默认值是false。web应用在开放和吊事阶段将其改为true,可以方便对web的调试,在正式发布阶段将其改为false,可以降低tomcat的运行负荷,提高tomcat的运行性能
  • className:指定实现context组件的java类的名字,这个类必须实现org.apache.catalina

tomcat提供的配置context元素的途径

  • (低版本)到Tomcat安装目录/conf/[enginename]/[hostname]/[contextpath].xml文件中查找元素==web应用
  • 到Tomcat安装目录/conf/server.xml文件中查找元素。只适用于单个Web应用
  • [contextpath]:表示单个Web应用的URL入口。如果修改为ROOT,则该应用就是默认访问的应用

IDEA中的update功能

  • update resourse:更新静态资源
  • update classes and resourse:更新字节码文件以及静态资源
  • Redeploy:重新部署
  • Restart server:重启服务器

软件开发架构

  • c/s(client/server)
  • b/s(brower/server)

一些问题

  • 手工写一个web应用并布署到Tomcat
    conf-server.xml中的

    写一个文件夹里边放网页和WEB-INF放在webapps下就OK

  • 通过配置文件修改端口号

conf-server.xml中的

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
  • 手工写的应用放在E:\mywebapp\下,设置虚拟目录,实现访问

    ip/myvirtruepath/name.html
    在conf-server.xml中增加context元素,并且设置好url入口(path)和绝对路径(docBase:E:\mywebapp\)

  • 将个人主页(简易版)放在 E:\mywebsite\下,实现通过ip地址访问

HTTP协议

  • http默认的端口是80端口,为了方便起见,我们将自己的tomcat的端口号设置为80,
  • 域名解析(DNS服务器)(域名解析只解析域名,不管端口)
    搜索浏览器自身的DNS缓存-搜索操作系统自身的DNS缓存-读取Host文件(system32/drivers/etc/hosts)-向本地配置的首选DNS服务器发起域名解析请求
  • 某些木马会篡改host文件导致访问目的网站时自动跳转至别的网站(域名劫持)
  • tcp三次握手
    三次握手:
    “喂,你听得到吗?”
    “我听得到呀,你听得到我吗?”
    “我能听到你,今天balabala……”
  • 304表示使用了浏览器缓存 200表示服务器返回成功

抓包

  • 用Chrome自带的开发者工具
  • 用Progress Telerik Fiddler Web Debugger(Inspector-Raw)

HTTP请求报文的格式

请求行: 请求方法 请求URL 版本
请求首部:名: 值
                 名: 值
                (空行)
请求正文:(HTTP要传输的内容)

GET http://fiddler2.com/r/?Win8EL HTTP/1.1
Host: fiddler2.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
  • GET 方式
    如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据;多个数据之间以&进行分隔,例如:
    GET/mail/1.html?name=abc&password=xyz HTTP/1.1
    GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
  • POST方式
    如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。
  • 请求头:
    Accept:浏览器可接受的 (文件)MIME类型 / (大类型)/(小类型)
    Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
    Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
    Accept-Language: 浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
    Host:初始URL中的主机和端口
    Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面 (防盗链)
    Content-Type:内容类型
    If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT 服务器利用这个头与服务器的文件进行比对,如果一致,则告诉浏览器从缓存中直接读取文件。
    User-Agent:浏览器类型.
    Content-Length:表示请求消息正文的长度
    Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 )
    Cookie:这是最重要的请求头信息之一
    Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT
  • HTTP消息头
    使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。
    每个消息头包含一个头字段名称,然后依次是冒号、空格、值、回车和换行符
    如: Accept-Encoding: gzip, deflate
    消息头字段名是不区分大小写的,但习惯上讲每个单词的第一个字母大写。
    整个消息头部分中的各行消息头可按任何顺序排列。
    消息头又可分为通用信息头、请求头、响应头、实体头等四类
    许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。
    有些头字段可以出现多次 .
  • HTTP响应
    一个HTTP响应代表服务器向客户端回送的数据。
    一个完整的HTTP响应包括如下内容:
    一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。
  • HTTP响应的细节
    100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
    200~299 表示成功接收请求并已完成整个处理过程
    300~399 (重定向)为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址
    400~499 客户端的请求有错误
    500~599 服务器端出现错误
    重定向:两次发出http请求,地址栏的地址会改变
  • 常用状态码
    200(正常)
    表示一切正常,返回的是正常请求结果
    206 表示分段的请求OK
    301、302/307(临时重定向)
    指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
    304(未修改)
    表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
    404(找不到)
    服务器上不存在客户机所请求的资源。
    500(服务器内部错误)
    服务器端的程序发生错误
  • 常用响应头
    Location: http://www.cskaoyan.com/指示新的资源的位置
    Server: apache tomcat 指示服务器的类型
    Content-Encoding: gzip 服务器发送的数据采用的编码类型
    Content-Length: 80 告诉浏览器正文的长度
    Content-Language: zh-cn服务发送的文本的语言
    Content-Type: text/html; 服务器发送的内容的MIME类型
    Last-Modified: Sat, 24 Feb 2018 20:17:28 GMT 文件的最后修改时间
    Refresh: 指示客户端刷新频率,单位是秒
    Content-Disposition: attachment; filename=haha.zip指示客户端保存文件
    Set-Cookie: SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie
    Expires: 过期时间
    Cache-Control: no-cache (1.1)
    Connection: close/Keep-Alive
    Date: Sat, 24 Feb 2018 20:17:28 GMT

HTTP1.0和HTTP1.1的区别

  • http 1.0:每一次请求都会重新建立连接;无状态,不关心是和哪个服务器创建的(每个连接只处理一个请求和响应)
  • http 1.1:有状态,每创建一个连接,记录一下这个连接是连接到谁的,省去的每次请求重新建立连接的时间(一次连接可以处理多个请求和响应)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值