1.Tomcat
2.Servlet
文字:
1.Tomcat
服务器:安装了服务器软件的计算机
服务器软件:接收用户请求,处理请求,做出响应
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.下载
2.安装
3.卸载
4.启动
bin/startup.bat
http://localhost:8080 访问自己
http://别人的ip:8080 访问别人
5.关闭
6.配置
部署目录的方式:
1.直接将项目放到webapps里
项目的访问路径->虚拟目录
简化部署:将项目压缩成一个.war包,粘贴到webapps目录下会自动解压缩
2.配置conf/server.xml文件
在<Host>标签体中配置
<Context docbase="项目路径" path="虚拟目录" />
3.在conf/Catalina/localhost文件夹中下创建任意名称的.xml文件。在文件中编写<Context docbase="项目路径" />,文件名称就是虚拟目录
静态项目和动态目录:
目录结构
java动态项目的目录结构
-- 项目的根目录
-- WEB-INF目录
-- web.cml:web项目的核心配置文件
-- classes目录:放置字节码文件的目录
-- lib目录:放置依赖的jar包
将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目
IDEA和Tomacat的相关配置
1.IDEA会为每一个Tomcat部署的项目单独建立一份配置文件
查看控制台的log:Using CATALINA_BASE:"C:\Users\邵宇辉、\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\077fb677-2e2b-4a7d-8fff-4dcbd88a4c2e"
2.工作空间项目 和 tomcat部署的项目
真正访问的是后者,后者对应前者的web目录下的所有资源
3.断点调试:使用debug启动
2.Servlet
Servlet:server applet(运行在服务器端的小程序)
1.概念:
定义了一个Java类被浏览器访问到(Tomcat识别到)的规则
将来我们定义一个类,实现Servlet接口,复写方法
2.快速入门:
1.创建JavaEE项目
2.定义一个类,实现Servlet接口
public class ServletDome1 implements Servlet
3.实现接口中的抽象方法
4.配置Servlet
在web.xml的web-app标签中配置
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.web.servlet.ServletDome1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>demo1</url-pattern>
</servlet-mapping>
3.Servlet执行原理:
1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2.查找web.xml文件,是否有对应的<url-pattern>标签体内容
3.如果有,则再找到对应的<servlet-class>全类名
4.tomcat会将字节码文件加载进内存,并且创建其对象
5.调用其方法
4.Servlet中的生命周期:
1.被创建:执行init方法,一次
Servlet什么时候被创建?
默认情况下,第一次被访问时,Servlet被创建
可以配置执行Servlet的创建时机:
在<servlet>标签下进行配置
1.第一次访问时被创建:
<load-on-startup>值为负数(默认)
2.在服务器被启动时创建:
<load-on-startup>值为非负数
Servlet的init方法,只执行一次,说明一个Servlet在内存中只有一个对象,Servlet是单例的
多个用户同时访问可能存在安全问题
解决:尽量不要在Servlet中定义成员变量,即使定义了成员变量也不要修改值
2.提供服务:执行service方法,多次
每次访问Servlet时,都会调用一次
3.被销毁:执行destroy方法,一次
在Servlet被销毁时(服务器正常关闭时),执行一次
销毁之前执行方法释放资源
5.Servlet3.0:
好处:
支持注解配置,可以不需要web.xml
步骤:
1.创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
2.定义一个类,实现Servlet接口
3.复写方法
4.在类上使用一个注解:@WebServlet进行配置
@WebServlet("资源路径")
6.Servlet的体系结构:
Servlet -- 接口
GenericServlet -- 抽象类:
将Servlet接口中的其他方法做了空实现,只抽象了Service()方法作为抽象
HTTPServlet -- 抽象类:对HTTP协议的一种封装
1.定义类继承HTTPServlet
2.复写doGet/doPost
7.Servlet的相关配置
1.urlpartten:Servlet访问路径
一个Servlet可以定义多个访问路径:
@WebServlet({"/servletDemo4","/d4","/dd4"});
2.路径定义规则:
1./xxx
2./xxx/xxx:多层路径(目录)
3./*.do