初始化配置

配置 IDEA - 图1
配置 IDEA - 图2
配置 IDEA - 图3
配置 IDEA - 图4

配置 WebApp 项目

选择create new project-Maven-Create from archetype。找到maven-archetype-webapp这个骨架,然后next

配置 IDEA - 图5


配置 IDEA - 图6
由于maven骨架和一些jar需要去maven的仓库下载,所以创建项目的时候速度会非常慢(外国的服务器你懂得),因此我们可以直接访问http://repo1.maven.org/maven2/archetype-catalog.xml,把这个xml下载下来放到本地的maven目录中,然后在添加一个参数archetypeCatalog=internal就可以了。
配置 IDEA - 图7

建立项目

配置 IDEA - 图8

  1. Sources
  2. 一般用于标注类似 src 这种可编译目录。
  3. 有时候我们不单单项目的 src 目录要可编译,
  4. 还有其他一些特别的目录也许我们也要作为可编译的目录,
  5. 就需要对该目录进行此标注。
  6. 只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
  7. Tests
  8. 一般用于标注可编译的单元测试目录。
  9. 在规范的 maven 项目结构中,
  10. 顶级目录是 srcmaven src 我们是不会设置为 Sources 的,
  11. 而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources
  12. 而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为Tests
  13. 表示该目录是作为可编译的单元测试目录。
  14. 一般这个和后面几个我们都是在 maven 项目下进行配置的,
  15. 但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA maven 项目的支持是比较彻底的。
  16. Resources
  17. 一般用于标注资源文件目录。
  18. maven 项目下,资源目录是单独划分出来的,
  19. 其目录为:src - main -resources
  20. 这里的 resources 目录我们就会设置为 Resources
  21. 表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。
  22. Test Resources
  23. 一般用于标注单元测试的资源文件目录。
  24. maven 项目下,单元测试的资源目录是单独划分出来的,
  25. 其目录为:src - test -resources
  26. 这里的 resources 目录我们就会设置为 Test Resources
  27. 表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。
  28. Excluded
  29. 一般用于标注排除目录。
  30. 被排除的目录不会被 IntelliJ IDEA 创建索引,
  31. 相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
  32. 通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。
  33. (引用自http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/eclipse-java-web-project-introduce.html

配置servlet容器

配置 IDEA - 图9

或者使用代码的形式进行 tomcat 的启动
引入

  1. <dependency>
  2. <groupId>org.apache.tomcat.embed</groupId>
  3. <artifactId>tomcat-embed-core</artifactId>
  4. <version>${tomcat-embed-core-version}</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.tomcat.embed</groupId>
  8. <artifactId>tomcat-embed-jasper</artifactId>
  9. <version>${tomcat-embed-jasper-version}</version>
  10. </dependency>

代码

public static void main(String[] args) {
    Tomcat tomcat = new Tomcat();
    tomcat.setPort(9091);
    tomcat.getConnector();
    Context ctx = tomcat.addWebapp("", new File("src/main/webapp").getAbsolutePath());
    WebResourceRoot resources = new StandardRoot(ctx);
    resources.addPreResources(
        new DirResourceSet(resources, "/WEB-INF/classes", new File("target/classes").getAbsolutePath(), "/"));
    ctx.setResources(resources);

    try {
        tomcat.start();
    } catch (LifecycleException e) {
        e.printStackTrace();
    }
    tomcat.getServer().await();

}