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

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="width: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',

           width: 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\中找到MySQL\MySQL 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

posted on   黑子菜园  阅读(167)  评论(0编辑  收藏  举报

导航

点击右上角即可分享
微信分享提示