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
Tomcat:web服务器软件
安装:解压压缩包即可。不要有中文和空格
卸载:删除文件即可
启动:
bin/startup.bat,双击即可
访问:浏览器输入:
http://localhost:8080
回车访问可能遇到的问题:
黑窗口一闪而过:
- 原因:没有正确配置JAVA_HOME环境变量
- 解决方案:正确配置JAVA_HOME环境变量
启动报错:
暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
netstat -ano
温柔:修改自身的端口号
- 在conf/server.xml中修改默认端口号
关闭:
正常关闭
- shutdown.bat
- ctrl+c
强制关闭
- 点击启动窗口的×
配置
部署项目的方式
直接将项目放大webapp
/hello
:项目的访问路径—>虚拟目录- 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。war包会自动解压缩
配置conf/server.xml文件
在<Host>
标签体中配置<Context docBase="C:\Users\King\Desktop\hello" path='/hehe' />
docBase:项目存放的实际路径
path:虚拟目录在conf/Catalina\localhost创建任意名称的xml文件。在文件中编写
<Context docBase="C:\Users\King\Desktop\hello" />
虚拟目录就是xml文件的名称
静态项目和动态项目
目录结构
- java动态项目的目录结构:
--项目的根目录
--WEB-INF目录
:
--web.xml:web项目的核心配置文件
--classes目录:放置字节码文件的目录
--lib目录:放置依赖jar包的目录
- java动态项目的目录结构:
将Tomcat集成到IDEA中,并且创建JavaEE项目,部署项目
Servlet:Server applet
概念:运行在服务器端小程序
- Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
- 将来我们自定义一个类,实现Servlet接口复写方法。
快速入门:
创建一个JavaEE的项目
定义一个类,实现Servlet接口
public class ServletDemo1 implements Servlet
实现接口中所有的抽象方法
配置Servlet,在web.xml中配置 ```xml
demo1 web.servlet.ServletDemo1
demo1 /deom1
Servlet执行原理
- 当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问Servlet的资源绿路径
- 查找web.xml文件,是否有对应的
<url- pattern>
标签体内容 - 如果有,则找到对应的
<servlet-class>
全类名 - tomcat会将字节码文件加载进内存,并且创建其对象
- 调用其方法
servlet中的生命周期:
被创建:执行init方法,只执行一次
Servlet什么时候被创建?
- 默认情况下,第一次被访问时,Servlet被创建
可以配置执行Servlet的创建时机,在
<servlet>标签下配置
。第一次被访问时,创建:
<load-on-startup>的值为负数(默认是-1)
在服务器启动时创建:
<load-on-startup>的值为0或正数
Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
- 多个用户同时访问时,可能存在线程安全问题。
- 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要去修改值
提供服务:执行service方法,执行多次
- 每次访问Servlet时,Service方法都会被调用一次
被销毁:执行destroy,执行一次
- Servlet被注销时销毁。服务器关闭时,Servlet被销毁
- 只有服务器正常关闭时,才会执行destory方法。
servlet3.0:
好处:
- 支持注解配置。可以不需要web.xml了。
步骤:
创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
定义一个类,实现Servlet接口
复写方法
在类上实现@WebServlet注解,进行配置
@WebServlet( "/demo")
public class ServletDemo2 implements Servlet {
IDEA和tomcat的相关配置
IDEA会为每一个tomcat部署的项目单独建立一份配置文件
- 查看控制台log:Using CATALINA_BASE: “D:\IDEA.IntelliJIdea\system\tomcat\Tomcat_8_5_31_xujie”
工作空间项目和tomcat部署的web项目
- tomcat真正访问的是tomcat部署的web项目,tomcat部署的web项目对应工作空间项目的web目录下所有资源
- WEB-INF目录下资源不能被浏览器直接访问。
- 断点调试:Debug