柚子快报邀请码778899分享:JFinal
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 添加
```
```
附上完整的 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-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.
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
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
// 分页查询年龄大于18的user,当前页号为1,每页10个user
Page
```
## JSON ##
Action
```
List
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
发表评论