Tomcat
部署
- 直接将项目放到webapps目录即可 简化部署:将项目打成一个war包,再将war包部署到webapps目录下 (war包会自动解压缩)
- 配置conf/server.xml文件 (在<Host>标签体中配置
<Context docBase="D:\hello" path="/hehe" />
* docBase:项目存放的路径
* path:虚拟目录)- 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写
<Context docBase="D:\hello" />
* 虚拟目录:xml文件的名称
静态项目和动态项目
目录结构
java动态项目的目录结构:
项目的根目录:
-----WEB-INF目录:
------web.xml:web项目的核心配置文件
----------classes目录:放置字节码文件的目录
----lib目录:放置依赖的jar包
Servlet
概念:运行在服务器端的小程序
Servlet就是一个接口,定义了java类被浏览器访问到(Tomcat)的规则。
将来我们定义一个类,实现servlet接口,复写方法
servlet的快速入门
- 创建javaEE项目
- 定义一个类,实现servlet接口 【 public class ServletDemo1 implements Servlet】
- 实现接口中的抽象方法
- 配置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>
servlet执行原理
- 当服务器接收到客户端浏览器的请求后,会解析请求url路径
- 查找web.xml文件,是否有对应的<url=pattern>标签体内容
- 如果有,则在找到对应的<servlet-class>全类名
- Tomcat会将字节码文佳加载进内存,并且创建其对象
- 调用方法
Servlet的生命周期
被创建
默认情况下,第一次被访问时,servlet被创建
可以配置执行servlet的创建时机
在web.xml文件中配置
1. 第一次被访问时,创建
* <load-on-startup>的值为负数
2. 在服务器启动时,创建
* <load-on-startup>的值为0或正整数Servlet的init方法,只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的
解决:尽量不要在servlet中定义成员变量,即使定义了成员变量,也不要对修改值
提供服务
每次访问servlet时,service方法都会被调用一次
被销毁
Servlet被销毁时执行。服务器关闭时,servlet被销毁。
只有服务器正常关闭时,才会执行destroy方法。
destroy方法在Servlet被销毁之前执行,一般用于释放资源
Servlet3.0
好处:支持注解配置。可以不需要web.xml了
步骤:
创建JavaEE项目,选择servlet的版本3.0以上
定义一个类,实现servlet接口
复写方法
在类上使用@WebServlet注解,进行配置 @WebServlet("资源路径")
IDEA与Tomcat的相关配置
- idea会为每一个Tomcat部署的项目单独建立一份配置文件
- 工作空间项目 和Tomcat 部署的web项目
【Tomcat真正访问的是Tomcat部署的web项目,,Tomcat部署的web项目对应着 工作空间项目的web目录下的所有资源 】
【WEB-INF目录下的资源不能被浏览器直接访问】
3. 端点调试:使用小虫子启动debug启动
为了简化servlet要实现HttpServlet接口
可以设置WebServlet的访问路径,设置多级的内容 ("/aa/bb") ("/aa/*") ("*.do")