【今日开讲】--- JFinal框架全解析(一)

本文详细介绍JFinal框架的配置与使用,包括web.xml配置、核心配置文件config、控制器、拦截器及模型等内容。JFinal简化了Java Web开发流程,提供了一种高效、简洁的开发方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是web.xml配置入口:
<filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>itoo.jrkj.common.config.JrkjConfig</param-value>
        </init-param>
    </filter>
 
    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

从这个配置文件中的路径查找JFinal的核心类:xxxconfig。来读取配置信息。




接下来是JFinal的核心配置文件:

1、config是核心配置文件,几乎所有的配置都在这里定义,容器启动时,通过web.xml指向FinalConfig.Java文件,来读取配置
例如:
public class JrkjConfig  extends JFinalConfig{
/**
     * 配置常量
     */
    public void configConstant(Constants me) {}
/**
     * 配置路由
     */
    public void configRoute(Routes me) {
          //例如:
           me.add("/courseAuditRecord", courseAuditRecordController.class,"/html/courseAuditRecord");//课程审计记录查询
    }
/**
     * 配置插件
     */
    public void configPlugin(Plugins me) {
      //读取配置文件,建立数据源
      // 采用DB+ActiveRecord模式 ,和下面说的Model的优点有关系
       //进行DB映射
   }
/**
     * 配置全局拦截器
     */
    public void configInterceptor(Interceptors me) {
 
    }
 
 /**
     * 配置处理器
     */
    public void configHandler(Handlers me) {}
}




2、controller是跳转,与springMVC里的controller作用是一样的。但是它必须得继承一个Controller类。利用第一步配置好的路由器进行页面跳转。
例如:
public class courseEvaluateController extends Controller {  
    public void list() {
        //返回页面
        render("list.html");
    }
}




接下来是拦截器。
拦截器共分三个级别,global,controller,action的。
1、global的需要在核心类config中的configInterceptor方法里添加。
例如:
public void configInterceptor(Interceptors me) { 
    me.add(new GlobalInterceptor()); 
} 


2、controller级别的需要建立一个和controller同级的类
例如:
public class LoginInterceptor implements Interceptor{
 
    public void intercept(Invocation ai) {
        //获取缓存
        HttpSession session = ai.getController().getSession();
 
        //获取缓存中的user对象
        TjUser user = (TjUser)session.getAttribute("user");
        if (user != null) {
             ai.invoke();
        }else {
            ai.getController().redirect("main/login");   //若缓存中不存在user则跳转至登录页
        }   
    }
}

那么用这个拦截器的时候如下:
   
 @Before(LoginInterceptor.class)
    public void list() {
 
        render("list.html");
    }



3、action级别的需要在XXXController里面的方法声明处添加
当然,还有很多种用法,例如 组合拦截器等等,具体请参照JFinal手册。




最后是model:
    
   model是DB操作文件。它就是JFinal的特殊之处,无需POJO(简单的java类)自定义字段映射。比如敲SSH的时候“vo”文件夹中的东西,都不需要写,也不用像配置Hibernate一样配置那么多的配置文件。
   它和程序的连接,是需要在上面路由类中的插件方法中配置。
         Model是ActiveRecord中最重要的组件之一,它充当MVC模式中的Model部分。以下是Model定义示例代码:
public class User extends Model<User> {
     public static final User dao= new User();
}


例如:
拿今日开讲中的一个添加到数据库为例:
@SuppressWarnings("serial")
public class TjTeacher extends BaseTjTeacher<TjTeacher> {
    public static final TjTeacher dao = new TjTeacher();
 
    /**
     * 添加讲师
     * @author YangJian
     * @param teacher
     */
    @SuppressWarnings("deprecation")
    public void addTeacherInfo(TjTeacher teacher){
        try {
            String id=CreateUUID22.getUUID22();
            new TjTeacher().set("id", id)
            .set("studentId", teacher.getStudentId())
            .set("provinceId", teacher.getProvinceId())
            .set("cityId", teacher.getCityId())
            .set("countyId", teacher.getCountyId())
            .set("address", teacher.getAddress())
            .set("lecturerIdentity", teacher.getLecturerIdentity())
            .set("isPublicPhoneNum", teacher.getIsPublicPhoneNum())
            .set("isWorkingExperience", 0)
            .set("graduateCollege", teacher.getGraduateCollege())
            .set("specialty", teacher.getSpecialty())
            .set("teacherCategory", teacher.getTeacherCategory())
            .set("teacherEducation", teacher.getTeacherEducation())
            .set("versionStartTime",new Date())
            .set("operator", teacher.getOperator())
            .set("isDelete", "0")
            .save();
 
        } catch (Exception e) {
 
            e.printStackTrace();
        }
    }
}


评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值