開發小白工做過程當中的一些經驗記錄,僅供本身參看查閱,轉載請註明出處

一、ie8瀏覽器中,combobox的大小要使用px,才能與通常瀏覽器大小一致javascript

二、從數據庫中讀出的時間戳timestamp類型的數據,轉換爲頁面的string類型,會默認在末尾加.0,能夠經過在js前端控制:php

formatter : function(value, row, index) {前端

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

return str;mysql

}linux

三、修改頁面若是有combobox字段,能夠先將查詢出來的值放到隱藏域中,再在js中加載,把值賦給combobox:ajax

<input id="lighttype" name="lighttype" value="${adaptModel.light_type}" type="hidden"/>正則表達式

$(document).ready(function(){sql

initSelect();數據庫

});

 

function initSelect(){

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

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

}

四、驗證經過form才能提交:

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

        if(isValid){

            $.ajax({

            });

        }

2016-06-20

 

一、el表達式能夠直接用在js中,如:

$(document).ready(function(){   

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

}

 

也能夠用在路徑url中,如:

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

二、JSON.parse():從字符串中解析出json對象

   JSON.stringify():從對象中解析出json類型的字符串

3sql中使用resultClass,必須確保model的屬性名稱與數據庫中的字段名稱如出一轍,(不區分大小寫),而resultMap的話,只要propertycolumn對應好就能夠了。resultMap的性能更好

                                                           2016-06-24

 

一、瀏覽器在解析js時,會把‘’和0當成同一個值,寫js時要注意

二、<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

一、var arr=[];

   Arr.join(‘,’);

//以逗號爲分隔符,將數組的元素組成一個字符串

二、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

 

一、圖片上傳下載

主頁面:

<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

一、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

一、java中,兩個double類型的數據不能直接用==或!=來比較大小,因爲會丟失精度,比較出來的結果是錯誤的。兩個Double類型數據的比較,能夠用減法-來實現與0的大小比較

二、分頁顯示的頁數與顯示總條數不符合時,考慮是否sql語句忘記加分頁條件

三、查詢時Sql語句注意標誌位的使用,要排除已刪除的記錄;模糊查詢語句儘可能用join等鏈接操做,避免空字符的錯誤

2016-09-02

一、讀取 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;

二、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

三、joinleft join的區別

(1)join留下來的記錄是徹底符合on條件的

(2)A Left join B:A的記錄全保留,B的記錄符合on條件的留下

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

2016-09-08

一、後臺使用split函數對字符串進行分割時,注意,若是分隔符是‘.’‘|’時,要使用‘\\.’‘\\|’,由於‘.’‘|’自己是轉義字符

                                                        2016-09-13

一、將datagrid1選中的記錄行添加到另外一個datagrid2:

Var select=datagrid1.datagrid(「getSelected」);

Datagrid2.datagrid(「appendRow」,select);

二、獲取datagrid全部行記錄:

Var data=datagrid.datagrid(「getData」);

Var nums=[];

For(data.rows.length){

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

}

三、按行索引刪除行記錄:

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)下載批量導入模板

 

表格模板ExcelExportTemplate中的createLongTitleRow方法能夠設置模板的表頭、說明等,

 

TitleRowCell的構造方法有兩個參數,一個是列標題,一個是是否必填的,在此能夠控制字段的必填

(2)上傳填寫了內容的模板文件

 

 

 

二、dStr.compareTo(targetdate) > 0比較日期大小

Dstr是當前日期,targetdate是目標日期,大於0說明當前大於目標

三、date.match(「正則表達式」),匹配格式

四、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

一、java.net.InetAddress的靜態方法getLocalHost()獲取本地ip地址。

二、Mysql中不等於用!=<>均可以,sqlserver中不等於用<>,不兼容!=php中不等於用!=<>均可以。

三、按索引修改datagrid的行記錄的字段後,用方法acceptChanges提交全部修改後的數據,如:

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

     dataGrid.datagrid('acceptChanges');

四、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

一、調試時,點擊下一步,出現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

相關文章
相關標籤/搜索