Jfinal学习日志第三章_Controller(详细图解)

第三章 Controller

Controller 是 JFinal 核心类之一,该类作为 MVC 模式中的控制器。基于 JFinal 的 Web 应
用的控制器需要继承该类。Controller 是定义 Action 方法的地点,是组织 Action 的一种方式,
一个 Controller 可以包含多个 Action。Controller 是线程安全的。

一、Action

在 Controller 之中定义的 public 方法称为 Action。Action 是请求的最小单位。Action 方法
必须在 Controller 中定义,且必须是 public 可见性。

action是控制层类的一个方法,且url访问路径和方法名相同。比如:
http://localhost/hello/test
访问的是hello路径对应的类HelloController.class类内的test()方法。
访问路径 /hello ,对应HelloController.class类
路由
访问路径/hello/test,对应HelloController.test()方法
方法
实际视图路径由Render(“index.html”)决定,加上之前路由的配置即为webapp文件夹下的/view/hello/index.html
访问内容
这里要强调一下视图路径,即Render返回的视图路径finalView = baseViewPath + viewPath + view,baseViewPath由Routes.setBaseViewPath(String baseViewPath)设置,viewPath由Routes.add(String controllerKey,Controller controller,String viewPath)的最后一个参数设置,如果不设置的话默认和controllerkey相同,view的路径在Render(String path)内设置。这样就完成了一个基本的访问,也是Jfinal精髓之一。

二、getPara系列方法

根据JFinal传参的特殊分隔符“-“,我们有两种类型获取请求中的参数的方法。

  • getPara(String paraName),该方法使用的就是HttpServletRequest.getParameter(String name)去获取参数,主要针对传统的取值。
  • getPara(Integer number),该方法根据url路径上“-”的分割来获取参数。比如http://localhost/controllerKey/method/v0-v1-v2,getPara(0) 获取到“v0”,getPara(1) 获取到“v1”
  • getPara(),该方法可以获取到“v0-v1-v2”的值,这种方式主要针对JFinal的取值。

三、getBean 与 与 getModel

getBean 和 getModel 都是从页面表单域接收数据。
区别为:getBean使用相同属性名称的setter方法进行数据注入;getModel可直接通过字段名进行数据注入;如果在Model中加入字段的getter和setter方法,也可以用getBean方法获取对应的页面表单域数据。Jfinal的说明手册中的举例十分详细,如下图Model并未定义数据库表字段
model

四、setAttr和session

setAttr(String, Object)转调了 HttpServletRequest.setAttribute(String, Object),该方法可以将
各种数据传递给 View 并在 View 中显示出来。
通过 setSessionAttr(key, value)可以向 session 中存放数据,getSessionAttr(key)可以从 session
中读取数据。还可以通过 getSession()得到 session 对象从而使用全面的 session API。

这两个方法是比较常用的渲染页面时,服务端传输数据到页面上的方法。

五、getFile和RenderFile,文件上传与下载

Controller 提供了 getFile 系列方法支持文件上传。
Controller 提供了 renderFile 系列方法支持文件下载。
注意:客户端请求为 multipart request(form 表单使用了 enctype=”multipart/form-data”),那么必须先调用 getFile 系列方法才能使 getPara 系列方法正常工作,因为 multipart request 需要通过 getFile 系列方法解析请求体中的数据,包括参数。同样的道理在 Interceptor、Validator 中也需要先调用 getFile。
文件的上传和下载的基础路径可以在Constants内设置。

六、Render渲染页面系列方法

render 系列方法将渲染不同类型的视图并返回给客户端。这个属于与前端输出比较重要的地方。

JFinal 目前支持的视图类型有:
JFinal Template、FreeMarker、JSP、Velocity、JSON、File、Text、Html 等等;
可以通过继承 Render 抽象类来无限扩展视图类型

视图类型可以通过Constants.setViewType(ViewType)来设置,默认为 JFINAL_TEMPLATE。JFinal手册的使用说明也比较详细啦。
Render
render

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nothings0o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值