浏览器发出请求以后先经过JFinalFilter过滤器,随即调用其中的多个Handler,完成之后进入JFinal内置的ActionHandler拦截器中 在调用其中多个Intercepter(拦截器),接着来到Controller层,最后走到Render(渲染)。
文件结构:
1.前端发出请求,首先找到web.xml文件,先经过JFinal的过滤器,然后再经过自定义的配置文件
2.自定义配置文件类需要继承 JFinalConfig抽象类 并实现里面的方法。
package com.dcjt518.demo.config;
import com.dcjt518.demo.controller.HelloController;
import com.jfinal.config.*;
import com.jfinal.template.Engine;
/**
* @author ZY
* @create 2022-02-08 17:13
*/
public class DemoConfig extends JFinalConfig {
//配置常量
public void configConstant(Constants constants) {
//设置(开启)开发模式 即在开发模式下运行
constants.setDevMode(true);
//默认视图类型为JSP
// constants.setViewType(ViewType.JSP);
}
//Route是路由的意思 configRoute 即配置访问路由
public void configRoute(Routes routes) {
//形成映射 访问hello地址时就会跳转到HelloController类
routes.add("/hello", HelloController.class);
}
//configEngine 在模板引擎中添加自定义的模板文件
public void configEngine(Engine engine) {
}
//configEngine 配置插件的意思
public void configPlugin(Plugins plugins) {
}
//configInterceptor 配置拦截器的意思
public void configInterceptor(Interceptors interceptors) {
}
//configHandler 配置处理器的意思
public void configHandler(Handlers handlers) {
}
}
3.configRoute()方法,会将路径 “/hello” 与 HelloController 类形成映射,进行跳转
4.请求路径为http://localhost:8081/hello 时,默认调用的是HelloController类中第一个方法。
package com.dcjt518.demo.controller;
import com.jfinal.core.ActionKey;
import com.jfinal.core.Controller;
/**
* @author ZY
* @create 2022-02-08 17:20
*/
public class HelloController extends Controller {
public void index(){
//render是渲染的意思 renderText渲染成字符串的意思
renderText("我要干饭");
}
public void food(){
renderText("天天处于干饭状态");
}
}
也可通过在路径中加上方法名来指定调用的方法。例如:
注意:
注解:@ActionKey("xxx") 用在HelloController类中的方法上,会将该方法的映射路径修改成"xxx",并且只会影响改方法的路径,其他方法仍然可以通过原先的路径+方法名进行调用
请求测试: