1. web服务器软件
1.1 概述
-
服务器:安装了服务器软件的计算机,如安装了mysql后的计算机就是mysql服务器
-
服务器软件:接收用户的请求(如mysql登录,CRUD),处理请求,做出响应
-
web服务器软件:web的服务器软件可以部署web项目,让用户通过浏览器访问这些项目,可以理解为web容器
-
常见的java的web服务器软件:
- webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
- webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
- JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费
- Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范(servlet/jsp)。开源免费
总结:web服务器软件:部署web项目
1.2 tomcat
是一款web服务器软件
使用:
-
下载:http://tomcat.apache.org/
-
安装:解压压缩包即可
-
卸载:删除目录即可
-
文件目录详解:
bin:存放可执行文件
conf:存放配置文件
lib:存放依赖的jar包
logs:存放日志文件
temp:存放临时文件
webapps:存放web项目
work:存放运行时的数据
-
启动:
第一步双击运行bin/startup.bat
第二步浏览器访问:
http://localhost:8080 访问自己
http://别人的ip:8080 访问别人 -
关闭:
正常关闭:双击运行bin/shutdown.bat或在打开的窗口按ctrl+c
强制关闭:直接关闭窗口
-
配置:
一:部署项目的形式,有三种方式:
方式一:
直接将项目文件夹放入webapps目录下部署完别人的访问方式:
例如在webapps下放入了Hello文件夹,则只需要在访问tomcat的页面中将访问路径加上/Hello(项目文件名)/项目文件(如hello.html)即可
其中/Hello是项目的访问路径,也叫虚拟目录
/hello.html是资源名称
不能只写虚拟目录不写资源名称!
当项目中文件很多时存在一个简化部署的方式:
将项目压缩成一个war包,再将war包放置到webapps目录下。
war包在webapps下会自动解压缩
缺点:每次部署项目都要拷贝项目文件,且虚拟目录名称只能是项目名称
方式二:
配置conf/server.xml文件在<Host>标签体中配置Context标签:
<Context docBase="D:\hello" path="/hehe" />
其中,docBase为项目存放路径
path为虚拟目录
即此时用户在tomcat中将访问路径加上/hehe即可访问项目
缺点:conf/server.xml是整个Tomcat的核心配置文件,在这里部署项目很不安全,一般不使用这个方法
方式三:
在conf\Catalina\localhost下创建xml文件在创建的xml文件中部署项目,xml文件命名随意
在配置文件中编写:
<Context docBase="D:\hello" />
此时不写path,因为虚拟目录就是xml文件的名称
推荐使用方式三,是一种热部署的形式,不用用到项目时只要将项目配置部署文件后缀名修改为.xml_bat即可让tomcat访问不到这个项目
二:项目形式:静态项目与动态项目:
静态项目中只能存放静态资源
java动态项目的目录结构:
– 项目的根目录:
– WEB-INF目录:
– web.xml:web项目的核心配置文件
– classes目录:放置字节码文件的目录
– lib目录:放置依赖的jar包
– 静态资源
动态项目一定有WEB-INF目录
热部署概念:
热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率;二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。
1.2.1 在IDEA中部署tomcat项目:
在运行栏的编辑配置下引入Tomcat
创建Java Enterprise模块,应用程序服务器选择Tomcat,创建完项目后会自动帮我们部署tomcat项目,项目结构示意图:
其中index.jsp是不写资源名称时默认执行的文件,类似首页
修改为热部署的方法:将执行更新与框架停用时修改为更新资源:
1.2.2 IDEA与tomcat的相关配置
-
IDEA会为每一个tomcat部署的项目单独建立一份配置文件
查看方法:查看控制台的log中的Using CATALINA_BASE
-
工作空间项目 和 tomcat部署的web项目
- tomcat真正访问的是“tomcat部署的web项目”,而"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源,也就是说tomcat不是直接访问我们工作空间里的项目的
- WEB-INF目录下的资源不能被浏览器直接访问,也就是说我们的代码不能写在WEB-INF目录下