OK,老早想写一套自己的web框架,然后也一直在看开源的一些框架源码。今天开始正式开始写自己的javaWeb框架,暂时就定义linkinFrame好了。
为什么要写一套自己的框架?
其实这是一个比较矛盾的问题,一般的我们很少有时间说自己去写一套,自己写的一套也没有经过严格的单元测试,甚至是在设计上功能上和开源的一些框架也差距太大,实际中根本不可能有用武之地。说白了,就是不会有人使用,除非是自己折腾玩玩。所以我这里写这个框架,只是为了自己更多的尝试开源,然后更多的理解那些成熟的思想和技术,到不了说觉得开源不够用,或者说开源太重太臃肿而自己舍弃来用自己的。
当然我会尽量的写的完美一点,这里说明下这个框架的相关的使用到的工具和技术。
1,项目用maven管理,关于maven的整理我还没有整理完全,后续也会补齐来。具体的可以去看我的maven系列。
2,版本工具使用git管理,以后要养成良好的习惯,严格的使用好版本工具,我这里暂时用coding来做code仓库。
3,实现J2e常使用到的技术,IOC,AOP,ORM,安全,事务。
4,框架的优化和扩展,在最后要使得该框架具有良好的扩展性。
在这期间我会参照一些开源的成熟的框架的源码来补充和优化自己的框架源码,希望早日完成。
OK,那我们现在开始来一步吧,使用maven来搭好框架结构。
1,创建项目
我使用的eclipse作为项目的IDE,一年前就有朋友强烈推荐JADE,但是自己对eclipse感情深厚,所以一直没有换。
直接使用eclipse的maven插件来生成一个简单的Javaweb工程,然后修改相关目录结构使项目成为标准maven项目。
项目结构图如下:
2,设置POM文件
生成项目之后,要设置maven相关依赖。这里我添加一些junit的依赖和j2e servlet的依赖,然后修改Java编译版本,修改maven的test插件和jar插件,这样子maven打包出来的就是2个war,一个是源码,一个是测试。
下面是目前简单的项目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>org.linkinpark.commons</groupId>
<artifactId>linkin-frame-javaweb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>linkin-frame-javaweb</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<!-- <verbose>true</verbose> <fork>true</fork> <executable>path-to-javac </executable> <compilerVersion>1.3</compilerVersion> -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>plain</id>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<runOrder>random</runOrder>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
<scope>test</scope>
</dependency>
<!-- j2e servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
3,测试项目结构
OK,现在我们来测试一下,我自己随便写一个源码类,写一个测试类,然后运行maven clean package,生成了2个war包,反编译一下,没有问题。具体看下图: