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.</modelVersion> <groupId>com.zuikc</groupId>
<artifactId>zuikc-sln</artifactId>
<packaging>pom</packaging>
<version>1.0.</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.</javax.servlet-version>
<javax.servlet-jsp-version>2.2.</javax.servlet-jsp-version>
<jstl-version>1.2</jstl-version>
<taglibs-version>1.1.</taglibs-version>
<project.build.sourceEncoding>UTF-</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-</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.</version>
</parent> <modelVersion>4.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.</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></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吧,
感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。
Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目的更多相关文章
- Java全栈程序员之03:Ubuntu下安装idea
JetBrains的产品我曾经用过很长一段时间,它们是resharper和dotcover.VS号称宇宙最强IDE,直到它遇到了resharper,我们才知道,原来vs可以更好.DotCover是一个 ...
- Java全栈程序员之08:MAVEN+JAVA配置
从Spring3.0开始,Spring支持以Java配置的方式来代替XML配置.这一点说起来其实有点可笑,XML配置的方式最初被创建出来就是为了让配置与程序员无关.可是最终我们发现,绝大多数的那些配置 ...
- Java全栈程序员之01:做个Linux下的程序猿
Windows10正在成为史上口碑最差的Windows系统 (图侵删) 我曾经花了数次1小时去寻找解决方案去关闭自动更新,包括停掉服务.修改注册表等等.但是都没有成功. 微软自身是知道这个问题的,但就 ...
- Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试
在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...
- Java全栈程序员之06:IDEA中MAVEN项目依赖及运行
MAVEN已经成为事实上的企业项目开发中的项目类型.无论是IDEA还是Eclipse,都已经默认支持创建MAVEN项目.严格意义上来说,MAVEN不是一种新的JavaEE项目类型.它凌驾于所以的项目类 ...
- Java全栈程序员之05:Ubuntu下安装TOMCAT、集成到IDEA
使用idea绝不是开发一个Hello World这么简单,现在我们要使用idea进行企业级开发(也就是JavaEE)的准备了,那么首先,我们就得有一个web应用服务器.选什么呢?当然首选是大名鼎鼎的T ...
- Java全栈程序员之04:Ubuntu下安装MySQL、注册服务及Navcat
在安装MySQL之前,我们先来介绍一下Ubuntu下软件的安装方式.首先回顾下,我们安装JDK,使用的是后缀名为tar.gz的安装包.安装idea,使用的是tar.gz:那有没有别的安装方式呢? 1. ...
- Java全栈程序员之09:IDEA+GitHub
GitHub是源码托管站点,其依赖于Git这个源码管理工具来进行代码的托管.所以将我们的代码托管到GitHub之前,我们需要安装Git. 1.Git安装 可以通过输入git命令来确定是否在本机已经安装 ...
- [转]乐死我了,怎么样成为一个全栈程序员(Full Stack Developer),附我想专注的语言
受苏格拉底大神的启迪,我也来谈谈全栈.禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才.不过,因为我热爱这个行业,也有一定天 ...
随机推荐
- 集群LVS
集群分为LB负载均衡集群,HA高可用集群,LB高应用集群. 前两种比较常见 LB是更加注重性能处理速度,而HA注重是服务器的在线时间. HA集群一般设有主重,当主服务器当掉时候,重服务器进行工作,此时 ...
- 008 在大数据中,关于native包的编译步骤
一.问题的由来: 二.解决问题的方法(所有的操作在root下完成): 1.前期需要的环境,下面的已经在伪分布式中配置好,不再重复 配置好jdk 配置好hadoop 2.上传还需要包 apache-ma ...
- string通过逗号分割不用split方法
package com.simon; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub ...
- Windows10 下Apache服务器搭建
Windows10 下Apache服务器搭建 转 https://blog.csdn.net/sunqian666888/article/details/78561399 目录 一.软件下载 二. ...
- 浅谈solr
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...
- 大数据技术 - 通俗理解MapReduce之WordCount(三)
上一章我们编写了简单的 MapReduce 程序,掌握这些就能编写大多数数据处理的代码.但是 MapReduce 框架提供给用户的能力并不止如此,本章我们仍然以上一章 word count 为例,继续 ...
- RedisCacheManager设置Value序列化器技巧
CacheManager基本配置 请参考博文:springboot2.0 redis EnableCaching的配置和使用 RedisCacheManager构造函数 /** * Construct ...
- swap
添加交换分区 SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设计目的是为了解决真实物理 ...
- 记录Ubuntu & Windows下安装PyV8
https://blog.csdn.net/hanshileiai/article/details/51628173
- linux学习笔记 其他常用命令
cd + 回车 = cd ~ 进入当前用户主目录 查看指定进程信息 *ps -ef |grep 进程名 *ps -查看属于自己的进程 *ps -aux 查看所有的用户的执行进程 换成 ps - ...