# 項目規劃
做任何事情都需要做好規劃,那么我們在開發博客系統之前,同樣需要做好項目的規劃,如何設置目錄結構,如何理解整個項目的流程圖,當我們理解了應用的執行過程,那么接下來的設計編碼就會變得相對容易了
# 創建一個maven項目
## 約定一下框架基礎信息
* 假設我們的web框架名稱是 `mario`
* 包名是 `com.junicorn.mario`
### 命令行創建
```sh
mvn archetype:create -DgroupId=com.junicorn -DartifactId=mario -DpackageName=com.junicorn.mario
```
### Eclipse創建


創建好的基本結構是這樣的

初始化一下 `pom.xml`
```xml
<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.junicorn</groupId>
<artifactId>mario</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mario</name>
<url>https://github.com/junicorn/mario</url>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<servlet.version>3.0.1</servlet.version>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
```
OK,項目創建好了,這個將是我們的框架。
# 框架流程
web程序是基于 `M(模型)V(視圖)C(控制器)` 設計的。MVC是一種將應用程序的邏輯層和表現層進行分離的結構方式。在實踐中,由于表現層從 Java 中分離了出來,所以它允許你的網頁中只包含很少的腳本。
* 模型 (Model) 代表數據結構。通常來說,模型類將包含取出、插入、更新數據庫資料等這些功能。
* 視圖 (View) 是展示給用戶的信息的結構及樣式。一個視圖通常是一個網頁,但是在Java中,一個視圖也可以是一個頁面片段,如頁頭、頁尾。它還可以是一個 RSS 頁面,或其它類型的“頁面”,Jsp已經很好的實現了View層中的部分功能。
* 控制器 (Controller) 是模型、視圖以及其他任何處理HTTP請求所必須的資源之間的中介,并生成網頁。
# 設計思路
mario 是基于servlet實現的mvc,用一個全局的Filter來做核心控制器,使用sql2o框架作為數據庫基礎訪問。
使用一個接口 `Bootstrap` 作為初始化啟動,實現它并遵循Filter參數約定即可。
建立路由、數據庫、視圖相關的包和類,下面是結構:
