jfinal是基于Java语言的web+orm框架,具有许多优点。手册下载地址:http://www.jfinal.com/man
web.xml:
-
- <filter>
- <filter-name>jfinal_filter</filter-name>
- <filter-class>com.jfinal.core.JFinalFilter</filter-class>
- <init-param>
- <param-name>configClass</param-name>
- <param-value>com.xxx.Config</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>jfinal_filter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
Config类:
其中,ActiveReceord 中定义了 addMapping(String tableName, Class<? extends Model> modelClass>)方法,该方法建立了数据库表名到 Model 的映射关系
- public class Config extends JFinalConfig {
-
- //此方法用来配置JFinal的常量值
- @Override
- public void configConstant(Constants constants) {
- // 开发者模式,正式部署时关闭
- constants.setDevMode(true);
- constants.setBaseViewPath("/WEB-INF/freemarker");
- // 设置常用错误页面
- constants.setError500View("/WEB-INF/freemarker/errorPage/500.ftl");
- Configuration freeMarkerConfig = FreeMarkerRender.getConfiguration();
- try {
- // 将contentPath设置为freemarker共享变量 ctx:项目根目录
- freeMarkerConfig.setSharedVariable("ctx", JFinal.me()
- .getServletContext().getContextPath());
- } catch (TemplateModelException e) {
- throw new IllegalStateException(e);
- }
- }
- //用来配置JFinal的Handler
- @Override
- public void configHandler(Handlers handlers) {
- }
-
- //用来配置JFinal的Interceptor
- @Override
- public void configInterceptor(Interceptors interceptors) {
- interceptors.add(new SessionInViewInterceptor(true));
- interceptors.add(new LoginInterceptor());//自定义登陆拦截器
- }
-
- //用来配置JFinal的Plugin,C3P0数据库连接池插件,ActiveRecordPlugin数据库访问插件
- @Override
- public void configPlugin(Plugins plugins) {
- // 加载数据库和连接池相关的配置文件
- // 使用c3p0插件
- Properties properties = loadPropertyFile("config" + File.separator + "c3p0.properties");
- C3p0Plugin c3p0Plugin = new C3p0Plugin(properties);
- plugins.add(c3p0Plugin);
- ActiveRecordPlugin aPlugin = new ActiveRecordPlugin(c3p0Plugin);
- aPlugin.setDialect(new MysqlDialect());
- plugins.add(aPlugin);
-
- aPlugin.addMapping("user", User.class);
- aPlugin.addMapping("project", Project.class);
- }
-
- //配置JFinal访问路由
- @Override
- public void configRoute(Routes routes) {
- routes.add("/login", LoginController.class, "/login");
- routes.add("/user", UserController.class, "/user");
- routes.add("/project", ProjectController.class, "/project");
- }
-
- }
接下来,LoginController部分代码:
render渲染不同的类型的视图返回到客户端,此处视图类型为Freemarker。
可以在Config类的configConstant类中设置视图类型 :constants.setViewType(ViewType.FREE_MARKER);
- public class LoginController extends Controller {
- @ClearInterceptor(ClearLayer.ALL)
- @ActionKey("/") //使用了@ActionKey("/"),actionKey由原来的‘/login/index’变为了‘/login’
- public void index() {
- render("index.ftl");
- }
最后,发布项目,访问:http://localhost/项目名称/login 将默认访问控制器的index方法,返回index.ftl页面。
访问http://localhost/项目名称/login/login 将访问控制器中的login方法。
后期再加。。。