一、基本概念
1.1硬件服务器:通常是指在互联网上具有独立IP的计算机,通常配置比较高。比如我们自己的计算机也可以作为服务器使用(只不过配置较低)
1.2软件服务器:就是一个计算机程序,比如MySQL服务器软件,tomcat服务器软件。服务器软件分为很多类型,比如:ftp服务器,数据库服务器,邮件服务器,web服务器软件等
1.3 web服务器:通过浏览器访问的一段计算机程序,服务器收到你的访问请求时,进行处理,并做出响应。
- 1.3.1WebLogic服务器 全面支持JavaEE版本的服务器 收费
- 1.3.2WebSphere服务器 全面支持JavaEE版本的服务器 收费
- 1.3.3.Tomcat服务器 免费开源的,JS,体积小,功能也很强大,是市面用的最多的一款服务器
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器.
tomcat的特点:
1.由于有Sun公司的支持,所以对java的兼容性在当时是特别好的,原因是tomcat也是java编写的软件,所以必须要依赖于jdk环境,如果我们jdk有问题,启动tomcat时,一定会报错!!!!
2.所以tomcat可以非常即使的更新java的规范,所以被广大的java开发者所喜爱
3.也被广大的软件开发商认可,产生了很多适配tomcat的软件,于是就成为主流的web服务器了
4.免费开源的,属于轻量级的服务器,在中小型项目和并发访问用户量不高的情况下,被广泛的使用,所以就是我们日常开发和测试程序的首选服务器
5.tomcat默认的并发能力是150,更多的话也是可以支持的,但是得人为配置,win系统本身限制同一下线程下,并发量不能超过2000
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。JAVASE: J2SE 可以理解为java的基础包
JAVAEE: J2EE 企业级版本
JAVAME: J2ME 为移动设备或者嵌入式设备进行开发的
二、Tomcat的使用
2.1 下载安装:https://tomcat.apache.org/ 官网直接下载
2.2启动与关闭
解压下载的压缩包,无需安装,直接解压就可以(路径不要包含中文空格等),找到对应的bin目录下的startup.bat,双击启动 Tomcat
备注:
如果启动服务器一闪而退,可以去log目录下查看日志,如果报这个问题
说明此时的服务器所使用的端口被占用了
如何解决呢?
- 给服务器切换一个新的没被占用的端口号
- 关闭正在占用这个端口的程序,不能随便关闭,因为不知道占用的程序是什么可能是系统重要程序,所以关闭需慎重
具体步骤:
- 开发dos窗口
- 输入netstat -ano|findstr 8080,找到对应的程序的最后的数字,那么这个就是这个程序的编号
- 通过这个编号查询这个程序是什么程序tasklist|findstr 32188
- 查看这个程序是可以关闭的程序,才可以杀死进程taskkill /f /pid 32188
2.3测试
http://localhost:8080/ 如果能正常打开此网址,则Tomcat服务器启动成功,如何将写好的网页发到服务器上,将写入的网页相关文件复制,在Tomcat解压文件夹目录下找到E:\Software\exe\apache-tomcat-8.5.34\webapps文件夹,在此目录下新建一个问价夹,并将复制的网页相关文件粘贴进去,打开网页输入网址服务器的ip/域名:端口号/访问的页面资源(例如:http://localhost:8080/demo/light.html )可正常访问,不能直接将页面放在webapps的根目录中,因为无法识别,所以必须要在webapps目录下,新建一个项目目录(web应用),然后才可以访问
虚拟主机
在tomcat服务器中,默认提供了一个站点,就是localhost,这个站点也叫作虚拟主机。
虚拟主机就是在一个单一的物理主机上,实现多网域服务的方法,也就是可以运行多个网站或者服务的技术,虚拟主机之间完全独立,比如我们访问百度和访问淘宝,两个网站之间是完全独立的,但是我们不能确定是都两个网站之间是否在使用同一个真实主机,另外虚拟主机技术的流行,可以使用户自行管理虚拟服务器,主要是原因还是为了节约成本
修改默认端口号
Tomcat软件,默认使用的是8080端口号,也可以自定义端口号变成你需要的就可以了.
将tomcat的端口号切换为80端口,因为80端口为默认端口,可以不写,打开D:\apache-tomcat-8.5.34\conf\server.xml文件,然后修改第69行的port属性的值启动后,可以发现端口号已经发生了变化
输入localhost即可访问tomcat主页
配置默认的web应用
把 http://localhost/demo/light.html 变成 http://localhost/light.html
ROOT目录就是默认目录,不需要写名字
如何将一个web应用变为默认的web应用?
只需要将web应用的名字修改为ROOT即可,同一个虚拟主机中,只能有一个ROOT目录,所以也就只能有一个默认的web应用
配置web应用的主页
把http://localhost/light.html 变成 http://localhost
只需要找到ROOT/WEB-INF/web.xml,在web.xml文件中添加如下配置即可
<?xml version="1.0" encoding="UTF-8"?> <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>light.html</welcome-file> </welcome-file-list> </web-app>
三、目录结构
D:\Java\apache-tomcat-8.5.72\bin: 存放tomcat服务器中可执行文件的目录
D:\Java\apache-tomcat-8.5.72\conf: 存放tomcat服务器中配置文件的目录
D:\Java\apache-tomcat-8.5.72\lib: 存放tomcat服务器运行时所依赖的jar包
D:\Java\apache-tomcat-8.5.72\logs: 存放tomcat服务器运行时产生的日志文件的目录,记录每次启动关闭的一些信息
D:\Java\apache-tomcat-8.5.72\temp: 存放tomcat服务器产生的临时文件的目录, tomcat会自己清理该目录, 可以忽略该目录
D:\Java\apache-tomcat-8.5.72\work: 存放tomcat服务器产生的工作文件
D:\Java\apache-tomcat-8.5.72\webapps: 是localhost虚拟主机默认管理的目录,你开发好的项目代码必须在webapps目录下才可以通过浏览器访问你的程序,包括各种资源(html、css、js、jsp、servlet、图片等)和目录等
D:\Java\apache-tomcat-8.5.72\conf\server.xml: 存放tomcat服务器的核心配置,配置了主机,端口号等
D:\Java\apache-tomcat-8.5.72\webapps\ROOT\WEB-INF\web.xml:可以配置一个应用的主页等信息
web应用目录结构
|- WEB-INF:放在这个目录下的文件不能直接通过浏览器访问,因为会被服务器保护起来,可以通过转发访问
|-classes目录:用来存放动态web资源(servlet,jsp)的class文件
|-lib目录:用来存放动态web资源的jar包
|-web.xml文件:是web应用的核心配置文件,web应用中的很多配置操作都会在这个文件中进行设置
|- WEB-INF以外:是可以直接存放web静态资源,比如html,js,css,放在这部分的文件是可以直接通过浏览器访问的
备注:
http状态码
200:状态码(一个三位的数字), 表示服务器处理请求的结果如何,200表示服务器成功的处理请求
状态码的第一个数字定义了响应的类别,共五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
200: 服务器成功的处理了请求
400: 客户端请求有语法错误,不能被服务器理解
404: 表示客户端请求的资源不存在!
500: 表示服务器端发生了错误!
302:表示请求重定向(需要再进一步请求才可以获取到相应的资源)
304/307:表示通知浏览器使用缓存