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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 分享微信开发Html5轻游戏中的几个坑
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- GUI - Web前端开发框架
- 介绍一款信息管理系统的开源框架---jeecg
- Extjs4.0 最新最全视频教程
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序