jfinal使用

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

maven坐标:

<dependency>
	<groupId>com.jfinal</groupId>
	<artifactId>jfinal</artifactId>
	<version>1.5</version>
</dependency>
web.xml:

<!-- jfinal-filter -->
<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><!--继承自JFinalConfig的自定义的Config类-->
	</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方法。

待续。。。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值