初尝 JFinal 项目(一)

时间:2022-09-30 08:12:06

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 项目(一)的更多相关文章

  1. 初尝 JFinal 项目(二)

    这里以Roles角色表修改功能做一个例子 RolesController /** * 角色管理控制类 * @author 御手洗红豆 */public class RolesController ex ...

  2. &period;NET领域驱动设计—初尝&lpar;三:穿过迷雾走向光明&rpar;

    开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...

  3. &period;NET领域驱动设计—初尝&lpar;一:疑问、模式、原则、工具、过程、框架、实践&rpar;

     .NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  4. Github原生CI&sol;CD,初尝Github Actions

    Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...

  5. JFinal 项目 在tomcat下部署

    原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...

  6. 初尝Windows 下批处理编程

    本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...

  7. 初尝 Perl

    本文将阐述以下几方面内容: 1.什么是Perl 2.Perl有什么用 3.Windows 下的Perl环境搭建 4.Perl 版Hello World 5.Perl 语法梗概 6.一些参考资料 什么是 ...

  8. seajs初尝 加载jquery返回null解决学习日志含示例下载

    原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF  提取码 ...

  9. ExtJS初接触 - 在项目中使用ExtJS

    ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...

随机推荐

  1. VMware系统运维(十一)部署虚拟化桌面 Horizon View 5&period;2 HTML ACCESS安装

    如果你希望在浏览器上面能够连接到用户桌面,那么HTML ACCESS是必须安装的,下面开始安装. 1.点击红框文件 2.打开安装向导,点击"下一步" 3.接受协议,点击" ...

  2. LingPipe-TextClassification&lpar;文本分类&rpar;

    What is Text Classification? Text classification typically involves assigning a document to a catego ...

  3. -&lowbar;-&num;【Dom Ready &sol; Dom Load】

    Dom Ready和Dom Load DOM Ready 详解 javascript的domReady 域名解析 - 加载html - 加载js和css - Dom Ready - 加载图片等其他信息 ...

  4. STM32F407 ADC DMA 采样实验

    转载:http://home.eeworld.com.cn/my/space-uid-361439-blogid-239703.html STM32F407ADC采样实验 热度 1已有 5472 次阅 ...

  5. tmux复制到windows剪贴板&sol;粘贴板的坑

    以下所有操作都是在windows下面用putty连接linux centos6的情景下. 一直很纳闷为什么在tmux模式下不能把复制到的文字放到系统的粘贴板里面呢?通过层层阻碍,终于找到了原因. 去掉 ...

  6. 辛星与您使用CSS导航条

    第一步.我们创建了一个新的my.html档.在内容填入如下面.这个html文件不动,直到最后.正是这些内容: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  7. httpclient 文件上传

    /**      * 上传文件      */     public static Boolean  uploadFile(String fileName, String url) {         ...

  8. lintcode&period;66 二叉树前序遍历

    二叉树的前序遍历    描述 笔记 数据 评测 给出一棵二叉树,返回其节点值的前序遍历. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返 ...

  9. 在IDEA中实战Git

    工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程git仓库上获取项目源码 场景三:小 ...

  10. discuz回贴通知插件实现-发送邮件

    通过discuz的sendmail()来发送邮件 //引入发送邮件的函数文件 include libfile('function/mail'); //设置收件人地址,标题,内容发送邮件 sendmai ...