• 流程项目点水笔记


    1、Hibernate参数化查询数据,传入参数变量时,如果变量个数不确定,就放到List集合中,执行dao.queryListBySQL时,参数可以用list.toArray()传入

    2、判断数据库中数据记录是否为叶子节点,可以使用SQL:select id from table where id not in(select pid from table where pid is not null)

    3、构造树方法,使用HashMap存储一遍记录,id作为key,当然其中有值对象存pid,遍历HashMap,将当前对象,作为Map根据pid得到的对象的孩子,否则就是根

    4、oracle Clob转String

    public String clobToString(Clob c) {
            StringBuilder sb = new StringBuilder(1024);
            Reader instream = null;
            try {
                instream = c.getCharacterStream();
                char[] buffer = new char[(int) c.length()];
                while (instream.read(buffer) != -1) {
                    sb.append(buffer);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (instream != null) {
                    try {
                        instream.close();
                    } catch (Exception dx) {
                        dx.printStackTrace();
                    }
                }
            }
            return sb.toString();
        }

     5、流程项目中,要实现模板复制功能,当然同时也要复制所有节点节点中有id,pid,totalcode字段

    实现方式暂时用的是字符串替换ID方式,就是把记录转成JSON字符创,把旧的ID替换为新的ID,然后转成JSONArray数组,批量插入表中

    6、java web用poi导出Excel文件遇到问题

    js下载文件不能用ajax,因为:

    ajax的返回值类型是json,text,html,xml类型,或者可以说ajax的接收类型只能是string字符串,不是流类型,所以无法实现文件下载。但用ajax仍然可以获得文件的内容,该文件将被保留在内存中,无法将文件保存到磁盘。这是因为JavaScript无法和磁盘进行交互,否则这会是一个严重的安全问题,js无法调用到浏览器的下载处理机制和程序,会被浏览器阻塞。

    可以使用window.location.href='路径';

    对response处理:

    protected void setDownLoadFileName(String fileName) throws UnsupportedEncodingException {
            if(request.getHeader("User-Agent").toLowerCase().contains("msie")){
                fileName = URLEncoder.encode(fileName, "utf-8");
                fileName = StringUtils.replace(fileName,"+", "%20");
            }else if(request.getHeader("User-Agent").toLowerCase().contains("firefox")){
                fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
            }else if(request.getHeader("User-Agent").toLowerCase().contains("rv:11")){//ie 11
                fileName = URLEncoder.encode(fileName, "utf-8");
            }else{
                fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
            }
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition","attachment; filename="" + fileName + """);
        }

    方法案例:

    if (StringUtils.isNotBlank(instanceidStr) && StringUtils.isNotBlank(staticaltarget) && StringUtils.isNotBlank(targetstatus)) {
               try {
                   ServletOutputStream outputStream=response.getOutputStream();
                   try {
                       setDownLoadFileName(instanceName+".xlsx");
                       manageService.exeportStaticalData(Long.parseLong(instanceidStr),staticaltarget,targetstatus,dimnodeStr,dimNames,outputStream);
                       outputStream.flush();
                       outputStream.close();
                   }catch (Exception e){
                       e.printStackTrace();
                       try {
                           setDownLoadFileName("error.xlsx");
                           outputStream.write(e.getMessage().getBytes());
                       } catch (UnsupportedEncodingException e1) {
                           e1.printStackTrace();
                       }
                   }finally {
                       outputStream.flush();
                       outputStream.close();
                   }
               }catch (Exception e){
                   e.printStackTrace();
               }
            } else {
                responsePrint("");
            }

     7、前端中文到后端乱码问题:

    JavaScript:

    window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

    java:

    searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

    另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:

    java代码:

    String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");

    8、jQuery对象拼接问题

    refFormTrObj='<tr name="refform"><td></td><td colspan="2"><ul style="list-style-type: none"></ul></td></tr>';
    ($(obj)).after($(refFormTrObj));
    var ulObj=$('ul',$(refFormTrObj));
    ulObj.append('<li>测试</li>');

    这里要注意的是jQuery操作通过字符创得到的对象,每一次$都会创建一个新对象,上面代码两次使用$(refFormTrObj),每次操作的都不是一个对象,所以出错

    如果jQuery两次使用$操作jQuery对象,操作的就是同一个对象,只是字符串会重新创建新对象

    9、数值类型逗号拼接的字符串转为带单引号的数值字符串拼接,用于后台查询时,in语句,不同数据库id主键有可能是数值有可能是字符串

    java代码:String str="12,23,34";转换:str="'"+str.replaceAll(",","','")+"'";

    js代码使用正则替换str.replace(/[^,]+/g,"'$&'");                [^,]表示非逗号       /g全局     $&原字符串

  • 相关阅读:
    influxdb + cadvisor + grafana 监控 docker容器应用性能
    zabbix_get命令
    【工作笔记】python+influxdb+grafana监控云行情
    沙雕与大婶 | 把5W2H融入你的架构设计吧
    GO系列 | 5分钟入门GO【译】
    Docker深入浅出系列 | 5分钟搭建你的私有镜像仓库
    Docker深入浅出系列 | Swarm多节点实战
    Docker如何给Springboot项目动态传参
    沙雕与大婶 | Mock掉你的外部依赖吧
    ed后缀读音规则
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/6742805.html
Copyright © 2020-2023  润新知