JFinal学习02 —— JFinalConfig
视频来源https://www.bilibili.com/video/BV1Bt411H7J9/?spm_id_from=333.337.search-card.all.click
文章目录
1、JFinalConfig介绍
- JFinalConfig是
配置类
,一个基于JFinal的JavaWeb项目中必须创建一个继承自JFinalConfig类的子类,实现对整个项目的配置 - JFinalConfig 子类需要实现以下抽象方法:
public class DemoConfig extends JFinalConfig {
// 配置常量
public void configConstant(Constants me) {
}
// 配置路由
public void configRoute(Routes me) {
}
// 配置插件
public void configPlugin(Plugins me) {
}
// 配置拦截器
public void configInterceptor(Interceptors me) {
}
// 配置处理器
public void configHandler(Handlers me) {
}
}
2、configConstant() 配置常量
配置常量值
下面列举其中一些:
public void configConstant(Constants me) {
// 设置开发模式
// true:console控制台接收请求时会有相应输出(Controller、Method、请求参数)
// false:控制台没有输出
me.setDevMode(true);
// 设置下载和上传路径 注意绝对路径和相对路径
me.setBaseDownloadPath(null);
me.setBaseUploadPath(null);
// 设置JFinal编码格式
me.setEncoding("uft-8");
// 设置出现404错误时的客户端返回的视图
me.setError404View(null);
// 与上述功能相似,可以设置不同的返回码对应的返回视图
me.setErrorView(404, errorView);
// 设置FreeMarker模板刷新时延
me.setFreeMarkerTemplateUpdateDelay(0);
// 设置upload的文件大小,如100M
me.setMaxPostSize(1024*1024*100);
// 设置路由参数的分隔符,默认为'-'
me.setUrlParaSeparator("-");
// 设置视图类型 默认为Free_Marker
me.setViewType(ViewType.FREE_MARKER);
}
setError404View()方法 & setErrorView()方法
WebRoot下创建ERROR404.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
ERROR 404...<br>
Please contact us...
</body>
</html>
// 设置出现404错误时的客户端返回的视图
me.setError404View("/ERROR404.html");
- 正常情况:
- 路由不存在的情况:404报错
如下语句也能实现上述功能:
// 与上述功能相似,可以设置不同的返回码对应的返回视图
me.setErrorView(404, "/ERROR404.html");
3、configRoute() 配置访问路由
配置访问路由
将”/hello”映射到 HelloController 这个控制器 , 通 过 配 置 ,
http://localhost/hello 将 访 问 HelloController.index() 方法
http://localhost/hello/methodName 将访问到 HelloController.methodName()方法
public void configRoute(Routes me) {
/**
* controllerPath: path of controller
* controllerClass: Controller Class
* viewPath: View path for this Controller
*/
// 该方法一共三个参数,分别指出controller的路径、controller类、视图路径
// me.add(controllerPath, controllerClass, viewPath);
me.add("/hello", HelloController.class);
me.add("/", IndexController.class);
}
- 第一个参数
controllerKey
: 访问某个 Controller 所需要的一个字符串,该字符串唯一对应一个 Controller,controllerKey 仅能定位到 Controller。 - 第二个参数
controllerClass
: 该
controllerKey 所对应到的 Controller。 - 第三个参数
viewPath
: 该 Controller 返回的视图的相对路径。当 viewPath 未指定时默认值为controllerKey。
JFinal 访问一个确切的 Action需要使用 controllerKey与 method 来精确定位,当 method 省略时默认值为 index()
urlPara 是为了能在 url 中携带参数值,urlPara 可以在一次请求中同时携带多个值,JFinal 默认使用减号“-”来分隔多个值(可通过 constants. setUrlParaSeparator(String)设置分隔符),在 Controller 中可以通过
getPara(int index)
分别取出这些值。
public class HelloController extends Controller {
public void index() {
renderText("Index() function: \nHello JFinal World.");
}
public void myindex() {
renderText("myindex() function: \nHello");
}
}
- 未指定method时,默认调用Index()方法:
- 指定方法后,调用指定的方法:
4、其他
public class IndexController extends Controller {
public void index() {
Data data = new Data();
data.setName("Alice");
data.setAge(18);
renderJson(data);
}
public void myindex() {
render("/hello.html");
}
}
可以发送html页面
需要添加freemarker-2.3.20.jar包