個人筆記 -- 勿入
雜記
個人日常開發遇到的問題,記憶力不好沒辦法,記錄以防再次遇到。
Spring&Springmvc
日常開發Spring&Springmvc遇到的問題。(腦子記不住沒辦法)
SpringMVC怎麼獲取前臺傳來的陣列
- 前臺頁面 JS
var ids = new Array();
ids.push(1);
ids.push(2);
$.ajax({
url : "xxx/xxx"
type : "post",
data : {"ids" : ids},
dataType : "josn",
success : function () {
...
}
});
- Spingmvc 後臺 controller 接收
@RequestMapping(value = "xxx")
@ResponseBody
public XXX xxx(@RequestParam("ids[]") List<Integer> ids) {
...
}
二維碼
輸出到頁面
頁面
<img src="xxxx/getQRcode" .../>
後臺
@RequestMapping(value = "getQRcode")
public void getQRcode (HttpServletResponse response, String code) {
response.setHeader("Content-Type", "image/jpeg");
byte[] img = null;
try {
if(StringUtils.isNotBlank(code)) {
// 生成二維碼
img = qRCodeUtilService.createQrImage(code, PathConstants.QR_LOGO);
}
response.getOutputStream().write(img);
response.flushBuffer();
} catch (Exception e) {
logger.error("create QRcode fail -- params : code={}", code, e);
}
}
JS
日常開發常用js
Checkbox 全選&全不選&全選判斷
<input type="checkbox" id="check_all">
<input type="checkbox" class="checkbox">
<input type="checkbox" class="checkbox">
<script>
//全選與全不選
var checkAll = function(obj) {
if($(obj).attr('checked')){
$('input[type=checkbox]').attr('checked','true');
} else {
$('input[type=checkbox]').removeAttr("checked");
}
};
$(function(){
//表格中單個checkbox點選事件
$('.checkbox').click(function(){
if(!$(this).attr('checked')) {
$('#check_all').removeAttr("checked");
} else {
var checks = $('.checkbox');
var flag = true;
for(var i = 0; i < checks.length ; i++){
if(checks[i].checked != true){
flag = false;
}
}
if(flag) {
console.log(true);
$('#check_all').attr("checked","true");
} else {
console.log(false);
$('#check_all').removeAttr("checked");
}
}
});
}
</script>
時間有效性校驗
作用:提高時間校驗嚴謹性。
正確的時間格式(yyyy-MM-dd HH:mm:ss): 2015-12-30 11:25:00
錯誤的時間格式:2015-12-33 11:25:00 、2015-13-30 11:25:00 、2015-12-30 25:25:00
//| 日期時間有效性檢查
//| 格式為:YYYYMMDDHHMMSS
var checkDateTime = function (str){
console.log(str);
var reg = /^(\d{4})(\d{1,2})(\d{1,2})(\d{1,2})(\d{1,2})(\d{1,2})$/;
//| 格式為:yyyy-MM-dd HH:mm:ss 時
//| var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})\s(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null) return false;
r[2]=r[2]-1;
var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);
if(d.getFullYear()!=r[1]) return false;
if(d.getMonth()!=r[2]) return false;
if(d.getDate()!=r[3]) return false;
if(d.getHours()!=r[4]) return false;
if(d.getMinutes()!=r[5]) return false;
if(d.getSeconds()!=r[6]) return false;
return true;
}
時間格式化
作用: 格式化時間,針對js輸出類似
2015-12-30T11:42:00
這樣的時間格式。
/**
* 格式化日期
* Y 年
* M 月
* d 日
* h 小時
* m 分
* s 秒
* S 毫秒
* @param format 格式化日期字串
* @eg:YYYY年MM月dd日 HH:mm:ss return 2014年12月21日 15:40:18
*/
common.dateFormat = function(dateObj, format) {
var o = {
"M+": dateObj.getMonth() + 1,
//month
"d+": dateObj.getDate(),
//day
"H+": dateObj.getHours(),
//hour
"m+": dateObj.getMinutes(),
//minute
"s+": dateObj.getSeconds(),
//second
"q+": Math.floor((dateObj.getMonth() + 3) / 3),
//quarter
"S": dateObj.getMilliseconds() //millisecond
}
if (/(Y+)/.test(format)) {
format = format.replace(RegExp.$1, (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}
郵箱驗證正則
var pattern = /^([\.a-zA-Z0-9_-])[email protected]([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
手機號碼正則
/**
* 支援號碼段:
* 移動:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
* 聯通:130、131、132、152、155、156、185、186
* 電信:133、153、180、189、(1349衛通)
* 京東、阿里、小米:170、(177 待確認)
*/
var pattern = /^(((13[0-9])|(15[^4,\\D])|(18[0,5-9])|(170))+\d{8})$/;
console – IE 中無法使用
我們一般都會使用 console.log() 列印一些除錯資訊到控制檯,但是在 IE 瀏覽其中,console是無法使用的,在測試、上線時需要刪除。
檢驗連結是否有效
檢驗頁面輸入的連結是否有效(是否可以訪問),IE 瀏覽器可以使用 ActiveObject 進行檢查,但是其他瀏覽器不行,這裡使用簡單粗暴的 ajax 返回狀態進行檢測。
function NetPing(url) {
var flag = false;
$.ajax({
type : "GET",
async : false,
cache : false,
url : url,
complete: function(response) {
if(response.status == 200) {
flag = true;
}
}
});
return flag;
}
Ajax下不能使用$(this)
ajax 下是不能使用$(this)的,這種情況,可以在 ajax 的外面定義一個變數代替,但是注意不能使用關鍵字
this
。
function Xxx(){
var myThis = $(this);
$.ajax({
...
myThis.Xxx();
})
}
.find()選擇器
.find()
選擇器,返回的是一個列表,不能像css選擇器$('.xxx')
一樣操作物件, 但是可以獲取html等內容。
$(this).find('.xxx').html(); -- [ok]
$(this).find('.xxx').empty(); -- [no][但也不會報錯]
$(this).find('.xxx').append(); -- [no][但也不會報錯]
$(this).find('.xxx').html('xxx'); -- [no][但也不會報錯]
如果需要執行
append
、empty
等操作,可以使用.first()
或者.find('.xxx:first-child')
找到對應的元素。
$(this).find('.xxx').first().empty();
ajax 非同步載入內容的動態監聽
$(function(){
$('xxx').click(function(){
$.ajax({
...
success : function(data){
...
$('xxx').append('<a>非同步載入內容</a>');
...
}
});
});
// 連結點選事件
$('a').click(function(){
...
});
});
上述情況下,非同步載入的內容,無法觸發定義的連結點選事件,定義一個監聽即可,並在ajax載入時呼叫即可。
$(function(){
...
success : function(data){
...
$('xxx').append('<a>非同步載入內容</a>');
aClickListener();
}
...
});
function aClickListener() {
// 連結點選事件
$('a').click(function(){
...
});
}
JQuery 構建form
function buildForm(){
var buildForm = $('<form></form>');
buildForm.attr('action', 'xxx.xxx.xxx');
buildForm.attr('target', '_blank');
buildForm.attr('method', 'POST');
var input_id = $('<input type="text" name="id">');
input_id.attr('value', 1);
buildForm.append(input_id);
buildForm.submit();
}
MySql
add … after
在某個欄位之後新增欄位
alter table `xxxDB`.`xxxtable` add `name` varchar(48) default null comment '名稱' after `id`;
modify
修改
alter table `xxxDB`.`xxxtable` modify `name` varchar(56) default null comment '名稱';
多欄位排序
-- 多個欄位
select * from table order by (case1, case2);
-- 多個欄位的和
select * from table order by (case1 + case2);
-- 多個欄位的差
select * from table order by (case1 - case2);
freemarker
html 轉義
<#escape x as x?html>
...
<#noescape>
...
</#noescape>
...
</#escape>
被
<#escape x as x?html></#escape>
的部分,後臺傳入的內容都會作為字串輸出,但是特定的情況下,我們需要輸出html時,可以使用<#noescape>內容</#noescape>
包含輸出。這樣就能按照html的規範轉換對應的連結、按鈕、圖片,而不是一串帶標籤的字串。
<#escape x as x?html>
...
<#noescape>
${(content)!}
<#-- 未轉義的內容 <p><img src="xxx"></p> -->
</#noescape>
${(content)!}
<#-- 轉義之後的內容 "<p><img src="xxx"></p>" (帶雙引號的字串,不會被html識別)-->
</#escape>
javabean boolean 型別判斷
--現象
-- javabean
public class Xxx {
private Boolean isFlag;
...
public Boolean isFlag(){
return this.isFlag;
}
...
}
-- freemarker .ftl 頁面
...
<#if Xxx.isFlag>
...
</#if>
...
--------------------
這種情況下,開啟頁面直接報錯
原因: freemarker 讀取
Xxx.isFlag
時,找不到對應的get()方法。
解決方案:將javabean的isFlag()
改成getIsFlag()
。
public class Xxx {
private Boolean isFlag;
...
public Boolean getIsFlag(){
return this.isFlag;
}
...
}
相關推薦
個人筆記 -- 勿入
雜記 個人日常開發遇到的問題,記憶力不好沒辦法,記錄以防再次遇到。 Spring&Springmvc 日常開發Spring&Springmvc遇到的
Solr學習筆記——導入JSON數據
管理 app 可能 pen ges nali fromfile mit print 1.導入JSON數據的方式有兩種,一種是在web管理界面中導入,另一種是使用curl命令來導入 curl http://localhost:8983/solr/baikeperson/up
laravel框架的個人筆記
laravel框架的個人筆記具體安裝環境可更具最新版本的文檔來,一下內容 只是我代碼的一些操作demo ,是對文檔進行的個人筆記;//路由命名Route::get(‘admin‘,[‘as‘=>‘profile‘,function(){ echo route(‘profile‘); re
saltstack自動化運維工具搭建個人筆記
技術分享 install size 為什麽 數據 font status 程序包 -c 至於為什麽選擇saltstack,因為Puppet、Chef基於Ruby開發,而ansible、saltstack基於python開發,便於後期二次,良好的可移植性。 又,ansible
【個人筆記】《知了堂》MySQL中的數據類型
屬性 med mysql 表示 time align mes fault key MySQL中的數據類型 1、整型 MySQL數據類型 含義(有符號) tinyint(m) 1個字節 範圍(-128~127) smallint(m)
MSDN 同步部分 個人筆記
終端 數值 通信 滿足 exec 英語 關於 ini ddr (在知乎看到輪子哥說,掌握了MSDN上的並發部分 和 線程與進程部分就可以掌握所有語言的多線程編程,我在網上翻了一下並沒有中文版,所以決定自己翻譯一下...) 目錄: 線程之間協同運行的方式有許多種,下面所述的函
flask個人筆記
mit 定義 clas 4.4 返回 設置 ati 列表 cal 1 flaskORM模型 1.1 pip install flask_sqlalchemy 1.2 flask_sqlachemy配置 MySQL - mysql://username:password@h
redis個人筆記
png syn 但是 結束 依賴 命令 bubuko post 啟用 一、開啟、關閉redis /etc/init.d/redis-server restart //重啟/etc/init.d/redis-server stop //關閉/etc/init.d/redi
個人筆記--->服務器篇
反向 his 緩存 group tor cer shu nag 無法解析 day 01環境: PC: eth0:192.168.4.100 代理: eth0:192.168.4.5 eth1:192.168.2.5
個人筆記---->mysql數據庫基本操作
stop root 表結構 nbsp my.cnf 個人筆記 設置 eat 使用 mysql數據庫服務操作 # systemctl start mysqld //啟動 # systemctl stop mysqld //停止 # systemctl res
javascript的發展及個人筆記
custom 它的 支持 解決 定義 bsp 連接 {} eve Node.js是一個Javascript運行環境(runtime),發布於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js對一些特殊用例進行優化,
.Net MVC個人筆記
log 方法 兩個 on() res 比較 fun 代碼 color 關於轉向的問題,目前知道的是Response.Redirect 和 location.href 我現在有兩個controller,Home和Test <h2>this is
python控制結構、叠代器和生成器(個人筆記)
if while參考:https://docs.python.org/2.7/reference/compound_stmts.html#whilehttps://www.cnblogs.com/lclq/p/5586198.html (python的運算與表達式)https://www.zhihu.com/
彈性盒子的梳理 (個人筆記)
只有一個 數字 tween nts strong www 進行 前行 倒序 1.誰是彈性盒,誰寫(一般是父元素)Display:box 如果不兼容寫:display:-moz-box Display:-webkit-box; Display:-o-box;
《數學之美》——第二章 個人筆記
term spa 高級 程序 chm 出現 信息 ont 飛機 第二章 自然語言處理——從規則到統計 這一章開頭這句話:字母,文字,數字是信息編碼的不同單位。任何一種語言都是一種編碼的方式,而語言的語法規則是編解碼的算法。我們表達一個意思要通過語言表達出來,就是用
《數學之美》——第一章 個人筆記
沒有 歧義 移動互聯網 style 情況 組成 進制 LV 讓我 數學之美 第一章 文字和語言 vs 數字和信息 1 信息 通信的原理就是這三個步驟,本質上是一致的,只不過今天的實現形態發生了變化。更技
《數學之美》——第五章 個人筆記
strong == 概率 上下 很多 alt 就是 相關 分享圖片 第五章 隱含馬爾可夫模型 1 通信模型 通信的本質是一個編解碼和傳輸的過程。 典型的通信系統: 包含雅格布森通信的六個要素:發送者(信息源),信道,接收者,信息,上下文和編碼。 其中S1,S2,S
RN個人筆記SectionListView
reac item mage wid native 個人筆記 enter btn OS import React, { Component } from ‘react‘; import { AppRegistry, StyleSheet, Tex
個人筆記--內存可見性和原子變量
ati 方法 發包 加鎖 lag 速度 簡單的 tac png jdk1.6以後提供了java並發包。 volatile與內存可見性: 例子: 結果: 結論: main()線程讀取到的td.isFlag並不是true。 這就涉及到了內存可見性問題。 具體原因: 重
個人筆記--多線程(鎖)
同步機制 由於 筆記 ted 名詞 string href 同步塊 重復執行 死鎖:就是同步方法中有同步代碼塊,或反之。 例子: public class DeadLock { public static String obj1 = "obj1"; pub