Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

栏目: Java · 发布时间: 6年前

内容简介:在上一篇我们介绍了如何在IDEA中使用MAVEN,以及如何创建依赖等。那么在这一篇中,我们就试图搭建一个生产级的解决方案,大家可以使用这个解决方案作为骨架代码来搭建自己的开发环境。在这里,我们要完成:创建parent,在parent里完成所有的pom依赖和定义;

在上一篇我们介绍了如何在IDEA中使用MAVEN,以及如何创建依赖等。那么在这一篇中,我们就试图搭建一个生产级的解决方案,大家可以使用这个解决方案作为骨架代码来搭建自己的开发环境。

在这里,我们要完成:

创建parent,在parent里完成所有的pom依赖和定义;

创建common项目,common作为 工具 包而存在,被其它module所依赖;

创建dao,依赖common;

创建service,依赖dao和common;

创建web,依赖service和dao;

下面开始具体的创建过程。

1.创建Parent

所谓parent就是父工程,在这个父工程里我们需要管理所有的子Module,所以我们将其当成是一个解决方案(solution)而存在。

首先,新建project,选择maven。注意下图,不要选择archetype,

Java全栈 <a href='https://www.codercto.com'>程序员</a> 之07:IDEA中使用MAVEN构架生产级的Web项目

下一步,分别定义groupid,artifactid和version,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

默认next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Finish之后,来到下面的界面,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

2.配置Parent依赖

打开pom文件,让我们输入,

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zuikc</groupId>
    <artifactId>zuikc-sln</artifactId>
    <packaging>pom</packaging>
    <version>1.0.1</version>
    <modules>
        <module>zuikc-common</module>
        <module>zuikc-dao</module>
        <module>zuikc-service</module>
        <module>zuikc-web</module>
    </modules>

    <!-- 设置版本号 -->
    <properties>
        <java-version>1.10</java-version>
        <javax.servlet-version>3.1.0</javax.servlet-version>
        <javax.servlet-jsp-version>2.2.1</javax.servlet-jsp-version>
        <jstl-version>1.2</jstl-version>
        <taglibs-version>1.1.2</taglibs-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!-- 统一依赖管理 -->
    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${javax.servlet-version}</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>${javax.servlet-jsp-version}</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl-version}</version>
            </dependency>
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>${taglibs-version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java-version}</source>
                    <target>${java-version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

注意,这部分内容,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

实际是不需要我们输入的,随着我们子module的创建,idea会自动为我们生成。

下面这部分内容是定义了一些属性。由于idea默认的servlet模块是2.3的,所以需要让我们手动定义成3.1,否则我们就使用不了servlet的注解。其次,我索性将jstl也一并引入进来。

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

以下这部分内容才是真正的依赖管理,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

下面是定义了两个插件。第一个是 java 的编译版本。第二个是使用tomcat插件来运行我们即将要创建的web项目。

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

经过上面的设置,parent部分就大功告成了。

3.创建common

Common是工具包。

在parent上右键来创建子模块。如下:

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

注意,由于是普通jar包,所以也不要选archetype,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Finish。

创建完成后长下面这样。

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

4.创建dao与service

用跟创建common一样的方法来创建dao和service,最终结果如下:

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

5.创建web

接着让我们来创建web。

这次我们要选择“create from archetype”,如下图选择webapp,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Finish,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

这个时候,我们发现idea的控制台中有下图的generating,这个时候要等几分钟,才能将我们的web项目初始化,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

当generating完毕,web项目就会被初始化为一些默认的文件夹和文件在里面。当前的项目我们暂时不需要spring和日志,所以就可以将applicaitonContext.xml和log4j.xm删除。

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

6.Web的配置

接着修改web.xml,使其支持servlet3,如下,

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1" metadata-complete="false">

</web-app>

Maven默认的webapp模版没有创建java文件夹,让我们手动创建。手动创建完毕,发现不能在java文件夹上创建servlet,这个时候就要完成两件事情了。

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

第一件事情,要将java文件夹标注为:sources root,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

第二件事情要配置web的pom文件,加入对servlet3模版的支持,如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <parent>
        <artifactId>zuikc-sln</artifactId>
        <groupId>com.zuikc</groupId>
        <version>1.0.1</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>

    <name>zuikc-web</name>
    <artifactId>zuikc-web</artifactId>


    <dependencies>

        <dependency>
            <groupId>com.zuikc</groupId>
            <artifactId>zuikc-dao</artifactId>
            <version>1.0.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>7070</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>    

在这个pom文件中,一是完成了servlet3的支持,而是让项目引入引入tomcat的插件,并指定项目在7070端口上启动。

这个时候,还是发现不能在java上创建servlet,没事,只要使用maven的reimport刷新一下就行了,如下:

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

这个时候,就可以在java上创建servlet了,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

Next,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

最后ok,可以看到,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

让我们修改servlet,

package com.zuikc.servlets;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "Servlet1", urlPatterns = "/servlet1")
public class Servlet1 extends javax.servlet.http.HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通知浏览器浏览器用utf8来解析返回的数据
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        //使用UTF-8转码
        response.setCharacterEncoding("UTF-8");
        response.getWriter().append("码农星球最课程,IT培训新选择!");
    }
}

7.配置启动

我们要配置用maven启动项目。如下:

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

确定。

然后点击run,就可以运行项目了,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

注意,我们初次创建,会从maven仓储中下载不少文件,如下图所示

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

其次,run之前需要我们将项目本身install到maven的本地仓储中。还记得上一篇中我们是怎么install的吗?来来,只要在sln上install就可以了,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

看到这些,就表示成功了,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

现在,让我们run这个web项目,看到这个熟悉的界面,就说明tomcat启动成功,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

来,让我们localhost:7070/servlet1吧,

Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。


以上所述就是小编给大家介绍的《Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Sovereign Individual

The Sovereign Individual

James Dale Davidson、William Rees-Mogg / Free Press / 1999-08-26 / USD 16.00

Two renowned investment advisors and authors of the bestseller The Great Reckoning bring to light both currents of disaster and the potential for prosperity and renewal in the face of radical changes ......一起来看看 《The Sovereign Individual》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具