Tomcat相关配置&&HTTP协议

Tomcat相关配置&&HTTP协议_第1张图片
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

使用诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。



文章目录

    • 一、服务器概述
        • 1、什么是服务器?
        • 2、什么是Web服务器?
    • 二、tomcat下载、安装、启动、配置
        • 1、下载tomcat服务器
        • 2、安装、启动tomcat服务器
        • 3、修改tomcat默认端口
    • 三、tomcat目录结构
    • 四、虚拟主机和Web应用
    • 五、web应用
        • 1、web应用的目录结构
        • 2、部署web应用到虚拟主机中
    • 六、扩展内容(了解)
        • 1、配置WEB应用的主页
        • 2、配置缺省的(默认的)WEB应用
        • 3、打war包
    • 七、HTTP协议概述
        • 1、什么是HTTP协议?
    • 八、HTTP协议详解
        • 1、HTTP请求
        • 2、HTTP响应
        • 3、内容补充



一、服务器概述


1、什么是服务器?

服务器:分为服务器硬件服务器软件。在硬件服务器(计算机)上安装了服务器软件,才可以对外提供服务。

比如:让其他的计算机来访问当前服务器,为其他的计算机提供服务。

  • (1) 服务器硬件:是指在互联网上具有独立IP地址的计算机,比如我们自己用的计算机也可以作为服务器使用。

  • (2) 服务器软件:就是一个计算机程序,比如MySQL服务器软件,tomcat服务器软件。服务器软件分为很多类型,比如:ftp服务器,数据库服务器,web服务器软件,邮件服务器等。

2、什么是Web服务器?

  • (1) web服务器是指驻留在互联网上的某种类型的计算机程序。当浏览器访问服务器,请求服务器上的文件时,服务器将会处理该请求,并将请求的文件响应给浏览器,并会附带一些信息告诉浏览器如何查看该文件(即文件的类型)

  • (2) web服务器是可以向 “发出请求的浏览器提供文档” 的程序,比如在访问百度时,其实就是在访问百度的服务器。

Tomcat相关配置&&HTTP协议_第2张图片

tomcat就是一个web服务器软件,是由apache组织提供的一款服务器软件,特点:小巧灵活,免费开源,简单易用。


二、tomcat下载、安装、启动、配置


1、下载tomcat服务器

  • tomcat官网下载地址

tomcat有很多版本,有解压版 和 安装版,还分windows (还分为32位和64位版)和
linux版,根据自己的需求,选择对应的版本下载。

tomcat服务器运行需要jdk的支持,版本对应为:

tomcat5 需要jdk4以上支持
tomcat6 需要jdk5以上支持
tomcat7 需要jdk6以上支持
tomcat8 需要jdk7以上支持

2、安装、启动tomcat服务器

  • 2.1 安装tomcat服务器

绿色版解压之后就可以使用(原则:安装的路径中不要包含中文和空格)

在这里插入图片描述

解压后还需要配置JAVA_HOME环境变量,该变量指向jdk的根目录,指定tomcat启动时使用哪一个位置的jdk。

  • 2.2 启动tomcat服务器

-----------------------------------------------------------------------------

  • 如何配置JAVA_HOME环境变量:

    • 变量名: JAVA_HOME

    • 变量值: C:\Program Files\\Java\\jdk1.8.0_45

--------------------------------------------------------------------------------

(扩展内容)配置Path变量的两种方式:

方式一:

  • Path=**C:\\Program Files\\Java\\jdk1.8.0_45\\bin;**xxx;xxx;xxx;

方式二:

  • JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_45

  • Path=%JAVA_HOME%\\bin;xxx;xxx;xxx;

--------------------------------------------------------------------------------

启动、关闭tomcat服务器:

  • 通过 [tomcat根目录]\bin\startup.bat 可以启动tomcat服务器;

  • 通过 [tomcat根目录]\bin\shutdown.bat 可以关闭tomcat服务器;

访问测试服务器:

在tomcat服务器启动后,服务器会默认监听8080端口,可以通过如下地址访问tomcat服务器的主页:

http://localhost:8080

3、修改tomcat默认端口

在这里插入图片描述

tomcat服务器在启动时,默认监听的端口是8080,这意味着,我们在访问tomcat服务器时,就需要在主机名(localhost)或者IP地址(127.0.0.1)等后面加上端口。这样非常不方便。

可以将8080端口改为80端口,因为80端口非常特殊,可以省略不写(只有80端口可以省略,其他端口可在访问时必须得加上)

修改方法: 找到 [tomcat安装目录]/conf/server.xml 文件并打开该文件,将文件中的 69 行的 标签上的 port 属性的值改为 80即可。

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

改完后,保存文件,重新启动服务器(只有在服务器启动时,才会重新加载server.xml文件)再次启动的服务器就会监听新的端口。

在这里插入图片描述

扩展问题:FAQ端口占用问题:

在启动tomcat服务器时,可能会遇到端口占用问题,如下图:

Tomcat相关配置&&HTTP协议_第3张图片
在这里插入图片描述

原因分析:

  • 情况一: 可能是之前的tomcat服务器没有完全关闭,仍然在占用80端口,导致服务器再次启动时,启动失败。

解决方式:运行shutdown.bat文件,将tomcat按照正常流程再关闭一次即可。如果再次启动服务器成功,说明问题已解决,否则看情况二。

  • 情况二: 可能是其他程序占用了80端口,导致服务器启动失败。

解决方式:打开一个cmd窗口,通过 netstat -ano 命令查看当前系统中活动的进程,找到80端口对应的进程编号(PID),根据进程编号将进程结束即可!

netstat -ano
协议  本地地址         外部地址        状态           PID
TCP  0.0.0.0:80      0.0.0.0:0      LISTENING     6520
TCP  0.0.0.0:135     0.0.0.0:0      LISTENING     448
...
  • 根据编号结束进程!!
taskkill /f /pid 进程编号

三、tomcat目录结构


tomcat目录结构介绍

Tomcat相关配置&&HTTP协议_第4张图片

tomcat服务器安装根目录下有很多子目录,这些目录的作用是:

  • bin:用于存放tomcat服务器中批处理文件的目录(xx.bat/xx.sh)

  • conf:用于存放tomcat服务器中的配置文件的目录(其中server.xml文件是tomcat服务器中非常重要的一个文件。)

  • lib:用于存放tomcat服务器运行时所依赖的jar包。

  • logs:用于存放tomcat服务器运行时产生的日志文件(启动tomcat服务器时会打印很多日志信息,这些日志信息还会以文件形式保存到logs目录下)

  • temp:用于存放tomcat服务器产生的临时文件,tomcat会自己清理,可以忽略该目录

  • webapps:是localhost【虚拟主机】默认管理的目录,将开发好的【web应用】程序放在webapps目录下,就可以通过浏览器访问localhost主机中的Web资源文件了。
    可以简单的理解为:webapps目录就是web资源(html、css、js、图片、jsp等)的存放目录,将web资源文件放在该目录下,就可以通过浏览器来访问。

  • work:用于存放tomcat服务器产生的工作文件

    • JSP翻译后的Servlet文件会放在work目录下;
    • session对象序列化后产生的文件也会放在work目录下;

四、虚拟主机和Web应用


Tomcat相关配置&&HTTP协议_第5张图片

总结:

  • (1)虚拟主机就是tomcat服务器中配置的一个站点,在tomcat服务器中默认提供了一个localhost虚拟主机,这个主机的发布目录是webapps目录:

在这里插入图片描述

这样意味着,将Web应用放在webapps目录下,就表示发布到了localhost虚拟主机中。

  • (2)Web应用就是一个存放了很多Web资源(html、css、js、jsp、servlet、图片等)的目录,将Web应用发布到虚拟主机中,就可以通过浏览器来访问Web应用中的这些资源文件了。

五、web应用


1、web应用的目录结构

news(目录,web应用)
  |-- 其他目录, 放在news根目录或者其他目录中的资源文件,浏览器可以直接访问
  |-- WEB-INF目录, 放在这个目录下的资源文件是受保护的,浏览器不能直接访问(不是不能访问,是不能直接访问) 
  		 |-- classes目录, 用于存放编译后的class文件
  		 |-- lib目录, 用于存放web应用所依赖的jar包
  		 |-- web.xml文件, 用于存放和web应用相关的一些配置(配置Servlet、配置主页、配置session的超时时间等)

其中news就是一个目录, 同时也是一个web应用程序, 其中可以包含很多的资源文件。

2、部署web应用到虚拟主机中

直接将Web应用的目录拷贝到虚拟主机所管理的目录下,就发布到了虚拟主机中

例如:将news目录拷贝webapps目录下,由于webapps目录是localhost主机默认管理的目录,所以就相当于将news应用发布到 了localhost主机中。

通过如下路径规则就可以访问localhost主机下的news应用下的资源文件:

http://localhost:端口/news/xxx

六、扩展内容(了解)


配置缺省的web应用、配置web应用主页、打war包----视频链接

访问tomcat服务器主页:http://localhost

访问news/hello.html:http://localhost/news/hello.html

能否将访问 news/hello.html 的路径缩短一些(比如只通过主机名就可以访问news/hello.html这个网页)

1、配置WEB应用的主页

如果没有将 hello.html 配置为当前Web应用的主页,在访问 hello.html 时的路径为:

http://localhost/news/hello.html

如果将 hello.html 配置为当前Web应用的主页,再次访问 hello.html 时的路径为:

http://localhost/news

在上的路径中,/hello.html 这个路径可以加,也可以省略。

将 hello.html 配置为当前应用的主页,方式为:找到 [当前Web应用]/WEB-INF/web.xml文件并打开,在web.xml文件的根标签内部添加如下配置:


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1">
  	<welcome-file-list>
			<welcome-file>/hello.htmlwelcome-file>
			<welcome-file>/hello1.htmlwelcome-file>
			<welcome-file>/hello2.htmlwelcome-file>
  	welcome-file-list>

web-app>

配置完后,需要重启服务器,配置才会生效。

2、配置缺省的(默认的)WEB应用

上面已经将news/hello.html配置为news应用的主页,访问hello.html时路径为:http://localhost/news/

如果不将 news 应用配置为默认的Web应用,在访问 news 下的 hello.html(主页)时的访问路径为:

http://localhost/news/

如果将 news 应用配置为缺省的(默认的)Web应用,在访问 hello.html(主页)时的路径就变成了:

http://localhost/

如何将 news 配置为缺省的(默认的)Web应用(缺省Web应用只能有一个)?:

  • 将Web应用的名字改为一个大写的ROOT,当前Web应用就是一个默认的Web应用,再访问这个Web应用下的资源文件时,访问的路径中就可以不用写Web应用的名称了。

3、打war包

war包和jar包都是java程序中的一种压缩包格式,如果开发一个Java基础工程,可以将其中编译后的class文件和相关的配置文件打成一个jar包。

可以将一个Web应用打成一个war包,这样做的好处有:

(1) 将web应用打成一个war包,传输起来更加方便,而且文件体积会变小。
(2) 将war包发布到服务器中,服务器能识别war包格式,会自动将war包解压发布!
  • 打war包的方法是:

进入到web应用的目录下,将Web应用目录下的所有子目录和文件全部选中,右键压缩成一个 xxx.zip 包,再把 xxx.zip 改为 xxx.war即可!!

需要注意的是,如果有以下问题,可能会导致war不会自动解压:

(1) 在将Web应用打成一个压缩包时,没有打成一个 xxx.zip,而是使用 rar格式或者其他格式,会导致自动解压失败!
(2) 打成的war包的名字 和 已发布的web应用的名字不能冲突,会导致自动解压失败!
(3) war包中包含的目录名和文件名是中文的,也会导致自动解压失败!

Tomcat相关配置&&HTTP协议_第6张图片


七、HTTP协议概述


1、什么是HTTP协议?

Tomcat相关配置&&HTTP协议_第7张图片

HTTP协议是用于规定浏览器和服务器之间的通信方式/规则

主要规定了浏览器给服务器发送的请求信息的格式

以及规定了服务器给浏览器发送响应信息的格式

HTTP协议在工作时所遵循的基本原则:

(1)一次请求,只对应一次响应
(2)请求只能由浏览器发起,服务器只能被动的等待请求,根据请求作出回应。

八、HTTP协议详解


浏览器的插件:HttpWatch,可以监听浏览器和服务器通信的内容。

1、HTTP请求

Tomcat相关配置&&HTTP协议_第8张图片

  • 1.1 请求行
GET  /news/hello.html  HTTP/1.1

(1)GET:表示请求方式,在HTTP协议中一共定义了7种提交方式,但是我们只用GET和POST。

(2)/news/hello.html:请求资源路径,表示浏览器请求的是哪一个Web应用以及哪一个web资源文件。

(3)HTTP/1.1:请求所遵循的协议和版本。

  • 1.2 若干请求头

请求头都是Key-Value结构,例如:

Tomcat相关配置&&HTTP协议_第9张图片

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

(空白行,用于分隔请求头和请求实体)

  • 1.3 请求实体内容

如果请求方式为 GET 提交,请求实体是没有内容的!

如果请求方式为 POST 提交,并且请求中携带了数据,请求实体中才会有内容!

2、HTTP响应

Tomcat相关配置&&HTTP协议_第10张图片

  • 2.1 状态行
HTTP/1.1 200 OK
  • (1)HTTP/1.1:表示响应所遵循的协议和版本

  • (2)200:状态码,三位的数字,表示服务器对请求处理的结果。

	200: 表示请求处理成功
	302: 表示请求重定向(即需要再进一步请求才可以获取到相应的资源)
	304/307: 表示通知浏览器使用缓存
	404: 表示浏览器请求的资源不存在(浏览器的问题, 请求路径错误)
	500: 表示服务器在处理请求的过程中抛出了异常。
  • (3)OK:描述短语(可以忽略),也表示服务器对请求处理的结果,和状态码表示的结果一致。
	200:OK
	404:Not Found
	500: Internal Server Error
	...
  • 2.2 若干响应头:也是key-value格式
Content-Type: 表示服务器响应的数据类型,text/html,  image/*...
Content-Length: 表示服务器响应数据的长度, 例如: 384 /字节
Set-Cookie: 和cookie技术相关的一个头, 后面会提到。
...
  • 2.3 响应实体内容

响应实体就是浏览器所请求文件的内容。例如:浏览器向服务器请求一个hello.html文件,服务器会找到hello.html文件,将文件的内容作为响应实体发送给浏览器。

3、内容补充

  • 问题1:请求方式什么时候是GET提交?什么时候是POST提交?

只有当使用表单(form),并且在表单上明确的通过method指定提交方式为POST时,请求方式才是POST提交,其他方式都是GET提交(AJAX除外)

思考:判断以下请求方式是GET还是POST?

(1)
--- GET提交 (2)
--- GET提交 (3)
--- POST提交 (4)点击超链接访问服务器,例如: 百度一下 --- GET提交 (5)直接在浏览器的地址栏中书写URL地址访问服务器 --- GET提交
  • 问题2:GET提交和POST提交有什么区别?

主要体现在请求参数传输过程的不相同

GET提交:

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

POST提交:(form)

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

总结:

  • 如果只是单纯做一个跳转,请求中没有数据,尽量使用GET提交。
  • 如果在请求中有数据,但数据量不大,并且数据没有隐私性,也尽量使用GET提交。
  • 如果在请求中有数据,数据量比较大或者数据较为隐私,此时推荐使用POST提交。

Tomcat相关配置&&HTTP协议_第11张图片
☆☆☆

  • 如果想要把Tomcat配置到eclipse中,可以参考文章:eclipse中配置Tomcat

你可能感兴趣的:(服务器,Tomcat,tomcat,java,http)