关于JFinal的一些小知识

1. 前言

最近准备开始写项目之前,有一位大佬,问我们项目准备用什么框架,我说SSM(Spring、Spring MVC、Mybatis)啊,最近不是市面上很火的嘛,虽然不是很会,但是边做边学嘛,出去好找工作;然后他告诉我说:如果你们只是准备给别人开发一个项目的话,可以尝试用一下JFinal,这个框架开发起来特别快,该有的功能基本上也都有,有时间可以去看看,于是我就来记录一下JFinal的学习历程。

2. 开始

首先,去了JFinal的论坛看了下,里面提供了小Demo、开发手册、框架源码;反正我是都下载下来了,一边看着文档,一边对照着看一下相应的Demo,简单的入门还是比较容易的,我讲几个需要注意的点:
1. 文档的顺序可能安排地不是那么恰当,大家可以搜索关键字,或者从目录里找自己最需要的那一块;
2. 如果你是在idea下的话,推荐使用文档里说的Jetty进行开发调试,因为那样可能比较方便,我因为习惯而使用的tomcat,结果在调试上感觉各种不顺手;
3. 关于根据数据库表自动生成Model类写在了第5章的最后一节,想看的可以提前去看,我当时居然照着模板手敲了一个Model,扎心;

随笔

遇到的问题有很多,记录一下最有印象的几个:
1. 在2.3节configRute 里说到使用@ActionKey("")可以打破原有的规则进行路由,然后我就尝试了一下,发现注解里面的内容填的就是绝对路径,并不是相对之前的controllerKey;然后就是跳转的时候render("")函数,我传了一个jsp,结果它给我把jsp上面的<%@ %> 都给输出出来了,查了一些资料才发现,要针对你的页面类型调用相应的函数如:jsp就对应renderJsp("");
2. 在用ActionKey的时候我想弄成xxx.do的形式,然后试了一下,发现请求404,然后又查资料 ,说默认的路由处理是不处理带 "."的路径的,要弄的话就得自己手写一个Handler来进行处理,JFinal创始人还给出了一个Demo:

public class MyHandler extends Handle {
  public void handle(String target,
           HttpServletRequest request,
           HttpServletResponse response,
           boolean[] isHandled)
     if (target.endWith(".do"))
        target = target.substring(0, target.length() - 3)
     nextHandle.handle(target, request, response, isHandled)
  }
}
  1. 还有一个问题就是请求方式的问题,比如我想限定某些请求只能是POST请求该怎么处理呢?创始人给出的回答是在自定义的Controller类中对类使用@GET/@POST或者在方法上使用,这里的POST/GET是一个Interceptor,可以在全局、Controller、Action(Controller中的方法)中使用;
  2. 出错时页面跳转:https://www.oschina.net/question/582302_59502
  3. jfinal中handler,controller和interceptor的作用和区别? https://www.oschina.net/question/2667704_2157527

你可能感兴趣的:(java-jfina)