当前位置: 首页 > 工具软件 > JFinal > 使用案例 >

jFinal 的简单介绍

廉志强
2023-12-01

jfinal是基于Java语言的web+orm框架,具有许多优点。手册下载地址:http://www.jfinal.com/man

web.xml:

  1. <!-- jfinal-filter -->  
  2. <filter>  
  3.     <filter-name>jfinal_filter</filter-name>  
  4.     <filter-class>com.jfinal.core.JFinalFilter</filter-class>  
  5.     <init-param>  
  6.         <param-name>configClass</param-name>  
  7.         <param-value>com.xxx.Config</param-value><!--继承自JFinalConfig的自定义的Config类-->  
  8.     </init-param>  
  9. </filter>  
  10. <filter-mapping>  
  11.     <filter-name>jfinal_filter</filter-name>  
  12.     <url-pattern>/*</url-pattern>  
  13. </filter-mapping>  
Config类:

其中,ActiveReceord 中定义了 addMapping(String tableName, Class<? extends Model> modelClass>)方法,该方法建立了数据库表名到 Model 的映射关系

  1. public class Config extends JFinalConfig {  
  2.   
  3.     //此方法用来配置JFinal的常量值  
  4.     @Override  
  5.     public void configConstant(Constants constants) {  
  6.         // 开发者模式,正式部署时关闭  
  7.         constants.setDevMode(true);  
  8.         constants.setBaseViewPath("/WEB-INF/freemarker");  
  9.         // 设置常用错误页面  
  10.         constants.setError500View("/WEB-INF/freemarker/errorPage/500.ftl");  
  11.         Configuration freeMarkerConfig = FreeMarkerRender.getConfiguration();  
  12.         try {  
  13.             // 将contentPath设置为freemarker共享变量 ctx:项目根目录  
  14.             freeMarkerConfig.setSharedVariable("ctx", JFinal.me()  
  15.                     .getServletContext().getContextPath());  
  16.         } catch (TemplateModelException e) {  
  17.             throw new IllegalStateException(e);  
  18.         }  
  19.     }  
  20.     //用来配置JFinal的Handler  
  21.     @Override  
  22.     public void configHandler(Handlers handlers) {  
  23.     }  
  24.   
  25.     //用来配置JFinal的Interceptor  
  26.     @Override  
  27.     public void configInterceptor(Interceptors interceptors) {  
  28.         interceptors.add(new SessionInViewInterceptor(true));  
  29.         interceptors.add(new LoginInterceptor());//自定义登陆拦截器  
  30.     }  
  31.   
  32.     //用来配置JFinal的Plugin,C3P0数据库连接池插件,ActiveRecordPlugin数据库访问插件  
  33.     @Override  
  34.     public void configPlugin(Plugins plugins) {  
  35.         // 加载数据库和连接池相关的配置文件  
  36.         // 使用c3p0插件  
  37.         Properties properties = loadPropertyFile("config" + File.separator + "c3p0.properties");  
  38.         C3p0Plugin c3p0Plugin = new C3p0Plugin(properties);  
  39.         plugins.add(c3p0Plugin);  
  40.         ActiveRecordPlugin aPlugin = new ActiveRecordPlugin(c3p0Plugin);  
  41.         aPlugin.setDialect(new MysqlDialect());  
  42.         plugins.add(aPlugin);  
  43.   
  44.         aPlugin.addMapping("user", User.class);  
  45.         aPlugin.addMapping("project", Project.class);  
  46.     }  
  47.   
  48.     //配置JFinal访问路由  
  49.     @Override  
  50.     public void configRoute(Routes routes) {  
  51.         routes.add("/login", LoginController.class, "/login");  
  52.         routes.add("/user", UserController.class, "/user");  
  53.         routes.add("/project", ProjectController.class, "/project");  
  54.     }  
  55.   
  56. }  
接下来,LoginController部分代码:

render渲染不同的类型的视图返回到客户端,此处视图类型为Freemarker。

可以在Config类的configConstant类中设置视图类型 :constants.setViewType(ViewType.FREE_MARKER);

  1. public class LoginController extends Controller {  
  2.     @ClearInterceptor(ClearLayer.ALL)  
  3.     @ActionKey("/")  //使用了@ActionKey("/"),actionKey由原来的‘/login/index’变为了‘/login’  
  4.     public void index() {  
  5.         render("index.ftl");  
  6.     }  
最后,发布项目,访问:http://localhost/项目名称/login  将默认访问控制器的index方法,返回index.ftl页面。

访问http://localhost/项目名称/login/login  将访问控制器中的login方法。


后期再加。。。


 类似资料: