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

举报
码农星球陆敏技 发表于 2019/03/29 13:50:40 2019/03/29
【摘要】 在上一篇我们介绍了如何在IDEA中使用MAVEN,以及如何创建依赖等。那么在这一篇中,我们就试图搭建一个生产级的解决方案,大家可以使用这个解决方案作为骨架代码来搭建自己的开发环境。 在这里,我们要完成: 创建parent,在parent里完成所有的pom依赖和定义; 创建common项目,common作为工具包而存在,被其它m...

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

         在这里,我们要完成:

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

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

         创建dao,依赖common;

         创建service,依赖dao和common;

         创建web,依赖service和dao;

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

1.创建Parent

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

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

n_1902251344298564422.png

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

n_1902251344446792770.png

         默认next,

n_1902251344575039882.png

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

n_1902251345051185384.png

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>

         注意,这部分内容,

n_1902251345324340404.png

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

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

n_1902251345457089642.png

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

n_1902251345559574046.png

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

n_1902251346028736858.png

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

3.创建common

         Common是工具包。

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

n_1902251346148184804.png

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

n_1902251346254399820.png

         Next,

n_1902251346309528890.png

         Next,

n_1902251346371035158.png

         Finish。

         创建完成后长下面这样。

n_1902251346503589076.png

4.创建dao与service

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

n_1902251347028437620.png

5.创建web

         接着让我们来创建web。

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

n_1902251347153090844.png

         Next,

n_1902251347215837394.png

         Next,

n_1902251347276064316.png

         Next,

n_1902251347336672112.png

         Finish,

n_1902251347399955792.png

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

n_1902251347569093146.png

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

n_1902251348112653346.png

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,这个时候就要完成两件事情了。

n_1902251348304379458.png

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

n_1902251348387576012.png

         第二件事情要配置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刷新一下就行了,如下:

n_1902251349162014218.png

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

n_1902251349284225942.png

         Next,

n_1902251349362080494.png

         最后ok,可以看到,

n_1902251349433255102.png

         让我们修改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启动项目。如下:

n_1902251350124418626.png

         确定。

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

n_1902251350247421396.png

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

n_1902251350443620336.png

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

n_1902251350542022552.png

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

n_1902251351023803036.png

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

n_1902251351097800018.png

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

n_1902251351176240530.png

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。