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吧,
感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。
上一篇: 看来马云什么行业都有涉猎啊
下一篇: 前几天去我表姐家