JavaWeb开发笔记(2016年)
@copyright 版权声明:本文为原创文章,未经允许不得转载。
一.2016/02/26
1.html页面让输入框只能输入数字和小数点
a 限制文本框只能输入正数,负数,小数 onkeyup="value=value.replace(/[^\-?\d.]/g,'')"
b 限制文本框只能输入正数,小数 onkeyup="value=value.replace(/[^\d.]/g,'')"
input标签为:<input maxlength="5" type="text" onkeyup="value=value.replace(/[^\-?\d.]/g,'')" id="eg" name="eg" >,其实就是用正则表达式进行验证。
c 文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
2.freemarker格式化
① 格式化日期
${updated?string("yyyy-MM-dd HH:mm:ss")}
如果指定的变量不一定存在,可以这样:
${(dateMap.beginTime?string("yyyy.MM.dd"))!''}
② 显示boolean值
<#assignfoo=true>
${foo?string("yes", "no")}
</#assign>
③ 截取字符串长度
<#if(userVO.cnname)?? && ((userVO.cnname)?length >10)>
${userVO.cnname?substring(0,10)}
<#else>
${(userVO.cnname)!''}
</#if>
④ 数字格式
freemarker中预订义了三种数字格式:number,currency(货币)和percent(百分比)其中number为默认的数字格式转换
例如:
<#assigntempNum=20>
${tempNum}
${tempNum?string.number}或${tempNum?string("number")} 结果为20
${tempNum?string.currency}或${tempNum?string("currency")} 结果为¥20.00
${tempNum?string. percent}或${tempNum?string("percent")} 结果为2,000%
</#assign>
二.2016/03/04
1.mybatis中的#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
2. $将传入的数据直接显示生成在sql中。
3. #方式能够很大程度防止sql注入,$方式无法防止Sql注入。
5. $方式一般用于传入数据库对象,例如传入表名。
6. 一般能用#的就别用$。
三.2016/03/08
1.JQuery弹出层插件
1.jGrowl
jGrowl用于制作消息弹出框的jQuery插件。产生效果的类似于Mac OSX系统中Growl事件通知框架。
使用时需要导入两个包:
a. jquery.jgrowl.min.css
b. jquery.jgrowl.min.js
2.layer
layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。
在与同类组件的比较中,layer总是能轻易获胜。她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升、易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer(已被2433089人次关注)。layer兼容了包括IE6在内的所有主流浏览器。 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,广受欢迎。当然,这种“王婆卖瓜”的陈述听起来总是有点难受,因此你需要进一步了解她是否真的如你所愿。layer遵循LGPL协议,将永久性提供无偿服务。
四.2016/03/18
1.mysql 获取当前日期及格式化(DATE_FORMAT(date,format))
DATE_FORMAT(date,format)
根据format 字符串安排date 值的格式。
以下说明符可用在 format 字符串中:
说明符 | 说明 |
%a | 工作日的缩写名称 (Sun..Sat) |
%b | 月份的缩写名称 (Jan..Dec) |
%c | 月份,数字形式(0..12) |
%D | 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...) |
%d | 该月日期, 数字形式 (00..31) |
%e | 该月日期, 数字形式(0..31) |
%f | 微秒 (000000..999999) |
%H | 小时(00..23) |
%h | 小时(01..12) |
%I | 小时 (01..12) |
%i | 分钟,数字形式 (00..59) |
%j | 一年中的天数 (001..366) |
%k | 小时 (0..23) |
%l | 小时 (1..12) |
%M | 月份名称 (January..December) |
%m | 月份, 数字形式 (00..12) |
%p | 上午(AM)或下午( PM) |
%r | 时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM) |
%S | 秒 (00..59) |
%s | 秒 (00..59) |
%T | 时间 , 24小时制 (小时hh:分钟mm:秒数ss) |
%U | 周 (00..53), 其中周日为每周的第一天 |
%u | 周 (00..53), 其中周一为每周的第一天 |
%V | 周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用 |
%v | 周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用 |
%W | 工作日名称 (周日..周六) |
%w | 一周中的每日 (0=周日..6=周六) |
%X | 该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用 |
%x | 该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用 |
%Y | 年份, 数字形式,4位数 |
%y | 年份, 数字形式 (2位数) |
%% | ‘%’文字字符 |
所有其它字符都被复制到结果中,无需作出解释。
注意,‘%’字符要求在格式指定符之前。
月份和日期说明符的范围从零开始,原因是 MySQL允许存储诸如 '2004-00-00'的不完全日期。
五.2016/03/22
1.freemarker截取指定长度字符串
<#if item.content?length lt 20>
${item.content}
<#else>
${item.content[0..19]}...
</#if>
判断item.content的长度是否小于20,如果长度小于20则全部显示,否则只显示前20个字符,后面的用...代替。
备注:大于 gt
小于 lt
大于等于 gte
小于等于 lte
六.2016/04/13
1.a标签href="#"这个在html中的作用
跳转到本页面顶部,一般建议写成javascript:void(0);要好一点,点了一点反应都没有,写#点了会跳一下的。
七.2016/08/29
1.input的value发生改变时触发事件
$(selector).bind("input change propertychange",function(event) {
if (event.type != "propertychange" || event.originalEvent.propertyName == "value") {
// 触发事件后要做的具体事情
}
});
这样做,input不用失去焦点才触发,只要value发生改变立刻触发事件。
八.2016/08/31
1.通过select的text来选中对应的option
Html代码:
<label class="col-sm-1 control-label" for="idcard_type">证件类型</label>
<div class="col-sm-2 clp-left">
<select class="form-control input-sm" name="idcard_type" id="idcard_type">
<option value="1">身份证</option>
<option value="2">军官证</option>
</select>
</div>
Jquery代码:
<script>
$(function() {
$("#idcard_type option").each(function() {
if ($(this).text() =="身份证") {
$(this).attr("selected",true);
}
});
});
</script>
九.2016/09/02
1.js 页面刷新location.reload和location.replace的区别
reload 方法,该方法强迫浏览器刷新当前页面。
语法: location.reload([bForceGet])
参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新")
replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
语法: location.replace(URL)
在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method="post"的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href)
replace函数在设置URL方面与location的href属性或assign函数完全一样,但是它会删除history对象的地址列表中的URL,从而使go或back等函数无法导航。
十.2016/09/06
1.form表单标签被disabled掉后用$("#formId").serialize()取值问题
如果form里的表单标签被disabled掉了$("#formId").serialize()取不到值,disabled状态下是不能传值的,只能在取值的瞬间将他们disabled属性remove掉,取完后再还原,这里列举两种方式:
- 第一种方式
//提交时将禁用的控件激活
$("#formId *:disabled").attr("disabled",false);
//提交后将激活的控件激活禁用
$("#formId *:enabled").attr("disabled",true);
- 第二种方式
//提交时将禁用的控件激活,用一个数组保存当前被enable的控件Id
var widgets=new Array();
$("#formId *:disabled").each(function(){
this.disabled=false;
widgets.push(this.id);
});
//在数组中取出Id,把被enable的控件disabled
for (x in widgets){
$("#"+widgets[x]).attr("disabled",true);
}
十一.2016/12/05
1.屏蔽页面鼠标右键、拖动效果、选中效果
oncontextmenu="window.event.returnValue=false;"
ondragstart="window.event.returnValue=false;"
onselectstart="event.returnValue=false;"
例如:<body id="content" ondragstart="window.event.returnValue=false;" oncontextmenu="window.event.returnValue=false;" onselectstart="event.returnValue=false;" ></body>
2.jQuery选择器中的通配符使用
$("input[id^='code']");//id属性以code开始的所有input标签
$("input[id$='code']");//id属性以code结束的所有input标签
$("input[id*='code']");//id属性包含code的所有input标签