# controller 和 controller集成的功能
jbolt的controller是jfinal enjoy模板的使用后端实现
在jfinal controller的基础上做了三层抽象
## 三层controller
三层抽象分别对应了对http协议的各种实现
### controller
- http解包处理,如果我们自己想实现一个http网络框架,这里是最基础的。
- 对 session进行了封装
### commoncontroller
- 对各种返回类型做了封装,因为java是静态语言,有必要针对不同的类型提供封装方法
### basecontroller
- 对权限和异常返回做了封装
- 对服务端的reponse做了对应封装
### session
```
@UnCheckIfSystemAdmin
@CheckPermission(PermissionKey.KJJ)
public class KjjIndexController extends BaseController {
public void index(){
render("index.html");
getSessionAttr("key");
setSessionAttr("key","value");
}
public void data(){
renderJson("{ok:1}");
}
}
```
### 不涉及上传文件的参数处理
- 客户端可使用get方式
- 客户端使用post和url-encode编码方式
- 控制器函数里的形参和客户端的实参命名一致
- 使用fastjson相关方法把json转为对象
### 涉及上传文件的参数处理
- 在控制函数内处理
- 使用getFile 方法 ,使用getPara