您的位置:首页 > 编程语言 > Java开发

JFinal 3分钟入门

2016-05-23 11:37 525 查看

JFinal是什么?

JFinal 是国产的、基于 Java 语言的极速 WEB MVC + ORM 框架,由 Handler、Interceptor、Controller、Render、Plugin 五大部分组成。其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。


JFinal架构



JFinal架构以Action为参照,Handler处在扩展的外围,Interceptor处在更贴近Action的范围,Controller承载Action处在扩展的中心,Render处于Action后端,Plugin处于Action右侧。


开发原理

简单总结为:零配置、代码量少、开发体验连续、无第三方依赖、概念最少化。


JFinal特点

1、它是国产的MVC架构

2、惯例优于配置原则,零配置无xml

3、使用DB+Record实现ORM

4、支持多种视图

5、强大的validator后端校验功能

… …

对JFinal有了一个宏观了解后,接下来通过一个入门demo跟大家一起学习下JFinal在项目中的使用。

项目实战

1、在开始建项之前,先打开eclipse的Perferences窗口,将项目编码和JSP编码格式统一设置为UTF-8。



2、下载JFinal依赖的jar包,官网地址: http://www.jfinal.com/

3、创建web应用。新建Dynamic Web工程

4、创建配置文件类MyAppConfig并继承JFinalConfig类



5、修改web.xml文件,通过初始化参数将MyAppConfig设置为filter过滤器的入口。



6、创建controller类。JFinal的controller需要继承controller类。



7、创建JSP页面。在WebContent中新建hello.jsp和index.jsp。



8、注册controller路由。在MyAppConfig.java中将准备好的jsp和controller关联起来。

到此,一个简单的JFinal项目框架已经建好了。接下来我们看一下各个部分的具体实现和调用关系。

首先MyAppConfig.java类

public class MyAppConfig extends JFinalConfig {

/*
* 一些默认通用设置
*/
@Override
public void configConstant(Constants me) {
me.setDevMode(true);
me.setEncoding("utf-8");
me.setViewType(ViewType.JSP);

}

/*
* 注册路由,将jsp访问和controller关联在一起
*/
@Override
public void configRoute(Routes me) {
//----"/"访问到IndexController这个类的index()方法,这是约定
me.add("/", IndexController.class);

//----"/user"访问到UserController这类
//----/user/login,默认访问UserController的login()方法
// me.add("/user",UserController.class);

}

@Override
public void configPlugin(Plugins me) {
// -------------这里启用JFinal插件------下篇介绍---------------
}

/*
* 说明:这里用于配置全局的拦截器,对所有请求进行拦截
*/
@Override
public void configInterceptor(Interceptors me) {
// -------------这里是拦截器的配置------下篇介绍---------------

}

@Override
public void configHandler(Handlers me) {
/*
* ContextPathHandler,在每次请求时将ContextPath (这里指"/MyJFinalApp")
* 设置到HttpServletRequest的属性"basePath"中
*/
me.add(new ContextPathHandler("basePath"));
}

}


讲解:根据我们以前掌握的知识,bathPath必须设置到HttpServletRequest中才能在页面中使用。这里configHandler就只做了这么一件事,即在每次请求时将ContextPath设置到HttpServletRequest的属性”basePath”中。这样在jsp页面可以直接使用${basePath}了。



web.xml。既然MyAppConfig.java是入口,那么,在Tomcat这个容器中,就需要配置这个入口,使得Tomcat启动的同时加载这个入口类。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.5">

<display-name>JFinalApp</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<!-- jfinal核心filter -->

<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>cn.tgb.config.MyAppConfig</param-value>
</init-param>

</filter>

<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>


controller类。

public class IndexController extends Controller {

// Controller默认调用的方法
public void index() {
// 渲染视图并返回给浏览器
this.render("index.jsp");
}

public void sayHello() {
String userName = this.getPara("userName");
String sayHello = "Hello" + userName + ",welcome to JFinal world!";
this.setAttr("sayHello", sayHello);
this.render("/hello.jsp");
}

}


讲解:this.render(“index.jsp”),渲染并返回index页面。这里用的render而不是return。这里即为JFinal的特点之一:支持多种视图。渲染页面不仅仅JSP、VELOCITY等几种类型。将来如有新的类型出现,则只需要扩展Render就可轻松支持。

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${basePath}/sayHello" method="post">

请输入您的名字: <input type="text" name="userName" />
<input type="submit" value="确定" />

</form>
</body>
</html>


hello.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>${sayHello}</p><p><a href="${basePath}/"></a></p>

</body>
</html>


到这里,一个简单的工程就完了。主要实现的是一个问候功能。部署并启动运行。首先访问index页面。在地址栏输入 localhost:8080/JFinalApp/ ,返回index 页面。



请求访问关系



在index页面输入“大美女”,确定。跳转到hello页面。



请求访问关系



本篇文章介绍了JFinal的特性和访问关系,并介绍了config的两个核心方法configRoute()和configHandler()的作用。下篇文章将继续通过一个demo介绍另外两个核心方法configPlugin()和configInterceptor()的使用和作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java web orm mvc interceptor