war和war exploded的区别
war模式:将WEB工程以包的形式上传到服务器 ;
war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;
>> war包是自己打包生成的,如pom文件中<packaging>war</packaging>
则在项目build的构建的时候将打包成一个war包,默认是一个已经完成准备部署发布的项目包;
>> war exploded包是IDEA在工程创建的时候就自动生成的,是给开发者放在服务器上或本机调试用的,并不是一个已完成的准备发布的项目包。
在idea Tomcat部署时选择不同包的区别
1. 当我们在tomca的Deployment里面部署的是war包的话,就没有“Update classes and resources”
,只有部署war exploded包的时候才会出现“Update classes and resources”
。如下面图所示:
2. 两种情况下部署后项目的存放目录不同
war模式:将WEB工程以war包的形式上传到Tomcat服务器 ,存放于服务器的webapps目录下
;
war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;
**war exploded模式:**将WEB工程以当前文件夹的位置关系上传到服务器;也就是说不会再Tomcat服务器的webapps目录下
。
war exploded模式这种可以称之为开发调试模式,默认是项目所在目录的target目录下
。
具体验证可通过获取上下文环境绝对路径来看:
String contextPath = request.getSession().getServletContext().getRealPath("/");
war包模式始终是获取到的路径为:C:\Program Files\apache-tomcat-7.0.82\webapps\assets
Tomcat所在位置
war exploded包模式获取到的路径为:C:\projects\sx_zc\asset_sx\target\assets
项目所在的target位置
On ‘Update’ action 和 On Frame deactivation
On Update action
“On Update Action”是指当代码改变的时候,需要IDEA为你做什么
,比如更新了静态资源或者java代码后对应的行为;
一般选择“Update classes and resources”,里面有四个选项
-Update resources :更新的是资源文件(*.jsp,*.xml等,不包括java文件),点击‘update’就会立刻生效
-Update classes and resources : 同时包含java文件和资源文件的,点击‘update’就会立刻生效
run运行模式下(jsp 立即生效,java 需要redeploy才可生效);debug调试模式下(java、jsp 都立即生效)
两种运行模式下,修改resources资源文件都是可以立刻生效的。
-Redploy : 重新部署,只是把原来的war删掉,不重启服务器
-Restart : 重启服务器
On Frame deactivation
指失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么
。一般选择“Do nothing”最好
,官方也默认的是“Do nothing”
作用:失去焦点的情况下 自动触发
,而开发过程中 可能需要查询资料 或 与人聊天 或干其它事,IDE需要不停的失去焦点。每次失去焦点就自动触发 update ,CPU一下子 费很多,电脑瞬间变慢,所以没有必要这样
监听整个页面的配置,一修改就立即更新(idea 官方的推荐是设置为Do nothing,原因是可以节省idea消耗的内存)
-Do nothing : 不做任何事
-Update resources : 一修改立刻更新,修改的resources文件都会立刻生效
-Update classes and resources : 一修改立刻更新,修改的java ,resources文件都会立刻生效(与On update action中的Update classes and resources一样,也是运行模式修改的java文件不会生效,debug模式修改的java文件会立刻生效)
总结
开发调试时建议选择war exploded包进行部署,正式上线时选择war包部署