# 项目规划
做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了
# 创建一个maven项目
## 约定一下框架基础信息
* 假设我们的web框架名称是 `mario`
* 包名是 `com.junicorn.mario`
### 命令行创建
```sh
mvn archetype:create -DgroupId=com.junicorn -DartifactId=mario -DpackageName=com.junicorn.mario
```
### Eclipse创建


创建好的基本结构是这样的

初始化一下 `pom.xml`
```xml
4.0.0
com.junicorn
mario
0.0.1-SNAPSHOT
jar
mario
https://github.com/junicorn/mario
1.6
1.6
UTF-8
3.0.1
javax.servlet
javax.servlet-api
3.1.0
provided
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.6
1.6
UTF-8
```
OK,项目创建好了,这个将是我们的框架。
# 框架流程
web程序是基于 `M(模型)V(视图)C(控制器)` 设计的。MVC是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从 Java 中分离了出来,所以它允许你的网页中只包含很少的脚本。
* 模型 (Model) 代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。
* 视图 (View) 是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在Java中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS 页面,或其它类型的“页面”,Jsp已经很好的实现了View层中的部分功能。
* 控制器 (Controller) 是模型、视图以及其他任何处理HTTP请求所必须的资源之间的中介,并生成网页。
# 设计思路
mario 是基于servlet实现的mvc,用一个全局的Filter来做核心控制器,使用sql2o框架作为数据库基础访问。
使用一个接口 `Bootstrap` 作为初始化启动,实现它并遵循Filter参数约定即可。
建立路由、数据库、视图相关的包和类,下面是结构:

## links
* [目录]()
* 下一节: [路由设计](<2.route.md>)