入行Java Web端已经大概有两年左右了,作为新手小白,一直希望自己做一点什么小功能,考虑过培训时候使用的Spring+status2+mybatis,再配上tomcat部署,但这套框架部署起来很是麻烦,其功能很多作为自己学习使用的框架就有点大材小用了,后来在公司学习到了Restful请求,被其深深吸引,简单而又不缺失功能,一学习才知道有Jersey的框架,再配合jetty Servlet容器,使用和部署是如此的容易。所以我想用几篇文章来描述一下我搭配的学习框架,给刚入门的学弟学妹们一个学习的方向。
1、首先介绍一下这套框架所使用的一些工具及依赖吧:
构建工具:Maven
Maven是一个很方便的构建工具,只要配置好源仓地址,添加一个插件依赖非常容易,并且可以配置build的一些配置,方便构建生成jar、war等。教程我在这里就不讲述了。
测试工具:JMeter
JMeter是个很强大的测试工具,可以模拟前端任何请求(包括普通post/get以及文件上传下载等请求)。教程大家自己去搜索吧,很容易使用。
Servlet容器:Jetty
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。
开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
我截取了百科上的一句话来描述jetty,该容器的作用和tomcat一样,提供一个servlet的容器,而且是开源的,使用和测试起来都非常方便,不需要额外的程序支持。
Restful框架:Jersey
Restful有什么好处我就不详细说了,总之使用起来很容易。
JSON解析工具:Jackson
我的目标是Restful提供一个JSON格式的请求/返回体,所以json转换工具必不可少。
Junit单元测试:PowerMock
PowerMock很容易可以构造任何想测试的方法,比如私有方法,静态常量想修改值等等,其都可以做到是一个很强大的插件。
数据库连接工具:mybatis
我在培训的时候学习的框架是spring+status2+mybatis,当时很多培训机构培训的都是Hibernate。
但我觉得mybatis使用起来比Hibernate更容易,功能更丰富一些,而且我的公司也是使用mybatis作为数据库连接层,其优势自不必说。
数据库:Mysql
数据库这个其实看自己所好,现在两大主流数据库Mysql和Oracle,自己都可以练习着使用,个人觉得Mysql约束较少,部署起来也容易得很。
2、pom文件及依赖
我的maven源仓地址:
<mirror>
<id>maven-repository</id>
<mirrorOf>maven-repository</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mvnrepository.com</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
pom文件内容:
<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.black.apple.frame</groupId>
<artifactId>web-background-frame</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Jersey -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
<!-- Jetty -->
<dependency>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all-server</artifactId>
<version>8.1.16.v20140903</version>
</dependency>
<!-- 日志输出 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- Json解析 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<!-- guava工具 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<!-- 工具 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
</dependency>
</dependencies>
</project>