tomcat笔记整理

序言

的确,你是知道怎么去使用了,你下载,卸载,部署到idea…你是会。但是,除此之外,你还会什么?

你知道tomcat内部到底怎么部署项目的吗?你对tomcat里面的目录结构熟悉吗?这是我写文档的目的。

注:既然听讲了,我就希望这节课听讲的有价值。

今日内容

1. web相关概念回顾
2. web服务器软件:Tomcat
3. Servlet入门学习

1. web相关概念回顾

问你个尬的问题,web里面有main方法没有?

–记住,web开发是一个网站的开发,网站里面是没有main方法的。

main方法是程序(叫做web应用程序)的入口,网站不是程序。

1. 软件架构
	1. C/S:客户端/服务器端
	2. B/S:浏览器/服务器端

2. 资源分类
	1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析
		* 如: html,css,JavaScript
	2. 动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,在返回给浏览器
		* 如:servlet/jsp,php,asp....
3. 网络通信三要素
	1. IP:电子设备(计算机)在网络中的唯一标识。
	2. 端口:应用程序在计算机中的唯一标识。 0~65536
	3. 传输协议:规定了数据传输的规则
		1. 基础协议:
			1. tcp:安全协议,三次握手。 速度稍慢
			2. udp:不安全协议。 速度快

计算机网络通讯协议

目前,局域网中常用的通信协议主要有:NetBEUI协议、IPX/SPX兼容协议和TCP/IP协议。

2. web服务器软件:

* 服务器:安装了服务器软件的计算机
* 服务器软件:接收用户的请求,处理请求,做出响应
* web服务器软件:接收用户的请求,处理请求,做出响应。
	* 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
	* web容器
* 常见的java相关的web服务器软件:
	* webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
	* webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
	* JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
	* Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。
* JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范

* Tomcat:web服务器软件
	1. 下载:http://tomcat.apache.org/
	2. 安装:解压压缩包即可。
		* 注意:安装目录建议不要有中文和空格
	3. 卸载:删除目录就行了
	4. 启动:
		* bin/startup.bat ,双击运行该文件即可
		* 访问:浏览器输入:http://localhost:8080 回车访问自己
						  http://别人的ip:8080 访问别人
		
		* 可能遇到的问题:
			1. 黑窗口一闪而过:
				* 原因: 没有正确配置JAVA_HOME环境变量
				* 解决方案:正确配置JAVA_HOME环境变量

			2. 启动报错:
				1. 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
					* netstat -ano
				2. 温柔:修改自身的端口号
					*定位到tomcat安装目录的: conf/server.xml
					* <Connector port="8888" protocol="HTTP/1.1"
		               connectionTimeout="20000"
		               redirectPort="8445" />
					* 一般会将tomcat的默认端口号修改为80(8888->80)。80端口号是http协议的默认端口号。
						* 好处:在访问时,就不用输入端口号
	

修改tomcat的默认端口号

如果不想使用tomcat默认的端口号8080, 则直接找到\apache-tomcat-7.0.82\conf下的server.xml配置文件, 搜索<Connector port=“8080” , 将80修改为自己想要的端口号, 修改完记得保存

重新启动tomcat服务器,------->必须启动tomcat服务器才能访问

打开浏览器在最上面的地址栏输入http://localhost:80/

在这里插入图片描述

tomcat目录结构

在这里插入图片描述

bin:放着我们真正运行tomcat的程序位置

conf:tomcat的配置,如端口号,

lib:library,库,tomcat运行需要的jar包

logs:日志的位置,当tomcat启动失败的时候可以看看里面的日志

webapps:这是我们web项目所存在的位置

访问webapps的项目&war

注意:如果端口号修改为了80,那么localhost:8080/hello---->localhost/hello;可省略端口号

首先,在webapps中定义如下:

在这里插入图片描述

在这里插入图片描述

其次,在浏览器里面访问:

在这里插入图片描述

将hello文件夹打包zip;

将zip后缀改成war;

删除zip和hello文件夹,值保存hello.war;

浏览器访问:

在这里插入图片描述

来到webapps目录,发现war自动生成了hello文件夹:

在这里插入图片描述

点击进去,发现目录结构有所变化,分析出是我们访问浏览器的地址有问题:

在这里插入图片描述

在这里插入图片描述

浏览器修改地址:

在这里插入图片描述

故此,你可反应过来一件事情没有:当你开启tomcat服务器之后,然后在地址栏输入localhost:端口号,然后回车,出现的页面。那个页面就是webapps下面,叫ROOT,之所以浏览器端口号后面没有输入任何路径是因为tomcat自动把Root文件当做默认访问的,你又会疑惑,我怎么知道这个Root文件夹那个资源被访问,是因为他又会把index开头的文件当做首选默认

在这里插入图片描述

在这里插入图片描述

再以example为例:

在这里插入图片描述

Tomcat启动默认访问的项目

一般有两种可以实现:推荐使用这一种、更灵活

一般项目的编译项目都在Tomcat的webapps下,项目的访问路径一般为:http://localhost:8080/项目虚拟路径。但是Tomcat的默认访问页面http://localhost:8080访问到的是Tomcat带猫的的那个页面,要想直接输入本地地址http://localhost:8080就可以得到项目的默认访问页,进行以下配置:

在Tomcat安装后,tomcat的默认目录是webapps/root目录,想要更改默认访问目录,即:
打开安装Tomcat的位置后,找到Tomcat下的conf/server.xml,在之间加入代码:

更改后,只要是配置文件,更改后,必须重启服务器

<Context docBase="D:\Program Files (x86)\Tomcat\webapps\kissflovewebsite" path="" debug="0" reloadable="true" />

>此处:localhost:8080/  因为path为空,所以不必多写。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

http://localhost/hdeasy/ 因为path的值为hdeasy,所以后面添加hdeasy;当然,你可以path为空,

​ 那么直接就是:localhost/ (只有80端口号默认才不需要写。)

hdeasy是她的虚拟路径。

思考:

如果此时我想要访问webapps下面的项目,该怎么访问?

–我修改了配置文件,只是针对默认启动的项目,不影响其他的项目的访问。

访问webapps/examples—>localhost/examples, 可不是localhost/hdeasy/examples


5. 关闭:
		1. 正常关闭:
			* bin/shutdown.bat
			* ctrl+c
		2. 强制关闭:
			* 点击启动窗口的×
	6. 配置:
		* 部署项目的方式:
			1. 直接将项目放到webapps目录下即可。
				* /hello:项目的访问路径-->虚拟目录
				* 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
					* war包会自动解压缩

			2. 配置conf/server.xml文件--这是项目没有放到webapps下面。
				在<Host>标签体中配置
				<Context docBase="D:\hello" path="/hehe" />
				* docBase:项目存放的路径
				* path:虚拟目录

			3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写
				<Context docBase="D:\hello" />
				* 虚拟目录:xml文件的名称
		
		* 静态项目和动态项目:
			* 目录结构
				* java动态项目的目录结构:
					-- 项目的根目录
						-- WEB-INF目录:
							-- web.xml:web项目的核心配置文件
							-- classes目录:放置字节码文件的目录
							-- lib目录:放置依赖的jar包

访问D盘根目录的项目

术语:将项目部署到tomcat上面。

具体点是:将磁盘上面的某一位置的项目部署到tomcat上面

思考:项目部署到tomcat,想一下你在idea里面集成tomcat,然后开发web项目发现:tomcat目录下

​ 的webapps里面没有你的idea项目?

我不一定非要把项目放到webapps下面啊,我就放到d盘根目录下面,然后我就想让你访问这个目录。

这时候,我们通过浏览器直接访问是访问不到的,因为tomcat只会从webapps目录下面找项目。

此时,我们需要对tomcat的conf下面的配置文件进行配置:

在这里插入图片描述

在这里插入图片描述

hdeasy是虚拟目录,什么是虚拟目录,我问你,你见着hdeasy这个文件夹了,你没有;但是你浏览器访问路

​ 径有hdeasy。这就虚拟路径。

搞了半天,发现:这不就是tomcat默认访问项目的配置吗?

不同位置的多个项目启动配置

重点哦,后面你的idea开发web项目的映射就是这个方式。

反应过来一件事情没有,如果我有多个项目,在不同的位置,那你怎么配置呢?这个默认启动方式只能设置一个默认啊,难道我每次想要默认一个项目的时候我就去配置文件里面一个一个的改这个配置,开玩笑。

在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写
				<Context docBase="D:\hello" />
				* 虚拟目录:xml文件的名称

在这里插入图片描述

suibian.xml里面只有一句话:。

path属性不需要写,我们把suibian.xml的名称suibian默认当做是path的值。

浏览器:localhost/suibian —>自动去d盘找hello文件夹,再去找hello下的index。

你有多少个不同位置的项目,我就给你配置多少个xml文件。

当然,这些配置完全不影响在webapps下面的项目访问:

访问webapps/examples—>localhost/examples

什么是网站

搞的花里胡哨,所谓的网站,不还是文件吗?你以为你在浏览器输入的路径指向谁啊,你觉得你的文件名称没有映射上,这个界面会显示吗? 网站就是文件和文件夹组成的。

此时此刻,你应该有这个意识:程序,不也是文件吗? 存储,不也是文件吗? 界面显示的不也是文件吗?

3. idea集成tomcat

真正部署到tomcat

		* 将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。
		
		
                    * :
                * 目录结构
                    * java动态项目的目录结构:
                        -- 项目的根目录
                            -- WEB-INF目录:
                                -- web.xml:web项目的核心配置文件
                                -- classes目录:放置字节码文件的目录
                                -- lib目录:放置依赖的jar包

在这里插入图片描述

真正部署到tomcat上面的是黄色区域部分的。

webapps下面没有找到这个项目

我们正常的启动之后,虽然看到了效果,浏览器可以访问,但是webapps下面没有这个项目啊?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

IDEA与tomcat的相关配置:

1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
	* 查看控制台的log:Using CATALINA_BASE:   "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"

2. 工作空间项目    和     tomcat部署的web项目
	* tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
	* WEB-INF目录下的资源不能被浏览器直接访问。
3. 断点调试:使用"小虫子"启动 dubug 启动

你要知道,这些都是idea工具帮你配置的;想想eclipse开发web,默认部署到工作目录(workspace)下的.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps。在我们初次集成tomcat的时候是需要配置eclipse里面的项目的位置的,普遍的我们都是把eclipse的项目都部署到tomcat的webapps/下面的

:[eclipse内使用tomcat项目究竟被部署到了哪里]

而myeclipse开发web,MyEclipse默认将项目部署到tomcat安装目录下的webapps中

4. Servlet: server applet

* 概念:运行在服务器端的小程序
	* Servlet就是一个接口,定  
	* 将来我们自定义一个类,实现Servlet接口,复写方法。
* 快速入门:
	1. 创建JavaEE项目
	2. 定义一个类,实现Servlet接口
		* public class ServletDemo1 implements Servlet
	3. 实现接口中的抽象方法
	4. 配置Servlet
		 在web.xml中配置:
	    <!--配置Servlet -->
	    <servlet>
	        <servlet-name>demo1</servlet-name>
	        <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
	    </servlet>
	
	    <servlet-mapping>
	        <servlet-name>demo1</servlet-name>
	        <url-pattern>/demo1</url-pattern>
	    </servlet-mapping>

* 执行原理:
	1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
	2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
	3. 如果有,则在找到对应的<servlet-class>全类名
	4. tomcat会将字节码文件加载进内存,并且创建其对象
	5. 调用其方法

* Servlet中的生命周期方法:
	1. 被创建:执行init方法,只执行一次
		* Servlet什么时候被创建?
			* 默认情况下,第一次被访问时,Servlet被创建
			* 可以配置执行Servlet的创建时机。
				* 在<servlet>标签下配置
					1. 第一次被访问时,创建
                		* <load-on-startup>的值为负数
		            2. 在服务器启动时,创建
		                * <load-on-startup>的值为0或正整数
		* Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
			* 多个用户同时访问时,可能存在线程安全问题。
			* 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

	2. 提供服务:执行service方法,执行多次
		* 每次访问Servlet时,Service方法都会被调用一次。
	3. 被销毁:执行destroy方法,只执行一次
		* Servlet被销毁时执行。服务器关闭时,Servlet被销毁
		* 只有服务器正常关闭时,才会执行destroy方法。
		* destroy方法在Servlet被销毁之前执行,一般用于释放资源

* Servlet3.0:
	* 好处:
		* 支持注解配置。可以不需要web.xml了。

	* 步骤:
		1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
		2. 定义一个类,实现Servlet接口
		3. 复写方法
		4. 在类上使用@WebServlet注解,进行配置
			* @WebServlet("资源路径")
			@Target({ElementType.TYPE})
			@Retention(RetentionPolicy.RUNTIME)
			@Documented
			public @interface WebServlet {
			    String name() default "";//相当于<Servlet-name>
			
			    String[] value() default {};//代表urlPatterns()属性配置
			
			    String[] urlPatterns() default {};//相当于<url-pattern>
			
			    int loadOnStartup() default -1;//相当于<load-on-startup>
			
			    WebInitParam[] initParams() default {};
			
			    boolean asyncSupported() default false;
			
			    String smallIcon() default "";
			
			    String largeIcon() default "";
			
			    String description() default "";
			
			    String displayName() default "";
			}

lue() default {};//代表urlPatterns()属性配置

		    String[] urlPatterns() default {};//相当于<url-pattern>
		
		    int loadOnStartup() default -1;//相当于<load-on-startup>
		
		    WebInitParam[] initParams() default {};
		
		    boolean asyncSupported() default false;
		
		    String smallIcon() default "";
		
		    String largeIcon() default "";
		
		    String description() default "";
		
		    String displayName() default "";
		}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Tomcat是一个开源的Java Servlet容器,用于处理Java Servlet和JSP(Java Server Pages)请求。为了提高Tomcat的性能,我们可以采取以下一些优化措施: 1. 调整内存设置:Tomcat的性能受到内存的影响较大,可以根据服务器的硬件和预期的负载来配置JVM(Java虚拟机)的内存参数,如-Xms(初始堆大小)和-Xmx(最大堆大小)。合理配置内存可以有效地避免内存溢出和频繁的垃圾回收。 2. 合理配置线程池:Tomcat使用线程池来处理并发请求,可以通过调整线程池的大小和配置参数来提高性能。可以根据服务器的硬件配置,预估的请求数量和处理时间来合理配置线程池的大小,避免线程过多或过少的情况发生。 3. 优化静态资源的处理:静态资源(如图片、CSS和JavaScript文件)可以通过使用CDN(内容分发网络)或将其存储在独立的服务器上来提高访问速度。同时,可以启用GZIP压缩和浏览器缓存,以减少传输的数据量和渲染时间。 4. 优化数据库访问:在应用程序中,数据库访问是一个非常常见且需要优化的环节。可以使用连接池来减少数据库连接的开销,同时尽量减少不必要的SQL查询和使用合适的索引。此外,将频繁查询的数据缓存到内存中,可以大大提高性能。 5. 调整Tomcat的配置参数:Tomcat的性能也受到其自身的配置参数的影响,可以根据具体情况来调整一些重要的参数,如连接超时时间、最大请求数量、缓冲区大小等。 6. 监控和识别性能问题:在优化Tomcat性能的过程中,及时监控和识别性能问题非常重要。可以使用一些性能监控工具,如JVisualVM、JProfiler等来识别潜在的性能瓶颈和热点。 综上所述,通过调整内存设置、线程池配置、静态资源优化、数据库访问优化、调整Tomcat配置参数以及监控问题识别,我们可以有效地优化Tomcat的性能,提升应用程序的响应速度和并发处理能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@来杯咖啡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值