jsp项目部署到tomcat下的执行流程

本文详细解析了JSP项目如何部署到Tomcat的过程,包括静态资源与动态资源的处理方式,并阐述了JSP与Servlet的关系,以及如何通过URL匹配实现网页访问过程。

这篇博文将就一下几方面进行论述(如有误,请留言指出)

1.jsp项目部署到Tomcat的过程

2.网页访问项目中jsp页面和servlet的过程

 一、jsp项目部署到Tomcat 

            
               图一 (部署在Tomcat下的项目)                                                    图二(项目的源文件)
  我们可以看到图一和图二的对比
     java web 和 jsp 项目中的所有文件都可以划分成两类,分别为 静态资源和动态资源。静态资源一般为存放在WebRoot下的图片、网页、样式等资源;动态资源为非WebRoot下的java文件(如 src文件加下的java文件)。
      当项目部署到Tomcat下时,静态文件如图一所示--直接复制;动态文件(java文件)会由myeclipse或者eclipse本身提供的功能将其进行编译,然后在存放到WEB-INF的classes文件夹下,令所有的java文件均以.class形式存在。
      但是如图二中的res/test.txt该如何处理?如图三所示,将其直接复制到classes文件夹下。
                     
                                                                   图三
   总结:jsp项目的部署规则如下:
      1.  WebRoot下的所有资源全部复制到tomcat对应项目
      2.  WebRoot外的资源文件夹中的动态资源,即java文件,进行编译,在将编译后的class文件存放到tomcat项目中的WEB-INF下的classes文件夹下
      3.  WebRoot外的资源文件夹下的静态资源(如 res下的test.txt文件),直接将其复制到WEB-INF的classes文件夹下。


 二、网页访问项目中jsp页面和servlet的过程

      1.论jsp和servlet的关系
      其实在开发过程中并没有jsp的存在,html代码都必须在servlet的内置对象out中书写。因此每个以servlet形式存在的页面都必须要在xml文件中配置,进而延长了开发周期,jsp的出现较好的解决了这一问题。每个jsp页面实质上都是一个servlet,tomcat本身会把jsp页面对应的url映射到某个特定的xml文件中,而非项目中WEB-INF下的web.xml文件。
                       
                                                                    图四
     项目中的index.jsp页面编译后形成的两个文件,如图四所示。
    
     2.网页请求过程
      当在地址栏输入我们要访问的jsp页面时,该请求会和tomcat下那个特定的用来映射jsp页面和url信息的xml文件(不是WEB-INF下的web.xml文件)进行匹配。匹配成功后进行相应的跳转。
     当在地址栏输入我们要访问的serlvet时,该请求和WEB-INF下的web.xml文件进行匹配。匹配成功后,进行相应的跳转。
      


    
 
        
<think>我们正在讨论IntelliJ IDEA中JavaWeb项目Tomcat执行流程。根据引用内容,我们可以总结出以下关键步骤: 1. **配置Tomcat**:在IDEA中需要先配置Tomcat服务器(引用[1]和[2]提到)。 2. **创建JavaWeb项目**:然后创建JavaWeb项目(引用[1])。 3. **项目结构**:了解JavaWeb项目结构(引用[1])。 4. **IDEA部署Tomcat的原理**:引用[1]提到了IDEA自动部署Tomcat的原理,但未详细说明。不过,引用[3]提到启动Tomcat是通过运行`startup.sh`或`startup.bat`。 5. **手动部署**:引用[1]还提到了手动部署。 结合这些信息,我们可以详细描述Tomcat在IntelliJ IDEA中的执行流程: ### Tomcat在IntelliJ IDEA中的执行流程 1. **配置Tomcat**: - 在IDEA中打开项目后,进入`Run/Debug Configurations`设置,添加Tomcat服务器。 - 指定Tomcat的安装目录(引用[2]中步骤3的②)。 2. **项目部署配置**: - 在部署配置中,指定要部署项目工件(Artifact),通常是WAR包或展开的目录(引用[2]中步骤3的Modules部分)。 - 配置上下文路径(即访问路径)。 3. **启动Tomcat**: - 当在IDEA中启动Tomcat时(通过运行配置),IDEA实际上会做以下事情: - 根据配置,将项目编译输出(包括Web资源)复制到Tomcat的一个特定目录下(这个目录由IDEA管理,通常位于项目目录下或系统临时目录中)。 - 生成一个配置文件(如`context.xml`)来配置上下文。 - 启动Tomcat进程(引用[3]提到启动`startup.bat`或`startup.sh`,但IDEA通常以特定的方式启动,可能不是直接运行这些脚本)。 4. **IDEA部署Tomcat的原理**: - IDEA不会直接修改你安装的Tomcat目录,而是将Tomcat作为一个外部服务器,每次运行时,它会将项目构建并部署到一个临时目录中,然后配置Tomcat使用这个临时目录(引用[1]提到“IDEA自动部署Tomcat的原理”)。 - 这样做的目的是避免污染原始Tomcat安装,同时允许多个项目同时使用不同的Tomcat实例。 5. **Tomcat运行项目**: - Tomcat启动后,会加载部署的Web应用。 - 当有请求到达时,Tomcat的Connector组件接收请求,然后交给Engine处理,最终路由到对应的Web应用(即我们的项目)。 6. **停止Tomcat**: - 在IDEA中停止运行时,IDEA会发送停止信号给Tomcat进程,Tomcat会优雅地关闭。 ### 注意事项 - 在IDEA中部署时,如果选择“Update resources”或“Update classes and resources”,则IDEA会在运行时动态更新资源,而无需重启Tomcat(仅适用于热部署支持的更改)。 - 引用[3]提到,直接运行Tomcat的启动脚本(`startup.sh`或`startup.bat`)会启动一个独立的Tomcat进程,但IDEA启动的Tomcat进程是受IDEA控制的,关闭IDEA的运行窗口会停止Tomcat(类似于运行`startup.bat`会打开一个窗口,关闭窗口则停止)。 ### 总结流程 1. 配置Tomcat服务器路径。 2. 配置项目部署(工件和上下文路径)。 3. IDEA构建项目并复制到临时目录。 4. IDEA启动Tomcat进程(使用特定的配置指向临时目录)。 5. Tomcat加载并运行Web应用。 6. 用户通过浏览器访问。 7. 停止时,IDEA关闭Tomcat进程。 §§相关问题§§ 1. 如何在IntelliJ IDEA中配置Tomcat服务器? 2. 在IDEA中部署JavaWeb项目时,如何实现热部署? 3. 为什么在IDEA中启动Tomcat后,修改代码有时需要重启Tomcat? 4. 如何手动将JavaWeb项目部署Tomcat服务器?</think>### IntelliJ IDEA中JavaWeb项目Tomcat执行流程 在IntelliJ IDEA中运行JavaWeb项目时,Tomcat执行流程可分为以下阶段(结合IDEA的自动化机制): #### 1. **配置阶段** - **服务器配置**:在IDEA中通过`Run/Debug Configurations`添加Tomcat实例,指定Tomcat安装路径和JDK版本(引用[2])[^2]。 - **部署工件**:选择需要部署的Web工件(如WAR包或展开的目录),IDEA自动生成部署描述符(如`context.xml`)。 #### 2. **启动阶段** - **临时目录构建**:IDEA创建专属临时目录(默认在`<系统临时目录>/tomcat_<端口号>`),复制以下内容: - 编译后的`classes`文件 - Web资源(`WEB-INF`, `JSP`, 静态文件) - Tomcat配置(修改`server.xml`、`web.xml`等) - **启动脚本执行**:IDEA调用Tomcat的`catalina.sh`(Linux/Mac)或`catalina.bat`(Windows),但**不直接使用`startup.bat`**(引用[3])[^3],而是通过自定义进程启动。 #### 3. **运行时流程 ```mermaid graph LR A[IDEA启动命令] --> B[Tomcat Bootstrap加载] B --> C[初始化Connector<br>HTTP/HTTPS端口] C --> D[部署Web应用] D --> E[加载Servlet容器<br>e.g. Servlet/JSP] E --> F[请求处理循环] F --> G[响应返回客户端] ``` #### 4. **热部署机制** - **动态更新**:若开启`Update classes and resources`(调试配置),IDEA会监控文件变化: - 修改Java文件 → 触发热加载(不重启Tomcat) - 修改`web.xml`/JSP → 自动重新部署 - **限制**:添加新库或修改`@WebServlet`注解需重启(引用[1])[^1]。 #### 5. **停止阶段 - **优雅关闭**:IDEA发送`SHUTDOWN`信号给Tomcat进程: - 释放所有线程池 - 持久化Session(若配置) - 删除临时部署目录 > 💡 **IDEA特有行为**: > 与手动部署不同,IDEA的Tomcat流程完全隔离: > - 不修改原始Tomcat安装目录 > - 临时目录结构示例: > ``` > /tmp/tomcat_8080/ > ├── conf/ ← 自定义配置 > ├── webapps/your_project ← 部署内容 > └── logs/ ← IDEA重定向日志 > ``` ### 常见问题解析 1. **端口冲突**:IDEA自动检测端口占用,冲突时提示修改。 2. **类加载顺序**:遵循Tomcat标准类加载机制(`WEB-INF/lib`优先于系统库)。 3. **热部署失败**:通常因JDK调试参数不匹配或文件锁定导致。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值