jfinal框架搭建及增删改操作的实现汇总文档格式.docx
- 文档编号:18018722
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:886.55KB
jfinal框架搭建及增删改操作的实现汇总文档格式.docx
《jfinal框架搭建及增删改操作的实现汇总文档格式.docx》由会员分享,可在线阅读,更多相关《jfinal框架搭建及增删改操作的实现汇总文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
configClass<
/param-name>
param-value>
mon.CommonConfig<
/param-value>
/init-param>
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
6、创建jfinal配置文件CommonConfig,放在mon下
Jfinal配置文件需要继承jfinal的config
右键mon—new—class,输入名字CommonConfig,点击superclass右侧的Browse…,输入jfinalconfig能看到显示有com.jfinal.config下的JFinalConfig,选中他,点击OK,
7、测试环境
在mon下新建Class文件runserver.class,选中下面的publicstaticvoidmain(String[]args)(主方法)
在main方法中输入JFinal.start("
WebRoot"
8080,"
/"
5);
会看到左边有个叉叉,点击叉叉,选择里边的importjfinal(com.jfinal.core),或者直接使用快捷键(Ctrl+Shift+O)引入包
在runserver页点击右键—runas—javaapplication,看到提示WelcomeToTheJFinalWorld:
)表示配置成功
8、创建mysql数据库jfinal_demo
表blog
id________自动编号
title_____varchar
content___text
pubtime___datetime
9、创建数据库配置文件
右键src—new—file,输入config.properties
打开该文件,输入
jdbcUrl=jdbc:
mysql:
//127.0.0.1/jfinal_demo?
characterEncoding=utf8&
zeroDateTimeBehavior=convertToNull
user=root
password=root
devMode=true
修改IP地址,数据库名,账号密码等
devMode=true表示开发模式,在开发完毕正式运行环境下可以设置为false
10、在CommonConfig.java中配置数据源、常量等信息
在configConstant方法中配置常量
publicvoidconfigConstant(Constantsme){
PropKit.use("
config.properties"
);
//使用PropKit工具读取配置文件
me.setDevMode(PropKit.getBoolean("
devMode"
false));
//设置开发模式,读取配置文件中的devMode参数,如果没有的话取值为false
me.setViewType(ViewType.JSP);
//设置试图文件类型
me.setBaseViewPath("
WEB-INF/view"
//设置默认试图路径,跟上面第四步项目分包时创建的视图层目录一致
}
在configPlugin方法中配置数据源连接
publicvoidconfigPlugin(Pluginsme){
C3p0PluginC3p0Plugin=newC3p0Plugin(PropKit.get("
jdbcUrl"
),PropKit.get("
user"
password"
).trim());
//使用PropKit工具读取配置文件中的jdbcUrl,user,password
me.add(C3p0Plugin);
11、配置数据库映射,配置路由
数据库映射:
数据库中的表跟java类的对应关系
路由:
指定浏览器里输入的/blog由哪个控制器来处理
在configPlugin方法中配置数据库映射
ActiveRecordPluginarp=newActiveRecordPlugin(C3p0Plugin);
me.add(arp);
arp.addMapping("
blog"
Blog.class);
//数据库表映射
//库中blog表对应blog类
在configRoute方法中配置路由
publicvoidconfigRoute(Routesme){
me.add("
/blog"
BlogController.class);
//路由,访问/blog由blogcontroller控制器处理,使用的试图路径为setBaseViewPath配置的路径下的blog目录
如果路径名称不是blog,可以设置第三个参数
me.add("
BlogController.class,"
blognew"
这样就是指定到WEB-INF/view/blognew目录
创建Blog.class
在mon.model下创建Blog.class,继承jfinal.plugin.activerecord.model
右键mon.model—new—class,输入name:
Blog,点击Superclass后面的Browse..,输入model选中里边的model–com.jfinal.plugin.activerecord,
文件创建完毕,会看到左边有红色叉叉,将Model<
M>
修改为Model<
Blog>
即可
在此类中定义publicfinalstaticBlogme=newBlog();
即可。
创建BlogController.class
在mon.controller下创建Blog.class
继承jfinal.core.controller
右键mon.controller—new—class,输入name:
BlogController,点击Superclass后面的Browse..,输入controller选中里边的controller–com.jfinal.core,
浏览器输入/blog就可以访问到BlogController里的默认方法index,
访问/blog等于是访问/blog/index
访问/blog/add就是访问到BlogController里边的add方法
例如上面,访问/blog就访问到BlogController里的index方法,通过render渲染视图目录下的index.jsp文件
具体的地址是:
me.setBaseViewPath("
//设置默认试图路径+me.add("
//路由里的路径blog
也就是WEB-INF/view/blog目录下的index.jsp
在BlogController中新建一个form方法,在访问/blog/form时显示新增表单
publicvoidform(){
render("
form.jsp"
在view目录下新建blog目录
在view/blog目录下新增一个添加信息的页面form.jsp
在form.jsp中新建一个输入框放标题,一个文本区域放内容,代码入下
formmethod="
post"
action="
%=basePath%>
blog/save"
>
inputtype="
text"
name="
blog.title"
/>
Br>
textareastyle="
width:
600px;
height:
200px"
blog.content"
/textarea>
br>
submit"
value="
提交"
/form>
其中<
是当前项目的根目录,例如http:
//localhost:
8080/aaaa/
假设这个表单提交给blog/save处理,也就是BlogController里的save方法处理
需要注意的是,表单的name属性是blog.title,blog.content格式的,这里的blog可以理解为数据表名,也可以理解为blog对象名,可以修改,后面在接收参数的时候用到,后面的title,content要跟数据库中blog标的字段名一致
在BlogController中新建save方法
publicvoidsave(){
Blogblog=getModel(Blog.class,"
//将表单中的数据转成blog对象,这里第二个参数blog就是前面表单中blog.title,blog.content中的blog,可以更换名字,当然要跟前面表单里的保持一致
blog.set("
pubtime"
newDate());
//添加发布时间,因为表单里没有时间这一项
blog.save();
//保存数据
renderText("
新增完毕"
//显示文本提示信息
列表页显示
一般情况下使用BlogController中的默认方法(index)作为列表页显示纪录,即访问/blog可以看到列表页信息,所以对index方法进行修改
publicvoidindex(){
ArrayLista=(ArrayList)Blog.me.find("
select*fromblog"
//查询数据给ArrayList
setAttr("
blogs"
a);
//将结果放到request对象中,然后传递到下一页去
render("
index.jsp"
//渲染视图文件
也可以一步到位的方法
setAttr("
Blog.me.find("
));
render("
视图页index.jsp获取blogs并显示,使用jstl(JSP标准标签库)在视图页循环显示
首先引入jstl库,打开view/blog/index.jsp在顶部贴入:
%@taglibprefix="
c"
uri="
%>
Body部分代码如下
ahref="
blog/form"
新增<
/a>
tablewidth=600>
c:
forEachitems="
${blogs}"
var="
b"
varStatus="
s"
tr>
td>
${s.index+1}<
/td>
${b.title}<
${b.pubtime}<
tdalign=center>
blog/form?
id=${b.id}"
编辑<
blog/delete?
删除<
/tr>
/c:
forEach>
/table>
上面已经介绍过,通过blog/form访问新增页面,再假定通过blog/form?
id=带有ID参数的访问编辑页面(新增和编辑页面使用同一文件,通过判断有无传入ID号来区分是新增还是编辑);
id=执行删除操作
这里使用到了jstl的foreach
……
其中items="
表示循环里的内容来自request对象里的blogs,也就是上面setAttr("
里的blogs;
把这个对象赋给b,下面就可以用b.xxx来得到对象blogs里的属性值(字段值)
varStatus得到循环的一些属性,例如这里的s.index就是得到循环的索引,从0开始,${s.index+1}就得到1234这样的序号。
将新增页面form.jsp升级为新增修改公用的页面
同时BlogController中的form方法也需要修改
首先从上面可以看出,访问/blog/form是新增页面,访问/blog/form?
id=1是修改页面,所以在BlogController的form方法中,只需要接收id参数,根据id是否为空即可区分是新增还是修改。
Integerid=getParaToInt("
id"
//接收ID参数转为integer类型
if(id!
=null&
&
id>
0){//如果id不为空且大于0,执行编辑操作
Blog.me.findById(id));
//从数据库中找到该条记录放到request对象中
//渲染页面
从上看出,如果id为空的话,直接到form.jsp,就是新增页面
如果id不为空,从数据库中找出那条记录,再到form.jsp页面,就是编辑页面
修改form.jsp,如果有blog参数传递过来的话,就把信息显示出来,实现编辑页面的效果
hidden"
blog.id"
${blog.id}"
${blog.title}"
${blog.content}<
同样save保存的方法也需要修改
根据是否有ID传递来判断是新增记录,还是修改记录
//将表单中的数据转成blog对象
if(blog.get("
)==null){//新增
//添加发布时间
}elseif(blog.getInt("
)>
0){//修改
blog.update();
}
index();
//访问index方法跳转到显示列表页
删除方法
//删除/blog/delete?
id=4
publicvoiddelete(){
Integerid=getParaToInt("
//获取id参数
if(id!
0){
booleanflag=Blog.me.deleteById(id);
//执行删除操作
if(!
flag){
renderText("
删除失败"
return;
//结束,不再往下执行。
}
}else{
return;
//如果删除成功的话,跳转到显示列表页
booleanflag=Blog.me.deleteById(id)删除方法返回布尔类型
删除成功返回true,删除失败返回false
备注:
如果要发布到tomcat上运行
请删除WEB-INF/lib/jetty-server-8.1.8.jar文件
然后正常发布即可。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jfinal 框架 搭建 增删 操作 实现 汇总