初尝 JFinal 项目(一)
temp1:
JFinal项目与JAVA项目类似,有属性方法、操作方法、Sql语句操作、jdbc、配置文件
对比:|| JAVA: Bean / Srv(Server) / SqlMap / jdbc.properties / SqlMapConfig、struts ||
|| JFinal: Model / Controller / 省略 / jdbc.properties / JFinalConfig ||
temp2:
属性:JavaBean手动添加属性并获取get/set方法。 例:private int id; ——> Source ——> Generate Getters and Setters...
JFinalModel自动添加属性不需要获取get/set方法。 例: private static final long serialVersionUID = 1L;
public static final JFinalModel dao = new JFinalModel();
操作:JavaSrv直接书写增删更查方法。
例:private String returnStr;
/**
* 添加方法
* @param bean
* @return 御手洗红豆
* @throws Exception
*/
public String addJava ( JavaBean bean ) throws Exception {
try {
HashMap<String, String> param = new HashMap<String, String>();
//Java类型
if(!StringTool.IfNull(bean.getJavatype())){
param.put("Javatype", bean.getJavatype());
}
this.addRecord("addJava", param); //引号里内容SqlMap中会用到
returnStr = Const.SYSTEM_STATUS_SUCCESS;
} catch (Exception e) {
// TODO: 返回系统状态错误字符串
returnStr = Const.SYSTEM_STATUS_ERROR;
e.printStackTrace();
throw e;
}
return returnStr;
}
/**
* 删除方法
* @param bean
* @return 御手洗红豆
* @throws Exception
*/
public String DelJava ( JavaBean bean ) throws Exception {
try {
HashMap<String, String> param = new HashMap<String, String>();
if(!StringTool.IfNull(bean.getId())){
param.put("id", bean.getId());
}
this.deleteRecord("DelJava", param);
returnStr = Const.SYSTEM_STATUS_SUCCESS;
} catch (Exception e) {
// TODO: handle exception
returnStr = Const.SYSTEM_STATUS_ERROR;
e.printStackTrace();
throw e;
}
return returnStr;
}
//更新方法与前两个差异在 this.updateRecord("UpdateJava", param);
//查询
public List<JavaBean> SelectJava ( JavaBean bean ) throws Exception {
List<JavaBean> javaList = null;
try {
HashMap<String, String> param = new HashMap<String, String>();
if(!StringTool.IfNull(bean.getId())){
param.put("id", bean.getId());
}
if(!StringTool.IfNull(bean.gettype())){
param.put("type", bean.gettype());
}
roleList = this.getRecords("SelectJava", param);
return javaList;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw e;
}
}
//查询总数(为分页查询做准备)
public int SelectJavaCount(JavaBean bean) throws Exception {
int count = -1;
try {
HashMap<String, String> param = new HashMap<String, String>();
if(!StringTool.IfNull(bean.getId())){
param.put("Id", bean.getId());
}
if(!StringTool.IfNull(bean.getType())){
param.put("Type", bean.getType());
}
count = Integer.parseInt(this.getSingleValue("SelectJavaCount", param).toString());
return count;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
/**
* 分页 查询
* @param bean 查询条件
* @param pageNum 当前页码
* @param pageCount 每页显示数量
* @return 御手洗红豆
* @throws Exception
*/
public List<JavaBean> SelectJavaPage (JavaBean bean, int pageNum, int pageCount) throws Exception {
try {
HashMap<String, String> param = new HashMap<String, String>();
if(!StringTool.IfNull(bean.getId())){
param.put("Id", bean.getId());
}
if(!StringTool.IfNull(bean.getType())){
param.put("Type", bean.getType());
}
if......
param.put("pageBegin", ((pageNum-1)*pageCount) + "");
param.put("pageCount", pageCount + "");
List<JavaBean> javaList = this.getRecords("SelectJavaPage", param);
return javaList;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
》》 JFinalController书写修改方法
/**
* 获取联盟列表
* @author 御手洗红豆
*/
public void getJavaList(){
// 取出用户信息,添加用户Log用
UserModel userModel = getSessionAttr(SystemStateConstant.SessionLoginUser);
int totalPage = 1;// 总页数
long totalRow = 0;// 总记录数
int pageNumber= getParaToInt("pageNumber", 1);// 当前页码
String urlParas= getPara("urlParas", "");
String code= getPara("code", "");// 查询条件:编号
String name= getPara("name", "");// 查询条件:名称
if(code.equals("") && name.equals("") && !urlParas.equals("")){
try {
urlParas = URLDecoder.decode(urlParas, "UTF-8"); //数据转码UTF-8
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
urlParas = "";
}
}else{
urlParas = "";
if(!code.equals("")){
urlParas += " and code like '%" + code + "%'";
}
if(!name.equals("")){
urlParas += " and name like '%" + name + "%'";
}
if......
}
// 取得总记录数
String sql = "select count(*) totalRow from Java where isdel=0" + urlParas;
totalRow = JavaModel.dao.findFirst(sql).getLong("totalRow");
// 计算总页数,不能整除的进1
totalPage = BigDecimal.valueOf(totalRow).divide(SystemStateConstant.PAGENUM, BigDecimal.ROUND_UP).intValue();
sql = "select * from (select * from Java where isdel=0" + urlParas +" order by code) t limit " + ((pageNumber-1) * SystemStateConstant.PAGENUM.intValue()) + "," + SystemStateConstant.PAGENUM.intValue();
List<JavaModel> dateList = JavaModel.dao.find(sql);
setAttr("pageNumber", pageNumber);
setAttr("totalPage", totalPage);
setAttr("totalRow", totalRow);
setAttr("dateList", dateList);
try {
setAttr("urlParas", URLEncoder.encode(urlParas, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
setAttr("urlParas", "");
}
//进入编辑页
public void toedit(){
String id= getPara("id", "-1");
String pageNumber= getPara("pageNumber");
String urlParas= getPara("urlParas");
JavaModel JavaInfo = JavaModel.dao.findById(id);
setAttr("msg", "");// 错误信息,进入时为空即可
setAttr("pageNumber", pageNumber);
setAttr("urlParas", urlParas);
setAttr("JavaInfo", JavaInfo);
render("/ace/JavaPage/formPage.html");
}
//查看联盟详情
public void view(){
String id= getPara("id", "-1");
JavaModel JavaInfo = JavaModel.dao.findById(id);
setAttr("JavaInfo", JavaInfo);
}
// 编辑处理
public void edit(){
// 取出用户信息,添加用户Log用
UserModel userModel = getSessionAttr(SystemStateConstant.SessionLoginUser);
String id= getPara("id", "");
String pageNumber= getPara("pageNumber");
String urlParas= getPara("urlParas");
JavaModel JavaInfo = getModel(JavaModel.class, "", true);
String msg = "";
if(id.equals("")){
String sql = "select count(*) totalRow from Java where code='" + JavaInfo.getStr("code") + "'";
long sumnum = JavaModel.dao.findFirst(sql).getLong("totalRow");
if(sumnum == 0){
JavaInfo.set("createDate", DateTimeUtil.getNowTime());
if(JavaInfo.get("homepage") != null && !"".equals(JavaInfo.get("homepage"))){
JavaInfo.set("ishomepage", "1");
}else{
JavaInfo.set("ishomepage", "2");
}
JavaInfo.save();
logHandler.seaveLog(OptTypeEnum.USEROPT, OptModelConstant.MODEL_Java, OptTypeConstant.OPTCODE_ADD, "添加联盟:" + JavaInfo.getStr("code") + " | " + JavaInfo.getStr("name") + ",成功,管理员:" + userModel.getStr("name") + "。", 1, 2, userModel.getInt("id"));
}else{
msg = "添加失败,该编码的联盟已经添加过,请查证!";
logHandler.seaveLog(OptTypeEnum.USEROPT, OptModelConstant.MODEL_Java, OptTypeConstant.OPTCODE_ADD, "添加联盟:" + JavaInfo.getStr("code") + " | " + JavaInfo.getStr("name") + ",失败,管理员:" + userModel.getStr("name") + "。", 2, 2, userModel.getInt("id"));
}
}else{
JavaInfo.set("id", id);
if(JavaInfo.get("homepage") != null && !"".equals(JavaInfo.get("homepage"))){
JavaInfo.set("ishomepage", "1");
}else{
JavaInfo.set("ishomepage", "2");
}
JavaInfo.update();
logHandler.seaveLog(OptTypeEnum.USEROPT, OptModelConstant.MODEL_Java, OptTypeConstant.OPTCODE_UPD, "编辑联盟:" + JavaInfo.getStr("code") + " | " + JavaInfo.getStr("name") + ",管理员:" + userModel.getStr("name") + "。", 1, 2, userModel.getInt("id"));
}
if(msg.equals("")){
redirect("/Java/getJavaList?pageNumber=" + pageNumber + "&urlParas=" + urlParas);
}else{
setAttr("msg", msg);
setAttr("pageNumber", pageNumber);
setAttr("urlParas", urlParas);
setAttr("JavaInfo", JavaInfo);
render("/ace/JavaPage/formPage.html");
}
}
/**
* 删除处理
* @author 御手洗红豆
*/
public void del(){
// 取出用户信息,添加用户Log用
UserModel userModel = getSessionAttr(SystemStateConstant.SessionLoginUser);
String id= getPara("id", "");
String pageNumber= getPara("pageNumber");
String urlParas= getPara("urlParas");
JavaModel model = new JavaModel();
model.set("id", id);
model.set("isDel", 1);
model.update();
logHandler.seaveLog(OptTypeEnum.USEROPT, OptModelConstant.MODEL_Java, OptTypeConstant.OPTCODE_DEL, "删除联盟(id):" + model.getStr("id") + ",管理员:" + userModel.getStr("name") + "。", 1, 2, userModel.getInt("id"));
redirect("/Java/getJavaList?pageNumber=" + pageNumber + "&urlParas=" + urlParas);
}
jdbc无区别
配置文件区别: JAVA配置:Struts.xml
例:<!-- Login action -->
<action name="Login_*" class="LoginAction" method="{1}">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="checkUser" />
<result name="succeed" type="redirectAction">Login_toIndex.action</result>
<result name="toindex">ace/main_page.jsp</result>
<result name="fail">Login.jsp</result>
<result name="login">Login.jsp</result>
</action>
JFinal配置:JFinalConfig.java
例:/**
* jFinal路由配置
*/
@Override
public void configRoute(Routes me) {
me.add("/", IndexController.class); // 访问系统跳入登录页
me.add("/user", UserController.class); // User管理
me.add("/roles", RolesController.class);// 角色管理
me.add("/auths", AuthsController.class);// 权限管理
}
/***
* 数据库连接配置
*/
@Override
public void configPlugin(Plugins me) {
C3p0Plugin c3p0 = new C3p0Plugin(getProperty("jdbc.url"), getProperty("jdbc.username"),
getProperty("jdbc.password"));
c3p0.setDriverClass(getProperty("jdbc.driverClassName"));
me.add(c3p0);
ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0);
me.add(arp);
arp.setDialect(new AnsiSqlDialect());
arp.setContainerFactory(new CaseInsensitiveContainerFactory());
arp.addMapping("roles", RolesModel.class);// 角色表
arp.addMapping("auths", AuthsModel.class);// 权限表
arp.addMapping("roleAuths", RoleAuthsModel.class);// 角色权限表
}
/***
* 启动运行时运行
*/
public void afterJFinalStart() {
}
/**
* 建议使用 JFinal 手册推荐的方式启动项目
* 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
*/
public static void main(String[] args) {
JFinal.start("WebRoot", 8080, "/", 5);
}
初尝 JFinal 项目(一)的更多相关文章
- 初尝 JFinal 项目(二)
这里以Roles角色表修改功能做一个例子 RolesController /** * 角色管理控制类 * @author 御手洗红豆 */public class RolesController ex ...
- .NET领域驱动设计—初尝(三:穿过迷雾走向光明)
开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...
- .NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)
.NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明 ...
- Github原生CI/CD,初尝Github Actions
Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...
- JFinal 项目 在tomcat下部署
原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...
- 初尝Windows 下批处理编程
本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...
- 初尝 Perl
本文将阐述以下几方面内容: 1.什么是Perl 2.Perl有什么用 3.Windows 下的Perl环境搭建 4.Perl 版Hello World 5.Perl 语法梗概 6.一些参考资料 什么是 ...
- seajs初尝 加载jquery返回null解决学习日志含示例下载
原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF 提取码 ...
- ExtJS初接触 - 在项目中使用ExtJS
ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...
随机推荐
- CCLabel在最大宽度已知的情况下如何获取实际宽高
当前环境在cocos2.2.6, 在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高? ...
- java中,去除空白的方法
有时候,我们页面传过来的值,或者做excel导入时填入的值都需要去掉像空格一样的一些特殊字符,下面这个方法可去掉像制表符,换行键,回车,空格或者不在ACSII中 的特殊字符 /** * 去除字符串开始 ...
- 第七课第三节,T语言流程语句(版本5.0)
for语句 for和while语句一样,都是用来做循环操作的,只是他们的使用方法不一样 (注:关键字,for,end) 执行流程图解: 实例代码: for(var i=0;i<20;i++) / ...
- ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)
在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...
- 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...
- nodejs-基本语法
初识nodejs-基本语法 nodejs是JavaScript的一个在后端的运行环境,关于nodejs的认识,我们可以看上一篇文章<<初识nodejs>>,我们要使用nodej ...
- C# 深拷贝通用方法
C#深拷贝通用方法(引用类型的拷贝) /// <summary> /// 深度COPY /// </summary> /// <typeparam name=" ...
- C++常见gcc编译链接错误解决方法
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...
- VS2013添加解决方案内项目的引用,编译时提示找不到文件
1.添加解决方案内项目引用 2.编译时报错 原因: 要引用的程序集的Framework版本与当前项目的版本不一致. 解决: 统一引用与被引用程序集的版本.
- ImageLoader介绍2
Universal Image Loader 是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示.所以,如果你的程序里需要这个功能的话,那么不妨试试它.他本来是 ...