zoukankan      html  css  js  c++  java
  • 开发小白工作过程中的一些经验记录,仅供自己参看查阅,转载请注明出处

    1、ie8浏览器中,combobox的大小要使用px,才能与一般浏览器大小一致

    2、从数据库中读出的时间戳timestamp类型的数据,转换为页面的string类型,会默认在末尾加.0,可以通过在js前端控制:

    formatter : function(value, row, index) {

    var str=value.substr(0,19);

    return str;

    }

    3、修改页面如果有combobox字段,可以先将查询出来的值放到隐藏域中,再在js中加载,把值赋给combobox:

    <input id="lighttype" name="lighttype" value="${adaptModel.light_type}" type="hidden"/>

    $(document).ready(function(){

    initSelect();

    });

    function initSelect(){

    var lighttype=$("#lighttype").val();

    $("#light_type").combobox("setValue",lighttype);

    }

    4、验证通过form才能提交:

    var isValid = $(form).form('validate');

            if(isValid){

                $.ajax({

                });

            }

    2016-06-20

    1、el表达式可以直接用在js中,如:

    $(document).ready(function(){   

            var device_type="${deviceinfo.device_type}";

    }

    也可以用在路径url中,如:

    Url:basepath+”xxxaction/getxxx.do?num=${good.good_num}”

    2、JSON.parse():从字符串中解析出json对象

       JSON.stringify():从对象中解析出json类型的字符串

    3sql中使用resultClass,必须确保model的属性名称与数据库中的字段名称一模一样,(不区分大小写),而resultMap的话,只要propertycolumn对应好就可以了。resultMap的性能更好

                                                               2016-06-24

    1、浏览器在解析js时,会把‘’和0当成同一个值,写js时要注意

    2、<a href=”#”><a href=”javascript:void(0)”>的区别:

    <a href=”#”>中的是锚点的意思,默认为#top。当页面较长时,使用这种方式会让页面刷新到首页(页面的最上部)

    <a href=”javascript:void(0)”>是一个死链接,当使用超链接处理js脚本(一般是click,又不想回到首页(局部刷新)时使用

    故,当需要整体刷新时,使用#;当需要局部刷新时,使用如下几种方式

    <a href=”####”></a>

    <a href=”javascript:void(0)”></a>

    <a href=”javascript:void(null)”></a>

    <a href=”#” onclick=”return false”></a>

                                                                   2016-06-29

    1、var arr=[];

       Arr.join(‘,’);

    //以逗号为分隔符,将数组的元素组成一个字符串

    2、comboboxdata-options=”panelHeight:auto”可以控制下拉框显示选项的高度,超过即会出现滚动条

    3formatter:  function(value,row,index){

    if (typeof(value) != "undefined") { 

    value = value.replace(/</g, "<");

    value = value.replace(/>/g, ">");

    return  value.length>10?value.substr(0,10)+"...":value;

    }

    }

    //为防止恶性注入js代码,用replace方法替换输入的大于号小于号,replace的第一个参数是一个正则表达式.

    2016-06-30

    1success:function(result){

    var Obj=eval('(' + result + ')'); 

    }

    //js中的evalcodestring)函数,先解释js代码,然后再执行它,codestring是包含有js语句的字符串

    2016-07-01

    1、图片上传下载

    主页面:

    <td rowspan="4" colspan="2" align="center">

    <div ><img style="150px;height:150px"id="imgFile" src="${ct}/employee/getImg.do?imgPath="/></div>

        <a href="javascript:void(0)" class="easyui-linkbutton"                                              data-options="iconCls:'icon-add'" plain="true" onclick="return uploadImg();">上传头像</a>

       <input id="ygtx" name="ygtx" type="hidden"/>

    </td>

    上传头像的方法:

     function uploadImg(){

          var dialog = parent.ns.modalDialog({

               title: '上传头像',

               url: '${ct}/employee/toUploadImg.do',

                400,

               height: 300,

               buttons: [ {

                text: '保存',

                iconCls: 'icon-save',

                handler: function () {

       var imgPath=dialog.find('iframe').get(0).contentWindow.getImgPath();

                         if(imgPath==""){

                         parent.$.messager.alert('提示', '请选择正确的图片格式文件','warning');

                         return false;

                         }

                         //获取头像图片

                         url="${ct}/employee/getImg.do?imgPath="+imgPath;

                         $("#imgFile").attr("src",url);

                         $("#ygtx").val(imgPath);

                            dialog.dialog('destroy');

                        }

                    },{

               text: '关闭',

               iconCls:'icon-cancel',

               handler: function () {  

               dialog.dialog('destroy');

               }          

          }]

                });

            }

    子页面:

    <form enctype="multipart/form-data"  id="uploadImgForm" action="${ct}/employee/uploadImg.do" method="post" >

        <table style="margin-left: auto;margin-right: auto;margin-top: 50px" class="gridtable">

          <tr><td> <input type="file" id="imgFile"   required="required"

                          name="imgFile" />

                  <a href="javascript:void(0)" class="easyui-linkbutton"                                             data-options="iconCls:'icon-upload'" onclick="validateImg()" plain="true" >提交</a>        

            </td>

          </tr>

        </table>

    </form>

    <script type="text/javascript">

      function validateImg(){

       var imgFormats=['bmp','jpg','jqeg','jpe','jfif','gif','png'];

    var imgRealPath =$("#imgFile").val();

    var imgSplit = imgRealPath.split('.');

    var imgFormat = imgSplit[imgSplit.length-1];

    //验证图片格式

    var formateIsRight = false;

    for(var i=0;i<imgFormats.length;i++){

    if(imgFormats[i]==imgFormat){

    formateIsRight=true;

    break;

    }

    }

    if(!formateIsRight){

    jQuery.messager.alert('提示','请上传常用的图片格式文件','warning');

    return false;

    }else{

    $("#uploadImgForm").submit();

      }

      function getImgPath(){

      var imgPath=$("#imgPath").val();

      if(imgPath!=undefined){

      return $("#imgPath").val();

      }else{

      return "";

      }

      }

    </script>

    Action类方法:

    //上传头像

        public String uploadImg(){

          HttpServletRequest request=getHttpServletRequest();  

          ContinueFTP continueFTP=new ContinueFTP();//支持断点续传的FDP

          try {

           String ftpPropertiesPath=request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"classes"+File.separator+"conf"+File.separator+"properties"+File.separator+"ftp.properties");

             com.kuangchi.sdd.util.file.FTP ftp=com.kuangchi.sdd.util.file.FTPUtil.getFtp(ftpPropertiesPath);

          String dateString=  DateUtil.getDateString(new Date(),"yyyyMMdd");

          String dateTimeString=DateUtil.getDateString(new Date(),"yyyyMMddHHmmss");

          String fileName=dateTimeString+imgFileFileName;  

          String imgPath=dateString+"/"+fileName;

    continueFTP.connect(ftp.getHost(), ftp.getPort(), ftp.getUserName(), ftp.getPassword());

    continueFTP.upload(imgFile,imgPath );

        request.setAttribute("message", "上传成功"); 

        request.setAttribute("imgPath",imgPath );

    catch (IOException e1) {

    e1.printStackTrace();

    request.setAttribute("message", "上传失败");

    }

         return "success";     

        }

     //获取头像

        public void getImg(){

          HttpServletRequest request=getHttpServletRequest();

          HttpServletResponse response=getHttpServletResponse();

          String imgPath=request.getParameter("imgPath");

          ContinueFTP continueFTP=new ContinueFTP();

          java.io.InputStream is=null;

          OutputStream out=null;

          try {     

          String ftpPropertiesPath=request.getSession().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"classes"+File.separator+"conf"+File.separator+"properties"+File.separator+"ftp.properties");

             com.kuangchi.sdd.util.file.FTP ftp=com.kuangchi.sdd.util.file.FTPUtil.getFtp(ftpPropertiesPath);

          

          continueFTP.connect(ftp.getHost(), ftp.getPort(), ftp.getUserName(), ftp.getPassword());

          if (null!=imgPath&&!imgPath.trim().equals("")&&!"undefined".equals(imgPath)) {

      is=continueFTP.download(imgPath);

          }else{

          //如果没有上传头像,则给一个默认头像

         String defaultImg=request.getSession().getServletContext().getRealPath(File.separator+"businessConsole"+File.separator+"images"+File.separator+"defaultImg.jpg");

         File file=new File(defaultImg)  ;

         is=new FileInputStream(file);

          }

      out=response.getOutputStream();

      byte[] buffer=new byte[1024];

      while (is.read(buffer)!=-1) {

        out.write(buffer);

    }

       out.flush();

    continueFTP.disconnect();

    catch (Exception e) {

    e.printStackTrace();

    }finally{

    if (null!=is) {

    try {

    is.close();

    catch (IOException e) {

    e.printStackTrace();

    }

    }

    if (null!=out) {

        try {

    out.close();

    catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

          

    }

    2016-08-16

    1、Map对象的keySet()方法获取所有的key值,放在一个Set中:

    Map map=new HashMap();

    Map.put(1,”a”);

    Map.put(2,”b”);

    Map.put(3,”c”);

    Set keys1=map.keySet();

    Set keys2=map.keySet();

    Set keys3=map.keySet();

    上面3set对象,引用的是同一个对象,mapkeySet()方法只返回一个set实例,所以当从keys1中删除一个对象时,key2,key3也会受到影响:

    Keys1.remove(1);

    System.out.println(keys1);

    System.out.println(keys2);

    System.out.println(keys3);

    结果为:[2,3]

    [2,3]

    [2,3].

    循环mapkeyfor(String datakey:map.keySet()){

    System.out.println(datakey);

    };

    同时可用泛型:for(Map.Entry<Integer,String> entry:map.entrySet){

    System.out.println(entry.getKey()+””+entry.getValue());

    }//Map.EntryMap声明的一个内部接口

    补充:遍历Map的常用方法-->使用迭代器遍历Map

    (1)Map map=new HashMap();

       Iterator iterator=map.entrySet().iterator();

       While(iterator.hasNext()){

    Map.Entry entry=iterator.next();

    Object key=entry.getKey();

    }

    (2)Map map=new HashMap();

       Set keySet=map.keySet();

       Iterator iterator=keySet.iterator();

       While(iterator.hasNext()){

    Object key=iterator.next();

    Object value=map.get(key);

    }

    (3)Map map=new HashMap();

       Collection c=map.values();

       Iterator iterator=c.iterator();

       While(iterator.hasNext()){

    Object value=iterator.next();

    }//单纯遍历value值,Mapvalues()方法,返回的是valuecollection集合

    2016-09-01

    1、java中,两个double类型的数据不能直接用==或!=来比较大小,由于会丢失精度,比较出来的结果是错误的。两个Double类型数据的比较,可以用减法-来实现与0的大小比较

    2、分页显示的页数与显示总条数不符合时,考虑是否sql语句忘记加分页条件

    3、查询时Sql语句注意标志位的使用,要排除已删除的记录;模糊查询语句尽量用join等连接操作,避免空字符的错误

    2016-09-02

    1、读取 properties配置文件的工具方法propertyToMap的主要实现代码:

    Properties prop=new Properties();

    Map<String,String> pros=new HashMap<String,String>();

    InputStream in=PropertiesToMap.class.getClassLoader().getResourceAsStream(“/conf/properties/”)+propertyName;

    Try{

    Prop.load(in);

    Iterator<String> it=prop.stringPropertyNames().iterator();

    While(it.hasNext()){

    String key=it.next();

    String value=prop.getProperty(key);

    Pros.put(key,value);

    }

    In.close();

    }catch(FileNotFoundException e){

    e.printStackTrace();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    If(in!=null){

    Try{in.close();}catch(IOException e){

    e.printStackTrace();

    }

    }

    }

    Return pros;

    2、mysql语句中使用条件判断:

    select 

         case 

    when type=0 then '充值' 

    when type=1 then '消费' 

    when type=2 then '补助' 

    END as type,

    id,

    detail_flow_no as detailFlowNo

    from 

    kc_xf_account_detail 

    where 1=1

    3、joinleft join的区别

    (1)join留下来的记录是完全符合on条件的

    (2)A Left join B:A的记录全保留,B的记录符合on条件的留下

    4mysqlleft(str,length)函数,截取部分字符串

    2016-09-08

    1、后台使用split函数对字符串进行分割时,注意,如果分隔符是‘.’‘|’时,要使用‘\.’‘\|’,因为‘.’‘|’本身是转义字符

                                                            2016-09-13

    1、将datagrid1选中的记录行添加到另一个datagrid2:

    Var select=datagrid1.datagrid(“getSelected”);

    Datagrid2.datagrid(“appendRow”,select);

    2、获取datagrid所有行记录:

    Var data=datagrid.datagrid(“getData”);

    Var nums=[];

    For(data.rows.length){

    Nums.push(Data.row[i].d_num);

    }

    3、按行索引删除行记录:

    Var rowIndex=datagrid.datagrid(“getRowIndex”,datagrid.datagrid(“getSelected”));

    Datagrid.datagrid(“deleteRow”,rowIndex);

    2016-09-19

    1mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!

      修改mysql5.7的配置文件即可解决,方法如下:

      linux版:找到mysql的安装路径进入默认的为/usr/share/mysql/中,进行对my-default.cnf编辑

           利用查找功能"/"找到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"

           将其删除或者是注释即可。

      windows版:32位找到mysql安装路径直接修改my.ini文件利用ctrl+f

              搜索出来的内容应该是sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

              将其注释或者是删除即可。

             64位需要进入windows的隐藏文件夹C:ProgramData中找到MySQLMySQL Server 5.7,修改配置文件my.ini

              利用ctrl+f搜索出来的内容应该是sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

              将其注释或者是删除即可。

    2016-09-20

    1、

    1)下载批量导入模板

    表格模板ExcelExportTemplate中的createLongTitleRow方法可以设置模板的表头、说明等,

    TitleRowCell的构造方法有两个参数,一个是列标题,一个是是否必填的,在此可以控制字段的必填

    (2)上传填写了内容的模板文件

    2、dStr.compareTo(targetdate) > 0比较日期大小

    Dstr是当前日期,targetdate是目标日期,大于0说明当前大于目标

    3、date.match(“正则表达式”),匹配格式

    4、HSSFSheet sheet的方法getLastRowNum获取的是最后一行的行索引

    2016-11-08

    1.$('#dataGrid').datagrid({   

        rowStyler:function(rowIndex,getData){   

            if (getData.is_default==1){  

                return '';   

            }   

        }   

    });//设置行样式

    2.new Date().setHours(hours,minutes,seconds)给新建的日期对象设置小时、分钟、秒,参数是可选的。设置完成后,可以用来比较日期大小;

    2016-11-16

    1、java.net.InetAddress的静态方法getLocalHost()获取本地ip地址。

    2、Mysql中不等于用!=<>都可以,sqlserver中不等于用<>,不兼容!=php中不等于用!=<>都可以。

    3、按索引修改datagrid的行记录的字段后,用方法acceptChanges提交所有修改后的数据,如:

    dataGrid.datagrid('getData').rows[index].doorPowerNum=doorsObj.doorPowerNumStr;

         dataGrid.datagrid('acceptChanges');

    4、idFieldnum,columns:{field:’num’...},方法selectRecord可以通过id域值参数选择一行,如:

    var arr=doorPowerNumStr.split("|");

    for(var i=0;i<arr.length;i++){

    dataGrid.datagrid("selectRecord",arr[i]);

    }

    2016-11-23

    1、调试时,点击下一步,出现source not found时,可以点击下面的编辑按钮edit source lookup path,弹窗内选择add,再选择java project里你的项目,ok确定即可:

    Debug 视图下

       -》在调试的线程上 右键单击

       -》选择Edit Source Lookup Path

       -》选择Add

       -》选择Java Project

       选择相应的Project 进行OK确定即可

    2016-12-16

    1端口8005, 8080, 8009被占用了。可能是在打开Tomcat的情况下关闭了Eclipse,或是Eclipse非正常关闭,导致先前的Tomcat没有被关闭,端口占用。或是其他软件占用了tomcat的端口号。

    解决方法:
    :杀掉占用端口的软件。

    打开任务管理器,找到Java虚拟机相关的进程javaw.exe,将它结束掉

    2017-01-05

  • 相关阅读:
    localStorage cache
    webpack的学习过程
    npm install --save/--save-dev的区别
    .gitignore常见问题
    jQuery的优点与缺点
    JSONP是什么
    Node.js-Usage & Example
    【转】Swig Getting Started
    【转】使用Spring MVC统一异常处理实战
    C++-Qt【5】-QT的QString,char*,QByteArray转化以及中文乱码的问题
  • 原文地址:https://www.cnblogs.com/blackdd/p/8398568.html
Copyright © 2011-2022 走看看