主要支持的协议就是HTTP协议,Web服务器专门处理HTTP请求,通常情况下WEB服务器和HTTP服务器说的是同一回事。如:Apache、Nginx、IIS、Tomcat都属于Web服务器。
应用服务器通过各种协议来为客户端提供业务逻辑。
如:JBoss、Weblogic、WebSphere都属于应用服务器。
综上:
Apache和Nginx是纯粹的Web服务器,而IIS和Tomcat因为具有了解释和执行服务器端代码的能力,可以称作为轻量级应用服务器。
JBoss、Weblogic和WebSphere因为能提供强大的J2EE API功能,毫无疑问是绝对的应用服务器。
Tomcat,它可以配合Web服务器Apache/Nginx一起使用,也可以作为应用服务器的辅助与应用服务器一起使用。
Web服务器主要处理静态页面以及作为Servlet容器,解释和执行servlet/JSP,而应用服务器主要运行业务逻辑。
Apache是普通服务器,本身只支持静态网页(HTML普通网页),像php,cgi,jsp等动态网页就需要Tomcat来处理。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。Tomcat是Apache的扩展。
Tomcat是一个支持Servlet和JSP技术的容器。Web服务器Apache、Nginx仅仅支持静态网页,对于支持动态网页就会显得无能为力,而Tomcat(Servlet和JSP能根据实时需要产生动态网页)既能为动态网页服务,又能为静态网页提供支持。尽管Tomcat没有通常的Web服务器快(通常的Web服务器都是用底层语言(如C/C++)编写,而Tomcat用纯Java编写)、功能也不如通常的Web服务器丰富。
一般来说,大型网站都是将Tomcat与Apache/Nginx结合,Apache/Nginx负责接受来自客户端的HTTP请求,然后将HTTP请求转发给Tomcat来处理。
为了提高性能,可以将一台Apache/Nginx连接多台tomcat实现负载均衡。
目前,Tomcat一直被认为是Servlet容器。然而,Tomcat并不仅仅如此,它还提供了JNDI和JMX的实现机制。尽管如此,Tomcat仍然还不能算是应用服务器,因为它不提供J2EE API的其他大多数支持。
目前许多的应用服务器通常把Tomcat作为它们Servlet容器。
对于开发者来说,如果是为了寻找Servlet、JSP、JNDI和JMX技术来生成Java Web应用的话,选择Tomcat是一个优秀的解决方案;但是为了寻找其他的J2EE API的支持,那么寻找一个应用服务器或者把Tomcat作为应用服务器的辅助是一个不错的解决方案;第三种方式是找到独立的J2EE API实现,然后把它们跟Tomcat结合起来使用,虽然整合会带来相关的问题,但是这种方式是最为有效的。
安装地址:https://tomcat.apache.org/download-80.cgi
第一步:确定型号
第二步:型号讲解(通常下载最新版之前的那一版)
第三步:找到下载位置
第四步:进行下载
第五步:解压文件即可
第六步:配置Tomcat环境变量
配置jdk:
如果使用Tomcat必须配置javahome
配置Tomcat:
环境变量新建:变量名:CATALINA_HOME 变量值:Tomcat所在路径(能看到目录简介页面的路径)
第七步:检验是否安装成功
打开目录bin下的startup.bat,出现启动时间则说明安装完成
注意:bat是windows里面的,sh是Linux里面的
运行Tomcat时(startup.bat),可能会出现报错。
报错原因:Tomcat端口号冲突(默认端口号为8080,比较常见),建议修改端口号
修改方法:进入目录下的conf配置文件,进入到server.xml里面将端口号进行修改(修改为8888)。
修改完重新运行即可
导航栏输入:localhost:8888,显示网页,则表示访问成功。
404:资源部存在(常见)
200:一切正常(一般看不见)
403:权限不足(比如访问a目录,a目录设置不可见)
300/301:页面种定向(跳转)
500:服务器内部错误(代码错误,常见)
其他编码:积累
在目录的webapps里面创建项目。
需要有WEB-INF文件夹
1、进入ROOT里面复制WEB-INF文件夹
2、在新建的文件里面粘贴复制的WEB-INF文件夹,并进入添加两个文件夹,分别是classes和lib
在JspProject-my下创建jsp项目
index.jsp内容:
<html>
<head>
<title>张张张title>
head>
<body>
hello jsp...
//这里面为jsp脚本,里面存放java代码
<%
out.print("hello word...");
%>
body>
html>
bin——>startup.bat 运行Tomcat
网页输入:localhost:8888/项目文件夹名称
运行完毕
关闭
正常关闭:
强制关闭:
点击启动窗口的x
5、假如我在JspProject目录下再创建一个jsp文件
index2.jsp内容
<html>
<head>
<title>我的jsptitle>
head>
<body>
hello jsp22222222222456456465465...
<%
out.print("hello word...");
%>
body>
html>
运行结果:
默认还是第一个文件
问题:
我们发现,浏览器默认访问index.jsp这个文件,那么该如何修改设置呢
解决:在项目的WEB-INF的web.xml中添加以下代码
//根据顺序优先打开,如果第一个打不开,就打开第二个,一次往下
<welcome-file-list>
<welcome-file>index2.jspwelcome-file>
<welcome-file>index.jspwelcome-file>
welcome-file-list>
完成
localhost:8888/项目文件夹名称/jsp文件名
将项目在随意一个文件夹里面打包成war包。
比如再E盘创建了一个hello文件夹,文件夹里面有多个html文件,此时我们可以将这多个html添加为压缩文件,更改压缩文件后缀名为war,将war文件复制到webapps里面即可,此时会自动生成文件夹,删除项目时,直接将war文件删除即可。
我们知道,我们所创建的项目都是在webapps里面创建的,其实这里的webapps就是一个虚拟路径,如果我想在别处创建项目,那么该如何修改虚拟路径呢?
在conf文件夹中的server.xml中修改
**path:**虚拟路径(相对路径【相对于webapps】和绝对路径)
**docBase:**实际路径 实际的项目在哪里
**reloadable:**如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。
**crossContext:**如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。
**Debug:**与这个 Engine 关联的 Logger 记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为 0。
访问path,也就是访问docBase
path的相对路径:
<Context docBase="" path="/JspProject" /> 一定要注意后面是一个/
path的绝对路径:
<Context docBase="" path="E:\Tomcat\apache-tomcat-8.5.57\webapps\JspProject-my" />
一般都用path的相对路径
实际路径:项目所在位置
<Context docBase="E:\Tomcat\xunilujing2\JspProject-my" path="/JspProject" reloadable = "true"/>
表示 我以后访问/JspProject,就是访问E:\Tomcat\虚拟路径文件夹\JspProject
配置后记得重启
在E:\Tomcat\apache-tomcat-8.5.57\conf\Catalina\localhost中添加一个项目名.xml文件(必须以文件名命名)
文件内容为路径即可
<Context docBase="E:\Tomcat\xunilujing\JspProject-my" path="/JspProject" />
项目位置
假如我们把文件名改为ROOT.XML,就可以直接访问网页。因为ROOT是默认的地址
初始
改为ROOT
虚拟主机:
虚拟主机某些不法分子制作木马
将localhost改为www.xxx
第一步:
第二步:引入
选择本地
选择Tomcat的安装目录
第一步:
第二步:
创建一个网页。浏览器默认访问index.jsp。访问hello.html只需要修改地址后缀名
配置tomcat(同老版本)
导入jsp的jar包
我们开发JavaWeb项目时,需要使用到servlet和jsp的相关jar包。老版本的idea在我们创建项目的时候就自动帮我们导入进去了,因此我们不需要再导包,但是新版本的JavaWeb项目没有自动导包,因此需要我们手动导入。
老版本使用的Servlet是3.1,servlet和jsp的jar包是分开的,新版本默认创建的servlet是4.0,对应的4.0的jar包二者在一起,因此只需要导入servlet4.0的jar就可以了。
更新资源,不需要关闭原来运行的服务。比如我把网页进行一下改动,那么就不用关闭原来已经运行的服务,直接运行即可
Tomcat的运行机制_w3cschool
Tomcat 是运行在 JVM 中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。
Web 项目的本质,是一大堆的资源文件和方法。Web 项目没有入口方法 ( main 方法),,意味着 Web 项目中的方法不会自动运行起来。
Web项目部署进 Tomcat 的 webapp 中的目的是很明确的,那就是希望 Tomcat 去调用写好的方法去为客户端返回需要的资源和数据。
Tomcat 可以运行起来,并调用写好的方法。那么,Tomcat 一定有一个 main 方法。
对于Tomcat 而言,它并不知道我们会有什么样的方法,这些都只是在项目被部署进 webapp下后才确定的,由此分析,必然用到了 Java 的反射来实现类的动态加载、实例化、获取方法、调用方法。但是我们部署到 Tomcat 的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用。
Tomcat 如何确定调用什么方法呢。这取决于客户端的请求,http://127.0.0.1:8080/JayKing.Tomcat.Study/index.java?show 这样的一个请求,通过 http 协议,在浏览器发往本机的 8080 端口,携带的参数 show 方法,包含此方法的路径为 JayKing.Tomcat.Study,文件名为:index.java。
原理总结
Tomcat 需要 main 方法启动。
Tomcat 需要监听本机上的某个端口。
Tomcat 需要抓取此端口上来自客户端的链接并获得请求调用的方法与参数。
Tomcat 需要根据请求调用的方法,动态地加载方法所在的类,完成类的实例化并通过该实例获得需要的方法最终将请求传入方法执行。
将结果返回给客户端( jsp/html 页面、 json/xml 字符串)。
(100条消息) 深入理解Tomcat_技术交流-CSDN博客_tomcat技术