开发小记

开发小记

禁止页面滚动
js

document.body.style.overflow='hidden';

jquery

$('body').css('overflow','hidden');

监听input的输入事件

// propertychange 事件是针对ie浏览器的,要放到input事件前面     
$('#boardlot_num').on('propertychange input',function(){
    // do something
}

绑定input事件的时候我发现以前用的autoNumerbic 跟它 会有冲突:

chrome 和 firefox 支持input事件,绑定autoNumberic插件后,自定义的input事件失效

于是我做了一点关于input限制输入纯数字的解决方案:
html代码 :

  

js代码:

$('#boardlot_num').on('propertychange input',function(){
        var value = $(this).val(), preValue = $(this).data('pre');
        if(/^\d*$/.test(value)){
            // do something
            $('#boardlot_num').data('pre',value);
        }else{
            $('#boardlot_num').val(preValue);
        }
});
// 兼容chrome firefox ie8 亲测有效

按List中的对象的属性排序

// 查询list      
List ogSigns = mallProductTeambattleSignupServ.list(propsSignup, 1, 8, null);     
// 初始化比较器,比较器的泛型为list的泛型     
Comparator comparator = new Comparator() {   
    @Override   
    public int compare(MallProductTeambattleSignup o1, MallProductTeambattleSignup o2) {    
        // 按count属性按降序排    
        return o2.getCount() - o1.getCount();     
    }    
};     
// 调用Colloctions接口对list排序      
Collections.sort(ogSigns, comparator);     

Git 配置 path
配置 ...\Git\bin 和 Git\libexec\git-core

sql执行顺序

  1. from子句组装来自不同数据源的数据;
  2. where子句基于指定的条件对记录行进行筛选;
  3. group by子句将数据划分为多个分组;
  4. 使用聚集函数进行计算;
  5. 使用having子句筛选分组;
  6. 计算所有的表达式;
  7. 使用order by对结果集进行排序
(8)SELECT (9)DISTINCT 
(11)  
(1)FROM  
(3) JOIN  
(2)ON  
(4)WHERE  
(5)GROUP BY  
(6)WITH {CUBE ROLLUP} 
(7)HAVING  
(10)ORDER BY  

打乱一个list的顺序
应用场景:
我要做援购的随机取援购码,但他们在数据库中是数据存在的,于是乎,有多种方法:乱序存顺序遍历顺序存乱序遍历等等。
这里利用了一个小技巧,顺序存,读取之后打乱,再顺序取,基本代码如下:

List unusedCodes = xxx.list(****);
// shuffle 是 洗牌的意思
java.util.Collections.shuffle(unusedCodes);

// 遍历,不赘述      
for(...){
  // TODO ...
}

java基础真的很重要。这道题当作是一道面试题都行。

js 获取url参数

var mycode = window.location.search.substr(1).split("&")[0];           
mycode = mycode.split('=')[1];

数据库类型用的date类型非datetime类型报batch_update错误
RT

mysql group_concat() 陷阱
mysql配置group_concat()函数最长可接收1024长度,对于某些情景下这个长度是不够的。

查询语句:

SELECT @@global.group_concat_max_len;

修改语句:

-- 大小请自行斟酌
SET GLOBAL group_concat_max_len=102400;

也可以在文件(my.ini)中后边追加这一句:

group_concat_max_len = 102400   

注:我用的mysql是5.6.20,文件在C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

关于hql查询和sql查询
hql查询用user_iduserId这两种形式都好使(前提是po用的userId形式,dao层用getCurrentSession,如果用openSession是无效的)

关于转义
经过我这段时间的观察,有以下几个地方会出问题:

  • 后台拼接html返回页面。对于开放输入的内容要用StrUtil.escapeHtml()方法或者StrUtil.textarea2Html()等方法。
  • 前台jsp中的el表达式,如${user.nickname},改成struts标签形式
  • 前台ajax返回数据时进行处理,如$('#nickname').text(data.nickname),改为$('#nickname').text($('
    ').text(data.nickname).html()) 

如果还有其他情况会继续补充

The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory异常
这个异常是servlet执行service方法时报的错,多半是jdk、tomcat和web.xml之间不匹配出现的。tomcat8中servlet-api.jar改了很多,在svn项目检出时,j2ee版本不要定太高,目前意思网的是2.5,tomcat8的标准是3.1,但我不建议到3.1,容易出现servlet的bug
网友解答:

Get rid of any servletcontainer-specific libraries such as jsp-api.jar in your /WEB-INF/lib folder. This exception indicates that you've put servletcontainer-specific libraries of a container which supports only Servlet 2.4 / JSP 2.0 or older in there (the getJspApplicationContext() method was introduced in Servlet 2.5 / JSP 2.1). This is a major mistake. Those libraries don't belong in the webapp's classpath.

Perhaps you did this to overcome project compilation errors, which is indeed a pretty common beginner's mistake. This should have been solved differently, you should refer the target runtime in your project, not copy some libraries of an arbitraty servletcontainer make/version into your project. It would make your project incompatible with servletcontainers of a different make and/or version.
相关链接1
/相关链接2

关于html中的target属性与点击事件
如果用到target="_blank" 点击时会新开页,并且每次点击展开不同页面。
如果用到target="xxxx" 点击时会新开页,但是每次点击都是刷新同一页面
在新开的页中,能够取到父页面的元素,如下:

window.opener.$.find('#bgColor')

真正点击触发的事件中,回调函数写window.open是不会被屏蔽的

ServletContext取资源路径
旧版本当前使用的方法是

String path = ServletContext.getRealPath("WEB-INF/config");

但是网友们说,这不好,这是坑,而且tomcat8下不好使,改进代码如下:

URL url = this.context.getResource("/WEB-INF/config");
path = url.getPath();

CSDN博文地址

关于ActiveXObject
window.ActiveXObject 这个元素在ie8-10都是存在的,ie11就没了

js比较数字大小
比较大小之前一定要看看变量的类型,如果是String型,就得这样写

parseInt(arg0) < parseInt(arg1)

否则会出现500>1000的情况(字符串比较大小按单个字符比较)

Hibernate merge和save区别
merge对对象操作之后,持久化会断开,如果期望执行的是save操作,保存之后的自增主键是获得不到的

eclipse启动时Workspace in use or cannot be created, choose a different one
把workspace.metadata目录下的.lock文件删除掉

IE8下的js原生trim报错
使用jquery的$.trim()

jQuery给DOM追加元素时,可以简化

$('body').append($('
  • ');
  • 标签按钮切换抖动问题
    选中状态下加了classthis,this的样式加了1px的border,如果line-heighthight一样的话,会有抖动问题,修改为line-height = height - 2*border

    杜绝连点问题

    1. 表单提交,如果是struts下可以加
        
    

    另外要配置拦截器,详情请戳我

    1. ajax提交可以这样做:
    $('#submit').on('click', function() {
        // 校验表单
        if( validateForm() ) return;
        // 接触绑定的点击事件
        $('#submit').off('click');
        // 提交表单
        // TODO
    })
    

    off()函数可以解除指定元素上的指定事件
    jquery 文档 :英 中

    unbind方法跟这样的作用类似
    jquery 文档 :英 中

    意思网

    你可能感兴趣的:(开发小记)