Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式

文章目录

  • Intellij IDEA 创建使用Maven管理的Web项目的三种方式
    • 前言
    • 环境准备
    • 概述
    • 第一种方法 Web+Maven
    • 第二种方法 Maven+Web
    • 第三种方法 Maven
    • 后记

Intellij IDEA 创建使用Maven管理的Web项目的三种方式

前言

曾经混过的,都需要偿还。

环境准备

IDE:Intellij IDEA 2018.2 64位专业版

Maven:3.5.4

Tomcat:9

JDK:10

概述

现在项目大多使用Maven管理,就我现在的理解,Maven是一个构建工具,可以管理项目模块之间的依赖关系,有了它,我们不需要到处寻找各种jar包,当所依赖的jar包需要更新时,不需要一个个去lib覆盖;Maven所涉及的知识和理念以及其强大之处必然不限于这些,有兴趣的伙伴可以自行深入了解~

这里我们将介绍使用Intellij IDEA创建Maven管理的Web项目(简单返回百度首页)的三种方式:

  1. Web+Maven
  2. Maven+Web
  3. Maven

第一种方法 Web+Maven

在这种方式里,我们将首先创建一个Web项目,然后向其添加Maven支持。具体步骤如下:

  1. 使用IDEA创建Web项目
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第1张图片

  2. 修改项目结构

    原来结构如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第2张图片

    这里,首先将src目录取消源码根目录标记:

    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第3张图片

    然后在src下创建main文件夹,并在其内创建java和resources文件夹,之后通过Mark Directory as 菜单项分别将其标记为Sources Root和Resources Root。于main同级,创建test目录,然后在其中创建java文件夹,将其标志为Test Sources Root。这个结构是Maven所要求的~

  3. 添加Maven支持

    与src同级,创建pom.xml文件(该文件内容其实是来自第二种方法里IDEA创建的pom.xml文件),然后点击右侧Maven Projects按钮,点击+添加Maven 支持:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第4张图片

    选择我们创建的pom文件,最后结果如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第5张图片
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第6张图片

  4. 配置Tomcat

    这里,为了让项目run起来,需要配置一下Tomcat,值得注意的是,因为我们首先创建的是一个Web Application,所以这里IDEA为我们做了一些事情(虽然,并没有什么用,至于为什么,请关注文末后记部分)
    在这里插入图片描述
    我们点击Tomcat旁边的倒三角,点击Edit Configurations,可以看到:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第7张图片

    嗯,看一看就好,接下来我们进入Project Structure,结果如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第8张图片
    可以发现,IDEA自己创建了一个Artifact,需要注意的是它的目录结构。这就使得run的时候,会发现run不起来。

  5. 修改Artifact

    我们这里把它删掉,点击-就行。然后我们自己创建一个。
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第9张图片

    最后结果如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第10张图片
    这里需要注意的是它的结构。我知道需要这么做,是因为不这么做,就会发现run的时候会出错,而出错原因正是前者没有lib,所以找不到一些类。可以不修改,然后自己试一试(不保证一定会出现问题哦,bug这回事,谁说的准呢?)

  6. 编写pom.xml和Controller

    为了测试Maven的确管理了我们所以来的第三方包,我们编写一个Servlet,用以返回百度的首页,这里我们使用OkHttp3+Servlet 来实现,需要注意的是,IDEA不会自己引入Servlet相关包,所以我们需要添加对servlet的依赖。
    pom.xml如下:

    
     
     <modelVersion>4.0.0modelVersion>
     
     <groupId>xiaomogroupId>
     <artifactId>aslxartifactId>
     <version>1.0-SNAPSHOTversion>
     <packaging>warpackaging>
    
     <name>aslx Maven Webappname>
     <url>http://www.example.comurl>
    
     <properties>
         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
         <maven.compiler.source>1.7maven.compiler.source>
         <maven.compiler.target>1.7maven.compiler.target>
     properties>
    
     <dependencies>
         <dependency>
           <groupId>junitgroupId>
           <artifactId>junitartifactId>
           <version>4.11version>
           <scope>testscope>
         dependency>
    
         <dependency>
             <groupId>com.squareup.okhttp3groupId>
             <artifactId>okhttpartifactId>
             <version>3.11.0version>
         dependency>
       
         <dependency>
             <groupId>javax.servletgroupId>
             <artifactId>javax.servlet-apiartifactId>
            <version>4.0.1version>
             <scope>providedscope>
         dependency>
     dependencies>
    
     <build>
       <finalName>aslxfinalName>
       <pluginManagement> 
         <plugins>
           <plugin>
             <artifactId>maven-clean-pluginartifactId>
             <version>3.0.0version>
          plugin>
    
          <plugin>
             <artifactId>maven-resources-pluginartifactId>
             <version>3.0.2version>
           plugin>
           
          <plugin>
             <artifactId>maven-compiler-pluginartifactId>
             <version>3.7.0version>
           plugin>
           
           <plugin>
           <artifactId>maven-surefire-pluginartifactId>
           <version>2.20.1version>
         plugin>
         
         <plugin>
           <artifactId>maven-war-pluginartifactId>
           <version>3.2.0version>
         plugin>
         
           <plugin>
             <artifactId>maven-install-pluginartifactId>
             <version>2.5.2version>
           plugin>
         
           <plugin>
             <artifactId>maven-deploy-pluginartifactId>
             <version>2.8.2version>
           plugin>
         plugins>
        pluginManagement>
      build>
    project>
    
     package controllers;
     import okhttp3.Call;
     import okhttp3.OkHttpClient;
     import okhttp3.Request;
     import okhttp3.Response;
     import javax.servlet.ServletException;
     import javax.servlet.http.HttpServlet;
     import javax.servlet.http.HttpServletRequest;
     import javax.servlet.http.HttpServletResponse;
     import java.io.IOException;
     import java.io.PrintWriter;
     public class BaiDuController extends HttpServlet {
     	@Override
     	protected void doGet(HttpServletRequest req, HttpServletResponse resp){
     		try {
     			OkHttpClient client = new OkHttpClient.Builder().build();
     			Request baiduHomeRequest = new Request.Builder()
     				.get()
     				.url("https://www.baidu.com/")
     				.build();
     			Call homeCall = client.newCall(baiduHomeRequest);
     			Response homeResponse = homeCall.execute();
     			String content = homeResponse.body().string();
     			PrintWriter writer = resp.getWriter();
     			writer.write(content);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws   ServletException, IOException {
        	this.doGet(req, resp);
        }
        
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        	this.doGet(req, resp);
        }
     }
    
  7. 最后结果如下:

    我们发现中文乱码,其实也很正常,我们没做关于字符集编码的设置,所以乱码了,关于乱码,可以看看这篇文章。
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第11张图片
    至此,第一种方法工作正常~

第二种方法 Maven+Web

在这种方法里,我们将先创建一个Maven项目,然后添加Web模块;

  1. 使用IDEA创建Maven项目;
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第12张图片
    注意,不要勾选create from archetype选择框哦;

    然后,默认结构如下:

    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第13张图片

    这里的结构,也就是我们在第一种方法里所模仿的结构;

  2. 添加Web模块;

    进入Project Structure,选择Modules,然后点击+号,选择Web:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第14张图片

  3. 创建Artifact

    完成第二步时,你会看到如下图所示的界面:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第15张图片
    按箭头操作即可;

  4. 选择默认,点击ok
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第16张图片
    这里,需要注意的是,如果你展开WEB-INF,会发现没有lib,而且是Web exploded哦!当然,这是我后来才意识到的,所以截图中没有显示;然后点击Apply。(后面我们再修改~);

  5. 添加Web结果如下
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第17张图片

  6. 配置Tomcat
    在这里插入图片描述
    进入,然后得到界面如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第18张图片

    按箭头操作即可;然后会是这样的:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第19张图片

    这是因为我们没有选择部署的Artifact(我们刚刚添加Web结构的时候,按照IDEA提示创建了一个Artifact),这里点击fix即可;然后,点击ok退出,把web.xml、pom.xml、Controller拷贝一下,这很重要哦,然后run,接着就会出错原因在第四步提到了

  7. 修改Artifact

    进入Project Structure,然后选择Artifact,将创建的Artifact删除,然后点击加号,新建一个。
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第20张图片
    结果如下:
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第21张图片
    这次,我们创建的是一个war exploded:它包含lib!而原来的Web exploded,好像再也找不到了。

  8. 修改Tomcat 配置
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第22张图片
    点击-,然后点击+,就会出现我们修改后的war。

  9. 这下可以run了。
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第23张图片
    嗯,还是熟悉的乱码

    值得注意的是,如果在修改Artifact的时候,controller没有到位的话,创建的WEB-INF下还是没有lib。这样就可以理解为什么IDEA创建了一个不能run的Artifact:创建Artifact的时候,java下是没有代码的,大胆猜测,如果先把Controller等文件写到相应位置,说不定就ok了。但我没去尝试哦;

第三种方法 Maven

在这种方法里,我们你将通过Maven+Archetype的方法创建Maven Web项目

  1. 使用Intellij IDEA创建项目
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第24张图片
    值得注意的地方都标出来了;哈哈哈,其实最重要的是把create from archetype 选择框选上~

  2. 默认结构
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第25张图片

  3. 模拟Maven项目结构,创建java、resources等文件夹,操作同第一种方法;
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第26张图片

  4. 填充Controller、web.xml、pom.xml等信息

  5. 配置Tomcat

    操作同第二种方法中的配置Tomcat,在deployment选项卡下,点击fix,此时会有两个选项,war和war exploded,我们选择war就好,值得注意的是,这两个Artifact是IDEA创建的Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第27张图片

  6. 然后run
    Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式_第28张图片

后记

从以上各种方法来看,第三种方法最统一,因为IDEA创建的Artifact是ok的,而第一二种方法里都涉及到对Artifact的修改,其核心问题是对WEB-INF下lib文件的处理,我们知道Web项目里依赖的第三方库都会在lib中去寻找,没有lib,自然会报找不到类的错误。

你可能感兴趣的:(Intellij idea创建Maven管理的Web项目及Tomcat部署运行的三种方式)