柚子快报邀请码778899分享:JFinal

http://www.51969.com/

JFinal 

下载地址:

http://www.jfinal.com/project/1

文档地址http://www.jfinal.com/upload/2.2/jfinal-2.2-all.zip

开发流程

 

非常详细的开发文档:

http://www.jfinal.com/doc

 

## step1: 新建项目 ##

新建 项目/动态网站 (Dynamic Web Server)  , 新建项目是选择 J2EE1.4 模板

WebRoot\WEB-INF\classesWebRoot

编辑文件是在于 web.xml (此文件路径是在 WEB-INF目录) 中

 

PS. 如果MyEclipse中看不见 web.xml 文件夹的话,那么,可以: 

右键web-inf文件夹,点Show In 里有个Navigator ,就出来了

 

在 web.xml 添加

```

jfinal

com.jfinal.core.JFinalFilter

configClass

demo.DemoConfig

jfinal

/*

```

附上完整的 web.xml

```

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

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">

jfinal_demo

jfinal

com.jfinal.core.JFinalFilter

configClass

demo.DemoConfig

jfinal

/*

index.html

index.jsp

default.html

```

将 jfinal-xxx.jar 与 jetty-server-8.1.8.jar拷贝至项目 WEB-INF\lib 下即可 。 注意: jetty-server-8.1.8.jar 是开发时使用的 运行环境

## step2: 创建类 ##

demo 包下 新建 DemoConfig 类

```

package demo;

import com.jfinal.config.*;

public class DemoConfig extends JFinalConfig {

public void configConstant(Constants me) {

me.setDevMode(true);

}

public void configRoute(Routes me) {

me.add("/hello", HelloController.class);

}

public void configPlugin(Plugins me) {

}

public void configInterceptor(Interceptors me) {

}

public void configHandler(Handlers me) {

}

}

```

控制器:

```

package demo;

import com.jfinal.core.Controller;

public class HelloController extends Controller {

public void index() {

renderText("Hello JFinal World.");

}

}

```

## step3 配置程序启动路径 ##

参照文档来做

点击 “New Configuration” 按钮启动服务器

http://localhost/hello

## 错误信息 ##

---------

```

一月 05, 2017 7:53:01 下午 com.jfinal.kit.LogKit error

严重: port: 80 already in use!

java.lang.IllegalStateException: port: 80 already in use!

at com.jfinal.server.JettyServer.doStart(JettyServer.java:79)

at com.jfinal.server.JettyServer.start(JettyServer.java:65)

at com.jfinal.core.JFinal.main(JFinal.java:168)

```

关闭占用的 80 端口

netstat -ano 80

netstat -aon|findstr "80"

netstat -abno后查看,经过查找为pid=4的system进程,因为是系统进程,也无法结束它,经查SQL Server ReportingServices (SQLEXPRESS) 服务占用80端口,停止SQL Server ReportingServices后APache正常启动.---------

## 数据库 ##

ansisqldialect 数据库方言

```

public void configPlugin(Plugins me) {

loadPropertyFile("classes/config.properties");

C3p0Plugin cp = new C3p0Plugin(getProperty("jdbc.url"),

getProperty("jdbc.username"), getProperty("jdbc.password"),

getProperty("jdbc.driverClassName")); // 使用C3P0

me.add(cp);

ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);

me.add(arp);

// arp.setDialect(new AnsiSqlDialect());//使用AnsiSqlDialect

arp.setDialect(new SqlServerDialect());

arp.setContainerFactory(new CaseInsensitiveContainerFactory());

}

```

### MSSQL ###

```

##-------------------------------------------------

## SQL Server

##-------------------------------------------------

jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=dbname

jdbc.username=sa

jdbc.password=123456

jdbc.dbType=sqlserver

```

插件 ###

#### 信息 ####

```

2017-01-10 15:49:42.999:WARN:oejuc.AbstractLifeCycle:FAILED jfinal: java.lang.IllegalArgumentException: Properties file not found in classpath: classes/config.properties

java.lang.IllegalArgumentException: Properties file not found in classpath: classes/config.properties

```

改成 loadPropertyFile("config.properties");, 并将 config.properties 文件放到 src 文件夹中

```

2017-01-10 16:08:52.945:WARN:oejuc.AbstractLifeCycle:FAILED jfinal: java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/ComboPooledDataSource

java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/ComboPooledDataSource

```

缺少连接池包( c3p0-0.8.5.2.jar )

 

```

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

at java.net.URLClassLoader.findClass(Unknown Source)

```

缺少连接池包( sqljdbc4.jar )

```

com.microsoft.sqlserver.jdbc.SQLServerException: 不支持此服务器版本。目标服务器必须是 SQL Server 2000 或更高版本。

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)

at com.microsoft.sqlserver.jdbc.DBComms.Prelogin(Unknown Source)

at com.microsoft.sqlserver.jdbc.DBComms.(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)

```

JAR包问题,在项目的WEB-INFO/lib下存在sqljdbc4.jar和sqljdbc.jar两个札包,就是因为"sqljdbc.jar"版本太老的原因使得无法访问SQLSERVER08数据库,将“sqljdbc.jar”删掉,只留sqljdbc4.jar,之后再右击项目-->Build Path-->configureBuildPath-->将sqljdbc.jar删除,这样编译之后的classpath下就只有sqljdbc4.jar,就不会产生冲突;

##### 资料 #####

jfinal框架下使用c3P0连接池连接sql server 2008http://blog.csdn.net/u014522611/article/details/50095571

访问数据库 ###

```

List users = Db.find("select * from AccountsInfo");

System.out.println(users);

// 创建name属性为James,age属性为25的record对象并添加到数据库

Record user = new Record().set("name", "James").set("age", 25);

Db.save("user", user);

// 删除id值为25的user表中的记录

Db.deleteById("user", 25);

// 查询id值为25的Record将其name属性改为James并更新到数据库

user = Db.findById("user", 25).set("name", "James");

Db.update("user", user);

// 获取user的name属性

String userName = user.getStr("name");

// 获取user的age属性

Integer userAge = user.getInt("age");

// 查询所有年龄大于18岁的user

List users = Db.find("select * from user where age > 18");

// 分页查询年龄大于18的user,当前页号为1,每页10个user

Page userPage = Db.paginate(1, 10, "select *", "from user where age > ?", 18);

```

## JSON ##

Action 

```

List users = Db.find("select top 10 * from AccountsInfo");

renderJson(users);

```

# 测试环境 #

记得加上这句话: “userInfoRedis.start();”

```

public static void main(String[] args) {

RedisPlugin userInfoRedis = new RedisPlugin("userInfo","localhost");

// 测试环境中执行

userInfoRedis.start();

Cache userInfoCache = Redis.use("userInfo");

userInfoCache.set("1", "2");

Object o = userInfoCache.get("1");

System.out.println(o);

}

```

端口设置 #

jfinal初接触,一个简单的文件上传例子http://www.cnblogs.com/acehalo/p/3915720.html

## 项目文件路径 ##

柚子快报邀请码778899分享:JFinal

http://www.51969.com/

查看原文