java基础笔记

String.split(".")为null问题

“.”是正则表达式里面的关键字,因此这里会出错。
解决方法:用StringTokenizer替换
java.util.StringTokenizer token = new java.util.StringTokenizer(String,".");
token.nextToken()

获取3位数字,前面补零

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. int youNumber = 1;        
  2.  // 0 代表前面补充0        
  3.  // 3 代表长度为3        
  4.  // d 代表参数为正数型        
  5.  String str = String.format("%03d", youNumber);        
  6.  System.out.println(str); // 0001    
[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <h2>数字格式化</h2><p>java.text.NumberFormat</p><p>示例:</p><p>NumberFormat NumFmt = NumberFormat.getInstance();</p><p>NumFmt.setMaximumFractionDigits(0);</p><p>NumFmt.setMinimumIntegerDigits(2);</p><p>System.<span style="color:rgb(0,0,192);">out</span>.println(NumFmt.format(80934.234));<span style="color:rgb(63,127,95);">//80,934</span></p>  

将前台JSON对象发送给后台

页面js:

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. XControl.ruleGroup.rules = {  
  2.         id:4,  
  3.         officeId:"can911",  
  4.         airCode:"cx",  
  5.         channels:[{  
  6.             channel: 'User list',  
  7.         groupId: 4,  
  8.         rules: [  
  9.         {id: 1, channel: 'Anne'},  
  10.         {id: 2, channel: 'Amelie'}  
  11.     ]},{  
  12.         channel: 'User list',  
  13.         groupId: 4,  
  14.         rules: [  
  15.         {id: 1, channel: 'Anne'},  
  16.         {id: 2, channel: 'Amelie'}  
  17.     ]}]};  
  18.   
  19. //将JSON数组格式化,这一步是必要的  
  20.   
  21. var xControlVO = JSON.stringify(XControl.ruleGroup.rules);  
  22.     //特殊符号保存不了问题  
  23.     var result = "";  
  24.     for(var i=0;i<xControlVO.length;i++){  
  25.         if(xControlVO.charAt(i)=="+"){  
  26.             result += "%20";  
  27.         }else if(xControlVO.charAt(i)=="/"){  
  28.             result += "%2F";  
  29.         }else if(xControlVO.charAt(i)=="?"){  
  30.             result += "%3F";  
  31.         }else if(xControlVO.charAt(i)=="%"){  
  32.             result += "%25";  
  33.         }else if(xControlVO.charAt(i)=="#"){  
  34.             result += "%23";  
  35.         }else if(xControlVO.charAt(i)=="&"){  
  36.             result += "%26";  
  37.         }else{  
  38.             result += xControlVO.charAt(i);  
  39.         };  
  40.     }   
  41. //发送post请求  
  42. $.post("/iControl/Control/xControl/saveOrUpdate.action", { xControlVO:xControlVO }, function (data) {    
  43.             alert(data);    
  44.         });    

后台:

利用jackson的ObjectMapper实现对象的转化

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @Write(type = WriteType.JSON)  
  2.     @Action(value = "saveOrUpdate")  
  3.     public JSONObject saveOrUpdate(@Params(key="xControlVO") String xControlVO){  
  4.         try {  
  5.             ObjectMapper mapper = new ObjectMapper();    
  6.             XControlVO vo = mapper.readValue(xControlVO,XControlVO.class);//转成map    
  7.             xControlService.saveORupdate(vo);  
  8.         }  
  9.         catch (Exception e) {  
  10.             e.printStackTrace();  
  11.         }  
  12.         return null;  
  13.     }  

js判断值是不是undefined

if (typeof(reValue) == "undefined") {
   alert("undefined");
}

js克隆数组和对象

/**
 * 克隆数组
 */
Utils.cloneArray = function(arrayObj) {
    var array = new Array();
    for (var i = 0, l = arrayObj.length; i < l; i++) {
        array.push(Utils.cloneObj(arrayObj[i]));
    }
    return array;
}

/**
 * 克隆对象
 */
Utils.cloneObj = function (obj) {
    var objClone = null;
    if (obj.constructor == Object) {
        objClone = new obj.constructor();
    }else {
        objClone = new obj.constructor(obj.valueOf());
    }
    for (var key in obj) {
        if (objClone[key] != obj[key]) {
            if (typeof (obj[key]) == 'object') {
                if (obj[key] instanceof Array) {
                    objClone[key] = Utils.cloneArray(obj[key]);
                }else{
                    objClone[key] = Utils.cloneObj(obj[key]);
                }
            }else {
                objClone[key] = obj[key];
            }
        }
    }
    objClone.toString = obj.toString;
    objClone.valueOf = obj.valueOf;
    return objClone;
}


监听Ctrl键按下释放:

$("body").keydown(function (event1) {
        try {
            var key = event1.which;
            if (key == 17) {
              //todo
            }
        }catch(err){}
    });
    $("body").bind('keyup',function (event) {
        try {
            var key = event.which;
            if (key == 17) {
                //todo
            }
        }catch(err){}
    });


1Oracle时间数据保存,后天看到只保存年月日,没有日分秒,因此排序的时候不能准确排序

解决:

1.1 数据库将该字段格式改为TimeStamp类型

1.2 @Temporal(TemporalType.TIMESTAMP)  

@Column(name = "LAST_MODIFIED_TIME", length = 7)

public Date getLastModifiedTime() {

return this.lastModifiedTime;

}

 

public void setLastModifiedTime(Date lastModifiedTime) {

this.lastModifiedTime = lastModifiedTime;

}

2String key=””; //拼接失败,此字符串为空或者空白不能拼接

for(String city:citys){

key.concat(city);

}

for(String date:dates){

key.concat(date);

}

key = key.concat(airCompany);

修改为:

StringBuffer sbf = new StringBuffer();// 拼接qte缓存的key

for (String tempCity : citys) {

sbf.append(tempCity);

}

for (String tempDate : dates) {

sbf.append(tempDate);

}

String key = sbf.toString();

key = key.concat(airCompany);

3、查询结果大小

BigDecimal rowCount = (BigDecimal) query.uniqueResult();

return rowCount.intValue();

代替:int size = query.list().size();

return size;

3、存储过程操作

public Long copyAirline(Long airLineId) {

Connection conn=null;

CallableStatement cstmt=null;

try {

JdbcTemplate jdbcTemplate=this.getJdbcTemplate();

conn=jdbcTemplate.getDataSource().getConnection();

String spName="{call sp_copy_policy_airline(?,?)}";  

cstmt=conn.prepareCall(spName);  

cstmt.setLong(1, airLineId);

cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.NUMBER);

cstmt.execute();

return cstmt.getLong(2);

} catch (Exception e) {

e.printStackTrace();

log.error(e, e);

}finally{

try {

if(conn!=null){

conn.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

return null;

}

存储SQL,复制存储过程思想,先将需要复制的数据copy到临时表,更新临时表的主键、外键及需要更新的信息,再将临时表数据插入原始表

create or replace 

procedure sp_copy_policy_airline(airlineid in number,newairlineid out number) is

  v_airlineid number;

Begin

  v_airlineid :=SEQ_POLICY_AIRLINES.NEXTVAL;序列的下一个值

  insert into IFL_POLICY_AIRLINES_COPY (select G.*,v_airlineid from IFL_POLICY_AIRLINES G where G.POLICY_AIRLINE_ID = airlineid);

  commit;

 --更新各表外键

  update IFL_POLICY_AIR_PARTS_COPY COPYH set policy_airline_id = (select newId from IFL_POLICY_AIRLINES_COPY COPYG where COPYH.policy_airline_id =COPYG.policy_airline_id and rownum <= 1);  

--更新各表主键

  update IFL_POLICY_AIR_PARTS_COPY set AIR_PART_ID = newId;

--将复制表中的信息插入到原始表

  insert into IFL_POLICY_AIRLINES (POLICY_AIRLINE_ID,AIRLINE_CODE,POLICY_ID,TAKEOFF_AIRPORTS,ARRIVE_AIRPORTS,FROM_IS_OJ,TO_IS_OJ,TIME_OFFSET,TCODE,

    CLAUSE_ID,CLAUSE_CODE,ALLOW_STOPOVERS,STOPOVERS_TYPE,ALLOW_FLIGHT,NOT_ALLOW_FLIGHT,ALLOW_SHARE_FLIGHT,IS_MARRIAGE,GO_STOPOVERS_TIME,GO_STOPOVERS_FEES,

    GO_STOPOVERS_FEES_UNIT,GO_FREE_STOPOVERS_TIME,BACK_STOPOVERS_TIME,BACK_STOPOVERS_FEES,BACK_STOPOVERS_FEES_UNIT,BACK_FREE_STOPOVERS_TIME,GO_ALLOW_TIME,

    BACK_ALLOW_TIME,GO_NOT_ALLOW_TIME,BACK_NOT_ALLOW_TIME,TAKEOFF_AREA_TYPE,ARRIVE_AREA_TYPE,START_POINT_CODE,FINISH_POINT_CODE,AIRLINETYPE)

    select POLICY_AIRLINE_ID,AIRLINE_CODE,POLICY_ID,TAKEOFF_AIRPORTS,ARRIVE_AIRPORTS,FROM_IS_OJ,TO_IS_OJ,TIME_OFFSET,TCODE,CLAUSE_ID,CLAUSE_CODE,

    ALLOW_STOPOVERS,STOPOVERS_TYPE,ALLOW_FLIGHT,NOT_ALLOW_FLIGHT,ALLOW_SHARE_FLIGHT,IS_MARRIAGE,GO_STOPOVERS_TIME,GO_STOPOVERS_FEES,GO_STOPOVERS_FEES_UNIT,

    GO_FREE_STOPOVERS_TIME,BACK_STOPOVERS_TIME,BACK_STOPOVERS_FEES,BACK_STOPOVERS_FEES_UNIT,BACK_FREE_STOPOVERS_TIME,GO_ALLOW_TIME,BACK_ALLOW_TIME,

GO_NOT_ALLOW_TIME,BACK_NOT_ALLOW_TIME,TAKEOFF_AREA_TYPE,ARRIVE_AREA_TYPE,START_POINT_CODE,FINISH_POINT_CODE,AIRLINETYPE from IFL_POLICY_AIRLINES_COPY;

update IFL_POLICY_FILES D set LAST_MODIFIED_TIME = SYSDATE() where D.policy_Id = (select G.policy_Id from IFL_POLICY_AIRLINES G where G.policy_airline_id = airlineid);

newairlineid := v_airlineid;

commit;

DELETE FROM IFL_POLICY_AIRLINES_COPY;

commit;

end;

4Oracle 正则表达式函数-REGEXP_REPLACE

需要替换掉数据库LIMITE_INFORMATION字段字符串中的owPriceSource的值

{"stayTime1":"","stayTime2":"","owPriceSource":"1520","rtPriceSource":"2600"}

update IFL_POLICY_BUNKS set LIMITE_INFORMATION = regexp_replace(LIMITE_INFORMATION,'"owPriceSource"\s*:\s*"([^\\"]|[\\]["]|([\\][\\]))*"','"owPriceSource":"1234"') where POLICY_BUNK_ID in (:POLICY_BUNK_ID_PARAM)

解决session超时操作有误问题,设置成返回登录页面

//302表示session超时,退回登陆页面
$.ajaxSetup({complete:function(xhr,textStatus){
if (xhr.status == 302) {
window.open(xhr.getResponseHeader("Location"));
}
}});

表单内容重复保存问题

<form id="priceId" method="post">
initEvent:function(){
   $("#priceId"). change (function() {
     $("#priceId").data('changed', true);//from有修改,将状态设成true
    });
}
if($("#priceId").data('changed')){

结束日期大于开始日期验证问题

endDate : {
validator : function(val, param) {
var startDate = $(param[0]).val();
var endDate = $(param[1]).val();
var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;  //日期验证
if(reg.test(endDate)){
endDate = endDate.replace("-", "");
endDate = endDate.replace("-", "");
startDate = startDate.replace("-", "");
startDate = startDate.replace("-", "");
return parseInt(endDate) >= parseInt(startDate);
}else return false;
},
message : "格式不正确、结束日期应应>=开始日期"
},

复制页面不能弹出窗口

var newwindow=window.open("about:blank");//先打开一个空白页,在填充
$.getJSON("/iPolicy/policy/extrapart/saveCopyExtraPartById.action",{extraPartId:selectedId},function(data){
policyTable.reload();
selectedId = data.id;
var url = "edit.html?extraPartId=" + selectedId+"&title=f";
newwindow.location.href=url;
                       newwindow.focus();
                       return false;
   });  

防止表单重复提交,思想:提交的时候放入变量,成功的时候去除

success : function(data) {
$this.data("submiting",false); 
if (options.onsuccess) {
options.onsuccess(data);
}
}
$this.submit(function() {
if($this.data("submiting")){
return false;
}

$this.data("submiting",true);
}

文本框或输入框细节,鼠标离开显示”审核通过“,点击消失

 onFocus="if(this.value=='审核通过'){this.value=''}"  

 onBlur="if(this.value==''){this.value='审核通过''}"

列表字段过长,隐藏过长部分,鼠标经过显示全部

startAreaCode=startAreaCode.length>20?startAreaCode.substring(0,20)+"...":startAreaCode;
 "<td title='"+titleEndAreaCode+"'>到达地:"+endAreaCode+"</td>"


原创:http://blog.csdn.net/kuyuyingzi/article/details/28100617

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值