本文可能略长,请大家通过目录跳转食用


IDEA2021中创建JavaWeb项目

  • 一. IDEA中使用Tomcat
  • 二. 创建Javaweb项目
  • 三. JavaWeb项目结构
  • 四. IDEA部署Tomcat的原理
  • 五. 手动部署在IDEA中编写好的JavaWeb项目
  • 六. 记录一下不知道为什么报错的离谱情况



一. IDEA中使用Tomcat

1. 添加Tomcat的运行方法:

idea项目架构 idea javaweb项目结构_idea 2021

2. 新增一个configuration Templates

idea项目架构 idea javaweb项目结构_idea 2021_02


3. 选中到Tomcat的安装目录

idea项目架构 idea javaweb项目结构_Tomcat_03

idea项目架构 idea javaweb项目结构_Tomcat_04


点击ok以后,我们的Tomcat就在IDEA中配置好了


二. 创建Javaweb项目

对于JavaWeb开发需要使用的是 Ultimate IntelliJ IDEA,创建企业版的javaEE项目

idea项目架构 idea javaweb项目结构_JavaWeb_05

idea项目架构 idea javaweb项目结构_JavaWeb_06

修改一下,每次保存自动更新加载,不用重新启动服务再开(感觉没啥用,有时候还是要重启)

idea项目架构 idea javaweb项目结构_idea项目架构_07

创建完以后看一下目录结构

idea项目架构 idea javaweb项目结构_idea 2021_08


三. JavaWeb项目结构

创建完以后看一下目录结构,这个是默认的结构,我们可能会改一些java包的名字

idea项目架构 idea javaweb项目结构_idea 2021_08


在我们编写一些代码导入一些jar包引入一些静态文件运行后,我们的项目目录可能变成了下面这个样子:

idea项目架构 idea javaweb项目结构_Tomcat_10


为了防止一会标注后看不清,上面先放一个原始图片,下面来看一下分别某些模块会对应在哪里

idea项目架构 idea javaweb项目结构_intellij-idea_11


可能图片会有一些不太清楚(孩子尽力了😭😭😭),这里主要是注意一下jar包和静态文件的位置

清楚了文件的位置关系以后,这可以帮我们应对一些非代码错误(比如导包出错),如果我们修改完代码,但是没有起到效果,我们可以去target对应的地方看看IDEA有没有帮我们把它映射进去,

因为我们最后部署在Tomcat上的是target中的东西,准确说是target下 xxxx-xx-SNAPSHOT 中的文件,就比如我现在这个项目,部署在Tomcat上的就是 \target\webLogin-1.0-SNAPSHOT下的文件,这我是怎么知道的呢,下面我们来看一下IDEA部署Tomcat的原理


四. IDEA部署Tomcat的原理

当我们运行我们的项目后,控制台会输出一些日志信息,我们可以找到这样一项

idea项目架构 idea javaweb项目结构_idea 2021_12


我们将 Using CATALINA_BASE 后的路径复制进文件资源管理器(就是文件夹)打开这个路径

idea项目架构 idea javaweb项目结构_JavaWeb_13


/conf/ Catalina/ localhost/ 下我们可以看到一个.xml文件

idea项目架构 idea javaweb项目结构_intellij-idea_14

通过记事本打开,里面只有一行配置

<Context 
	path="/webLogin_war_exploded" 
	docBase="D:\web\webLogin\target\webLogin-1.0-SNAPSHOT"
 />

其中 path 就是我们在浏览器访问的时候的虚拟目录,也就是在tomcat中配置的这个

idea项目架构 idea javaweb项目结构_intellij-idea_15


docBase 就是部署在Tomcat中的我们的项目文件的路径,可以打开看一下这个路径中的文件

idea项目架构 idea javaweb项目结构_JavaWeb_16


idea项目架构 idea javaweb项目结构_idea 2021_17


可以看到这个和我们开始JavaWeb项目结构分析中target的文件是一样的。

了解IDEA怎么帮我们部署的原理后,我们就可以手动将我们的项目部署在Tomcat上去了


五. 手动部署在IDEA中编写好的JavaWeb项目

进入刚才找到的docBase中设置的文件目录,将除了META-INF之外的文件都压缩为.zip文件

idea项目架构 idea javaweb项目结构_intellij-idea_18


注意,这个zip文件的文件名,应该和你项目中设置的虚拟目录的名称相同,否则可能会找不到对应的jsp或servlet文件我这里为了演示,就不改了,这里一定要注意

idea项目架构 idea javaweb项目结构_JavaWeb_19


将zip文件改后缀名为.war ,并复制在Tomcat安装目录下的webapps文件夹下

idea项目架构 idea javaweb项目结构_idea 2021_20

idea项目架构 idea javaweb项目结构_intellij-idea_21


在bin目录下使用 statup.bat 来启动Tomcat

idea项目架构 idea javaweb项目结构_Tomcat_22


可以在刚才的webapps中看到,war文件被自动部署,现在我们就可以使用这个文件夹名作为虚拟目录来访问我们的项目了

idea项目架构 idea javaweb项目结构_idea项目架构_23


六. 记录一下不知道为什么报错的离谱情况

  1. 之前用的包,突然就找不到了
    可能是包的版本相互不太匹配,也可能是IDEA抽抽了
    我们只需要重新导入对应的包(这里最好是版本匹配的包),然后最好重启一下IDEA
  2. 明明改了js和css但没有效果
    这里如果是外联js和css,需要重启Tomcat,重启过后最好看一下target中的文件是不是改了以后的新文件,有时候可能映射过去有延迟,实在不行就手动复制对应的文件到target对应的位置
    如果还是没有效果,记得清一下浏览器的缓存,特别是get请求很容易被缓存,然后虽然我们修改了,但是我们请求的是之前的缓存文件
  3. 明明资源就在那,却找不到
    这里涉及到项目路径问题,这里先简单记录一下
    如果是在Servlet中进行转发(request.getRequestDispatcher()),我们的路径只用写资源路径就好了不用写虚拟目录,这里是从默认会从webapp下去查找,如果是Servlet中的重定向(response.sendRedirect()),需要写一下虚拟目录,后面再跟资源路径
    如果是在jsp/html中进行资源的请求重定向等,都需要加上虚拟路径