JavaWeb——(7)Tomcat服务器与http协议

目录

一、Web与Web服务器简介

1.1Web概述

1.2服务器简介

二、Tomcat

2.1Tomcat服务器的安装与启动

2.2Tomcat端口号被占用解决办法

2.3Tomcat的主要目录

2.4JavaWeb应用的目录结构

2.5Tomcat手动部署服务器

2.5.1开放目录部署

2.5.2war包

2.6继承Tomcat与自动部署应用

2.7URL与URI

2.8虚拟目录

2.9配置默认端口、应用、主页

三、HTTP协议

3.1HTTP协议概述

3.2请求

3.2.1请求消息行

3.2.2请求消息头

3.2.3消息正文

3.3响应

3.3.1响应消息行

3.3.2响应消息头

3.3.3响应正文


 

一、Web与Web服务器简介

1.1Web概述

Internet上供外界访问的Web资源分为:

  • 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
    • 技术:html
  • 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
    • 技术:JSP/Servlet、ASP、PHP等

在Java中,动态web资源开发技术统称为Javaweb。

 

1.2服务器简介

学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。

常见的web服务器如下:

  • WebLogic:BEA公司的产品,是目前应用最广泛的Web服务器,支持JavaEE规范,而且不断的完善以适应新的开发要求
  • WebSphereAS:IBM公司的产品,支持JavaEE规范(13种核心规范,包括Servlet/JSP、JDBC、JNDI、JTP、XML等)
  • JBoss:是一个基于JavaEE的开放源代码的应用服务器
  • Tomcat:是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。是在SUN公司推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用Java语言编写。

接下来我们以Tomcat为例进行JavaWeb的学习。

 

二、Tomcat

2.1Tomcat服务器的安装与启动

安装教程参考:https://blog.csdn.net/weixin_39478524/article/details/115341648

 

2.2Tomcat端口号被占用解决办法

Tomcat的默认端口号为8080,如果启动了多个tomcat服务器或者与oracle端口号冲突,可以用以下方法解决,

修改tomcat安装路径\conf\server.xml文件

第70行:<Connector port="8081"/>

 

2.3Tomcat的主要目录

  • bin:可执行文件
  • conf:配置文件
  • lib:tomcat运行时需要用到的jar文件
  • temp:tomcat运行时产生的日志文件
  • webapps:存放我们编写的应用
  • work:tomcat的工作目录

 

2.4JavaWeb应用的目录结构

我们一般开发的标准JavaWeb应用目录结构如下:

  • web应用名称
    • 应用.html
    • css
      • myStyle.css
    • js
      • myJS.js
    • WEB-INF(此目录下的文件不能被外部直接访问
      • classes:编写的程序代码,.class文件
      • lib:应用需要的jar文件
      • web.xml:应用的配置信息

 

2.5Tomcat手动部署服务器

我们首先新建一个JavaEE的web项目,在webroot文件夹下新建一个html,

然后新建css和js文件夹存放css和js文件,对这个html进行修饰,

我们写一个改变字体颜色的css和弹框的js文件,然后在html中引入,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tomcat</title>
    <link href="css/myStyle.css" type="text/css" rel="stylesheet">
    <script type="text/javascript" src="js/myJS.js"></script>
</head>
<body>
    <p>Tomcat server</p>
</body>
</html>

下面我们通过两种手动方式进行网络应用的部署。

 

2.5.1开放目录部署

接着我们在项目的目录中将web文件夹下的所有文件都复制到tomcat安装路径的webapps中,

然后启动tomcat服务器,访问该网站,

可以看到该网页已经成功手动部署到Tomcat服务器上了。

 

2.5.2war包

我们在cmd命令行中进入到webroot的文件夹中,输入打包指令:jar -cvf test.war .

然后将生成的war文件同样放到tomcat的webapps目录中,

在启动服务器的情况下,它会自动帮你解压war文件,接着就可以在网络上对html文件进行访问了。

 

2.6继承Tomcat与自动部署应用

IDEA继承Tomcat可以参考:https://blog.csdn.net/weixin_39478524/article/details/115343114

然后我们右键test.html->Run 'test.html',就可以显示部署在服务器上的网页了

网页效果:

 

2.7URL与URI

  • URL:统一资源定位符(网址)
  • URI:统一资源标识符

URL是URI的一个子集,

URL通常由三部分组成,比如:

http://localhost:8080/test/test.html

协议 主机IP(端口号) URI(当前应用的资源路径)

 

2.8虚拟目录

如果我们创建的web应用不想放在tomcat的webapps文件夹中,那么就需要用到虚拟目录,让服务器可以找到web应用路径。

假设web应用在磁盘中真实目录为

E:\1program\6Java\JavaWeb\07Tomcat\web

虚拟目录为

http://localhost:8080/test

创建虚拟目录有两种方式

  • 虚拟目录映射:修改在tomcat安装目录conf文件夹下的server.xml,在Host标签中新建Context标签
    • <Context path="/test" docBase="E:\1program\6Java\JavaWeb\07Tomcat\web"/>
    • path:网络访问的虚拟目录名
    • docBase:web应用的真实路径名
    • 注意:这种方法需要重启服务器,不推荐使用!
  • 新建xml文件:文件名代表了应用的虚拟目录名
    • 将xml文件放在tomcat安装目录下的conf\Catalina\localhost目录下
    • 文件内容为
      • <Context docBase="E:\1program\6Java\JavaWeb\07Tomcat\web"/>
      • docBase是web应用的真实路径名

我们使用第二种方法进行测试,在tomcat安装目录\conf\Catalina\localhost中新建hello.xml,

然后访问http://localhost:8080/hello/test.html

 

2.9配置默认端口、应用、主页

  • 修改默认端口
    • conf目录下的server.xml,将Connector标签中的port属性改为指定端口号即可
    • 浏览器http默认端口号为80,所以可以修改为80则localhost后不用加端口号,使用默认的端口号80
  • 修改默认应用
    • 将第二种配置方法的虚拟目录的配置文件名改为ROOT.xml即可,那么输入localhost:8080访问的就是ROOT.xml中指定的web应用
  • 修改默认主页
    • 修改当前WEB-INF目录下的web.xml文件,在web-app标签下添加welcome-file-list标签
    • 添加我们的test.html为默认应用,这样可以通过http://localhost:8080/hello直接访问到页面
      • <welcome-file-list>
            <welcome-file>test.html</welcome-file>
        </welcome-file-list>

 

三、HTTP协议

3.1HTTP协议概述

HTTP是(HyperText Transfer Protocol)超文本传输协议,基于TCP/IP协议来传输HTML文件、图片文件和查询结果等,

HTTP协议是用于定义WEB浏览器WEB服务器之间交换数据的过程以及数据本身的格式

并且HTTP协议是不保存状态的协议,即新的请求响应产生时,和上一次的请求响应没有任何关系,不保留之前的报文信息。

HTTP协议永远都是客户端发起请求,服务器进行相应,如图:

一次HTTP操作称为一个事务,工作过程可以分为四步:

  • 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始
  • 建立连接后,客户机发送一个请求给服务器
    • 请求的格式为:URI、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容
  • 服务器接到请求后,给予相应的响应信息
    • 其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容
  • 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

 

3.2请求

一般的请求消息如下图所示

我们将上述的请求消息分为三个部分:请求消息行、请求消息头、消息正文

 

3.2.1请求消息行

请求消息的第一行为请求消息行,

GET  /test/test.html  HTTP/1.1
  • GET为请求方式,请求方式分为:Get(默认)、POST、DELETE、HEAD等
    • GET:明文传输 不安全,数据量有限,不超过1kb
    • POST:暗文传输,安全。数据量没有限制。
  • /test/test.html为URI,统一资源标识符
  • HTTP/1.1为协议版本

 

3.2.2请求消息头

从第二行开始到空白行统称为请求消息头

  • Accept:浏览器可接受的MIME类型 
    • 告诉服务器客户端能接收什么样类型的文件。
  • Accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集
  • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip 
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。
  • Host:初始URL中的主机和端口 
  • Referrer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面 
  • Content-Type:内容类型
    • 告诉服务器浏览器传输数据的MIME类型,文件传输的类型
  • If-Modified-Since:利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件
  • User-Agent:浏览器类型.
  • Content-Length:表示请求消息正文的长度 
  • Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 
  • Cookie:用于分辨两个请求是否来自同一个浏览器,以及保存一些状态信息,
  • Date:请求时间GMT

 

3.2.3消息正文

当请求方式是POST方式时,才能看见消息正文,

消息正文就是要传输的一些数据,如果没有数据需要传输时,消息正文为空。

 

3.3响应

响应消息如图所示:

 

3.3.1响应消息行

第一行响应消息为响应消息行,

HTTP/1.1   200   OK
  • HTTP/1.1为协议版本
  • 200为响应状态码,常用的响应状态码有40余种,这里我们仅列出几种,详细请看:
    • 200:一切正常
    • 302/307:临时重定向
    • 304:未修改,客户端可以从缓存中读取数据,无需从服务器读取
    • 404:服务器上不存在客户端所请求的资源
    • 500:服务器内部错误
  • OK为状态码描述

 

3.3.2响应消息头

  • Location:指示新的资源的位置
    • 通常和302/307一起使用,完成请求重定向
  • Server:指示服务器的类型
  • Content-Encoding:服务器发送的数据采用的编码类型
  • Content-Length:告诉浏览器正文的长度
  • Content-Language:服务发送的文本的语言
  • Content-Type:服务器发送的内容的MIME类型
  • Last-Modified:文件的最后修改时间
  • Refresh:指示客户端刷新频率,单位是秒
  • Content-Disposition:指示客户端下载文件
  • Set-Cookie:服务器端发送的Cookie
  • Expires:-1
  • Cache-Control:no-cache (1.1)  
  • Pragma:no-cache   (1.0)  表示告诉客户端不要使用缓存
  • Connection:close/Keep-Alive   
  • Date:请求时间

 

3.3.3响应正文

即网页的源代码(F12可查看)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值