Tomcat服务器——JavaWeb教案(一)

服务器简介

WEB服务器

主要支持的协议就是HTTP协议,Web服务器专门处理HTTP请求,通常情况下WEB服务器和HTTP服务器说的是同一回事。如:Apache、Nginx、IIS、Tomcat都属于Web服务器。

应用服务器

应用服务器通过各种协议来为客户端提供业务逻辑。

如:JBoss、Weblogic、WebSphere都属于应用服务器。

综上:

  1. Apache和Nginx是纯粹的Web服务器,而IIS和Tomcat因为具有了解释和执行服务器端代码的能力,可以称作为轻量级应用服务器。

  2. JBoss、Weblogic和WebSphere因为能提供强大的J2EE API功能,毫无疑问是绝对的应用服务器。

  3. Tomcat,它可以配合Web服务器Apache/Nginx一起使用,也可以作为应用服务器的辅助与应用服务器一起使用。

  4. Web服务器主要处理静态页面以及作为Servlet容器,解释和执行servlet/JSP,而应用服务器主要运行业务逻辑。

Tomcat与Web服务器

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与应用服务器

目前,Tomcat一直被认为是Servlet容器。然而,Tomcat并不仅仅如此,它还提供了JNDI和JMX的实现机制。尽管如此,Tomcat仍然还不能算是应用服务器,因为它不提供J2EE API的其他大多数支持。

目前许多的应用服务器通常把Tomcat作为它们Servlet容器。

对于开发者来说,如果是为了寻找Servlet、JSP、JNDI和JMX技术来生成Java Web应用的话,选择Tomcat是一个优秀的解决方案;但是为了寻找其他的J2EE API的支持,那么寻找一个应用服务器或者把Tomcat作为应用服务器的辅助是一个不错的解决方案;第三种方式是找到独立的J2EE API实现,然后把它们跟Tomcat结合起来使用,虽然整合会带来相关的问题,但是这种方式是最为有效的。

image-20211215213406656

Tomcat web服务器软件

安装

安装地址:https://tomcat.apache.org/download-80.cgi

第一步:确定型号

image-20211216162704075

第二步:型号讲解(通常下载最新版之前的那一版)

image-20211216162722962

第三步:找到下载位置

image-20211216162753324

第四步:进行下载

image-20211216162810429

第五步:解压文件即可

第六步:配置Tomcat环境变量

配置jdk:

如果使用Tomcat必须配置javahome

配置Tomcat:

环境变量新建:变量名:CATALINA_HOME 变量值:Tomcat所在路径(能看到目录简介页面的路径)

image-20211216162832920

第七步:检验是否安装成功

打开目录bin下的startup.bat,出现启动时间则说明安装完成

注意:bat是windows里面的,sh是Linux里面的

image-20211216162919559

image-20211216162933158

Tomcat目录简介

image-20211216162953836

image-20211216163007763

Tomcat使用注意:

运行Tomcat时(startup.bat),可能会出现报错。

报错原因:Tomcat端口号冲突(默认端口号为8080,比较常见),建议修改端口号

修改方法:进入目录下的conf配置文件,进入到server.xml里面将端口号进行修改(修改为8888)。

修改完重新运行即可

image-20211216163035651

image-20211216163054817

访问Tomcat

导航栏输入:localhost:8888,显示网页,则表示访问成功。

image-20211216163123822

常见状态码:

404:资源部存在(常见)

200:一切正常(一般看不见)

403:权限不足(比如访问a目录,a目录设置不可见)

300/301:页面种定向(跳转)

500:服务器内部错误(代码错误,常见)

其他编码:积累

创建项目

在目录的webapps里面创建项目。

image-20211216163423951

1、配置文件

需要有WEB-INF文件夹

1、进入ROOT里面复制WEB-INF文件夹

image-20211216163433800

image-20211216163450873

2、在新建的文件里面粘贴复制的WEB-INF文件夹,并进入添加两个文件夹,分别是classes和lib

img

img

2、创建项目

在JspProject-my下创建jsp项目

img

index.jsp内容:

<html>
<head>
<title>张张张</title>
</head>
<body>
hello jsp...
//这里面为jsp脚本,里面存放java代码
<%
out.print("hello word...");
%>
</body>
</html>

3、运行项目
  1. bin——>startup.bat 运行Tomcat

  2. 网页输入:localhost:8888/项目文件夹名称

  3. 运行完毕

  4. 关闭

    1. 正常关闭:

      1. bin/ shutdown. bat
      2. bin/startup.bat 进入到里面点击 ctrl+c
    2. 强制关闭:

      点击启动窗口的x

img

5、假如我在JspProject目录下再创建一个jsp文件

img

index2.jsp内容

<html>
<head>
<title>我的jsp</title>
</head>
<body>
hello jsp22222222222456456465465...
<%
out.print("hello word...");
%>
</body>
</html>

运行结果:

默认还是第一个文件

img

4、更改默认访问的jsp文件

问题:

我们发现,浏览器默认访问index.jsp这个文件,那么该如何修改设置呢

解决:在项目的WEB-INF的web.xml中添加以下代码

img

   //根据顺序优先打开,如果第一个打不开,就打开第二个,一次往下
     <welcome-file-list>
        <welcome-file>index2.jsp</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

完成

img

5、访问指定jsp文件

localhost:8888/项目文件夹名称/jsp文件名

img

简化部署:

将项目在随意一个文件夹里面打包成war包。

比如再E盘创建了一个hello文件夹,文件夹里面有多个html文件,此时我们可以将这多个html添加为压缩文件,更改压缩文件后缀名为war,将war文件复制到webapps里面即可,此时会自动生成文件夹,删除项目时,直接将war文件删除即可。

静态项目和动态项目

img

配置虚拟路径

我们知道,我们所创建的项目都是在webapps里面创建的,其实这里的webapps就是一个虚拟路径,如果我想在别处创建项目,那么该如何修改虚拟路径呢?

方式一:任意地方创建项目

image-20211217132831715

第一步:介绍

在conf文件夹中的server.xml中修改

img

第二步:配置其他虚拟路径
  1. **path:**虚拟路径(相对路径【相对于webapps】和绝对路径)

  2. **docBase:**实际路径 实际的项目在哪里

  3. **reloadable:**如果这个属性设为 true,tomcat 服务器在运行状态下会监视在WEB-INF/classes 和 WEB-INF/lib 目录下 class 文件的改动,如果监测到有 class 文件被更新的,服务器会自动重新加载 Web 应用。

  4. **crossContext:**如果想在应用内调用 ServletContext.getContext()来返回在该虚拟主机上运行的其他 web application 的 request dispatcher,设为 true。在安全性很重要的环境中设为 false,使得 getContext()总是返回 null。缺省值为 false。

  5. **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

配置后记得重启

第三步:访问成功

image-20211215224416852

方式二:(未成功)

E:\Tomcat\apache-tomcat-8.5.57\conf\Catalina\localhost中添加一个项目名.xml文件(必须以文件名命名)

img

文件内容为路径即可

<Context docBase="E:\Tomcat\xunilujing\JspProject-my" path="/JspProject" />

项目位置

img

扩展:

假如我们把文件名改为ROOT.XML,就可以直接访问网页。因为ROOT是默认的地址

初始

img

改为ROOT

img

配置虚拟主机(了解)

虚拟主机:

  1. 虚拟主机某些不法分子制作木马

  2. 将localhost改为www.xxx

将Tomcat集成到IDEA中,并创建和部署JavaEE项目

引入Tomcat

第一步:

img

第二步:引入

选择本地

imgimg

选择Tomcat的安装目录

img

image-20211217134146280

创建web项目

(老版本IDEA2019)

第一步:

img

img

第二步:

创建一个网页。浏览器默认访问index.jsp。访问hello.html只需要修改地址后缀名

imgimg

新版本IDEA(2020之后)
  1. 创建普通的Java工程文件

image-20211216210658728

  1. 添加框架支持

image-20211216210810637

  1. 选择Web Application,勾选web.xml

image-20211216210845766

  1. 生成目录

image-20211216210953965

  1. 配置tomcat(同老版本)

  2. 导入jsp的jar包

image-20211216211115155

image-20211216211203388

  1. 启动测试
老版本和新版本区别

我们开发JavaWeb项目时,需要使用到servlet和jsp的相关jar包。老版本的idea在我们创建项目的时候就自动帮我们导入进去了,因此我们不需要再导包,但是新版本的JavaWeb项目没有自动导包,因此需要我们手动导入。

老版本使用的Servlet是3.1,servlet和jsp的jar包是分开的,新版本默认创建的servlet是4.0,对应的4.0的jar包二者在一起,因此只需要导入servlet4.0的jar就可以了。

image-20211216211659679

热部署:

更新资源,不需要关闭原来运行的服务。比如我把网页进行一下改动,那么就不用关闭原来已经运行的服务,直接运行即可

img

URL访问地址设置

img

img

img

IDEA与Tomcat相关配置

img

Tomcat运行原理分析

Tomcat的运行机制_w3cschool

  1. Tomcat 是运行在 JVM 中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。

  2. Web 项目的本质,是一大堆的资源文件和方法。Web 项目没有入口方法 ( main 方法),,意味着 Web 项目中的方法不会自动运行起来。

  3. Web项目部署进 Tomcat 的 webapp 中的目的是很明确的,那就是希望 Tomcat 去调用写好的方法去为客户端返回需要的资源和数据。

  4. Tomcat 可以运行起来,并调用写好的方法。那么,Tomcat 一定有一个 main 方法。

  5. 对于Tomcat 而言,它并不知道我们会有什么样的方法,这些都只是在项目被部署进 webapp下后才确定的,由此分析,必然用到了 Java 的反射来实现类的动态加载、实例化、获取方法、调用方法。但是我们部署到 Tomcat 的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用。

  6. Tomcat 如何确定调用什么方法呢。这取决于客户端的请求,http://127.0.0.1:8080/JayKing.Tomcat.Study/index.java?show 这样的一个请求,通过 http 协议,在浏览器发往本机的 8080 端口,携带的参数 show 方法,包含此方法的路径为 JayKing.Tomcat.Study,文件名为:index.java。

原理总结

  1. Tomcat 需要 main 方法启动。

  2. Tomcat 需要监听本机上的某个端口。

  3. Tomcat 需要抓取此端口上来自客户端的链接并获得请求调用的方法与参数。

  4. Tomcat 需要根据请求调用的方法,动态地加载方法所在的类,完成类的实例化并通过该实例获得需要的方法最终将请求传入方法执行。

  5. 将结果返回给客户端( jsp/html 页面、 json/xml 字符串)。

(100条消息) 深入理解Tomcat_技术交流-CSDN博客_tomcat技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

See you !

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值