以下是个人对于maven、javaEE和传统tomcat项目的理解,网上查了很多内容,关于这个问题回答的很少,也不是特别明白,有出错的地方恳请各位大佬指正,感激不尽

一、使用idea创建传统tomcatweb项目的时候需要选择Java jdk版本和JavaEE版本

idea没有javaee生成器 为什么idea没有javaee_web项目


这是因为在创建web项目的时候,会用到servlet和jsp等javaSE中没有的内容,所以需要引入javaEE来提供相关的包,所以在写web项目时,编译器不会报错。

二、在idea中创建maven项目的时候为什么必须要引入servlet和jsp的依赖包呢?

我们可以看到,在创建maven项目的时候,仅仅让选择JDK版本和项目模板,并没有让选择javaEE,所以我认为maven在创建的时候其实只有javaSE

idea没有javaee生成器 为什么idea没有javaee_java_02


而在创建javaweb项目的时候,有需要用到servlet和jsp的包,这个时候会发现直接写关于servlet和jsp的代码的时候程序会提示编译错误,所以需要重新引入servlet和jsp的依赖

idea没有javaee生成器 为什么idea没有javaee_java_03


这个时候编译才正常通过,但是由于tomcat内部已经存在了servlet和jsp包,所以在tomcat运行时会出现jar包冲突,所以在添加依赖的时候要加上<scope>provided</scope>,使添加的依赖包仅仅在编译和测试的环境下使用,真正在运行的时候仍然使用的时tomcat中的servlet和jsp包,所以这时会出现一个版本的问题,如何maven引入的jar依赖和tomcat中的已经存在的jar包冲突较大,比如tomcat版本较低的时候,可能编译通过了,但是在tomcat上运行的时候就会报500错误,解决办法可以通过加入更高版本的tomcat插件来使用更高版本的tomcat7:run来运行,我想在创建传统tomcatweb项目的时候应该也会有类似的问题,具体如何自动解决的尚不清楚

idea没有javaee生成器 为什么idea没有javaee_tomcat_04