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

         在上一篇咱们介绍了如何在IDEA中使用MAVEN,以及如何建立依赖等。那么在这一篇中,咱们就试图搭建一个生产级的解决方案,你们可使用这个解决方案做为骨架代码来搭建本身的开发环境。html

在这里,咱们要完成:java

         建立parent,在parent里完成全部的pom依赖和定义;web

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

         建立dao,依赖common;apache

         建立service,依赖dao和common;api

         建立web,依赖service和dao;浏览器

         下面开始具体的建立过程。tomcat

1.建立Parentapp

         所谓parent就是父工程,在这个父工程里咱们须要管理全部的子Module,因此咱们将其当成是一个解决方案(solution)而存在。webapp

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

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

         默认next,

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

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>

         注意,这部份内容,

         实际是不须要咱们输入的,随着咱们子module的建立,idea会自动为咱们生成。

         下面这部份内容是定义了一些属性。因为idea默认的servlet模块是2.3的,因此须要让咱们手动定义成3.1,不然咱们就使用不了servlet的注解。其次,我索性将jstl也一并引入进来。

         如下这部份内容才是真正的依赖管理,

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

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

3.建立common

         Common是工具包。

         在parent上右键来建立子模块。以下:

         注意,因为是普通jar包,因此也不要选archetype,

         Next,

         Next,

         Finish。

         建立完成后长下面这样。

4.建立dao与service

         用跟建立common同样的方法来建立dao和service,最终结果以下:

5.建立web

         接着让咱们来建立web。

         此次咱们要选择“create from archetype”,以下图选择webapp,

         Next,

         Next,

         Next,

         Finish,

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

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

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文件夹标注为:sources root,

         第二件事情要配置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上建立servlet了,

         Next,

         最后ok,能够看到,

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

         肯定。

         而后点击run,就能够运行项目了,

         注意,咱们初次建立,会从maven仓储中下载很多文件,以下图所示

         其次,run以前须要咱们将项目自己install到maven的本地仓储中。还记得上一篇中咱们是怎么install的吗?来来,只要在sln上install就能够了,

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

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

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

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

相关文章
相关标签/搜索