DPF项目积累

1. JSTL标签导入
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

2. Struts2标签导入
<%@ taglib prefix="s" uri="/struts-tags"%>

3. fmt标签导入
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

4. JSP页面中访问list的size()方法有如下两种:
a) <%@ taglib uri="http://java.sun.com/jsp/jstl /core" prefix="c" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl /functions" %>
<c:out value="${fn:length(list )}"></c:out>
b) struts2
<s:property value="#request['list'].size()"/>

5. input file 控件因为IE的安全设置,不能被其他控件触发修改值,这会导致提交ACTION拒绝访问,解决方法:将INPUT file控件包在一个DIV内,设置透明度为0,将替代的按钮覆盖,原理点击的还是INPUT file控件

6. Eclipse报的JDI thread evaluations异常算作是Eclipse的BUG,是由于DEBUG模式Expressions视图中一些不存在的变量引起的,清除这些变量就不会再出现。

7. ORACLE中插入DATE类型的字段,需使用to_date(‘2010-8-6’, ‘yyyy-MM-dd’)函数

8. 拼接SQL执行语句,注意”’”和”&”的处理,单引号可以使用”’’”两个单引号做转义,”&”可以使用chr(38)或用’’两个单引号包起来,尽量使用预编译SQL避免这类的问题

9. JSP列表中列值显示过长的解决方法:
.span_value
{
  width:150px;
  float:left;
  text-overflow:ellipsis;
  white-space:nowrap;
  overflow:hidden;
}
<td><span class=”span_value”>fdsafdsfsafdsfdsdsfdsfds</span></td>

10. log4j.additivity.org.apache=true 表示子LOGGER集成ROOTLOGGER的输出,LOG4J中默认为true,这就是为什么有时候日志会输出2遍一样的原因

11. LOG4J中RollingFileAppender中的FILE配置输出到指定文件中,这个文件的路径是由System.getProperties(“user.dir”)做为根目录。而由TOMCAT启动后user.dir为TOMCAT的bin目录

12. 在用PreparedStatement给SQL中参数赋值时,遇到DATE类型的赋值,调用了ps.setString(index, value).结果调用执行方法时报了ORA-01858:在要求输入数字处找到非数字字符.原因就是给DATE类型setString(). 解决方法:用ps.setDate(index, date)来解决此BUG,或者不要用PreparedStatement给DATE赋值

13. Eclipse快捷键CTRL+T: 快速显示当前类的继承结构

14. 对于系统内经常用的集合,可以先用LIST添加,最后转为固定长度的数组,因为数组的遍历是效率最高的

15. 使用commons.lang包下的ReflectionToStringBuilder来打印bean的信息,可将父类的一些属性全部打印出来

16. 标识符transient表示此字段只是短暂的,不会被保存,例如在用ObjectOutputStream将对象写入文件时,一些重要信息如密码不要被写入文件时,可以将其设置为transient,但一旦设置成transient后,再将对象从文件中读取出来,该字段的信息就会丢失;在使用ReflectionToStringBuilder的toString方法时,如果字段被申明为transient也是不会被打印出来

17. Thread.join()方法是将当前线程阻塞,等待Thread线程执行完成后再执行当前线程

18. 为避免页面上一些特殊字符的问题,在将数据从后台读取,到前台页面显示,在标签中用<c:out value=””/>,可以将特殊字符转换后按原样输出。例:<input type="text" id="familyName" name="addressInfo.familyName" autocomplete="off" size="25" tabindex="1" class="input_style1" maxlength="100" value="<c:out value='${addressInfo.familyName}'></c:out>"/>

19. 为了防止别人在URL中利用SQL注入导致系统异常,禁止使用明文进行传值跳转,利用FORM表单Post方式提交

20. 在搜索功能中应过滤SQL特殊字符如’,&,\,%,_,还应加上escape ’\’,意义为忽略’\’,把它当作是转义符

21. 自己的代码中避免直接抛出Exception异常,处理方式应捕获Exception异常,然后包装成自己的异常,然后抛出

22. 页面的遮罩层,如果遇到select标签,处理方式将select给隐藏掉,因为层无法覆盖select标签,页面遮罩层一般这样定义:<div id="shadow" style="display:none;position:absolute;left:0px;top:0px;width:100%;height:1000px;background-color:#000000;opacity:0.6;filter:alpha(opacity=60);z-index:9999;"></div>

23. Sturts2中chain的传值问题,chain虽然能改值,但在默认的拦截器链中,最后到下一个action中的参数还是刚开始传入后台的参数,所以要想修改值在传,可以用redirect加参数跳转,还有一种解决办法,就是将值传入到新的变量中,这个变量在action2中是个成员变量,这样就可以了。

24. ORACLE中排序默认按照拼音排序,如果需要将null值放在最前或最后,可以加入nulls first 或者 nulls last 跟在 order by 语句后,如:select name from temp order by name asc nulls first,这样就将null值始终放在最前面。

你可能感兴趣的:(eclipse,oracle,sql,log4j,jsp)