zoukankan      html  css  js  c++  java
  • Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

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

    在这里,我们要完成:

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

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

             创建dao,依赖common;

             创建service,依赖dao和common;

             创建web,依赖service和dao;

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

    1.创建Parent

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

             首先,新建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吧,

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

  • 相关阅读:
    Kubernetes(K8S)集群部署搭建图文教程(最全)
    Kubernetes核心原理和搭建
    Navicat Premium 15注册出现“rsa public key not find”
    centos 7永久修改主机名
    docker 部署jenkins,及构建执行scp指令,一直处于构建状态以及钉钉通知配置
    jenkins 无法连接仓库:Command /usr/bin/git ls-remote -h
    mysql 8.0安装包下载地址
    centos7安装xtrabackup 物理备份工具与使用
    Linux vi/vim编辑器
    解决报错docker 启动报 WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 原文地址:https://www.cnblogs.com/luminji/p/10431907.html
Copyright © 2011-2022 走看看