spring管理的Controller是单例的和Struts管理的Aciton是多例是不同的。
2,上个总结提到的,使用DateUtils来处理时间有关的操作,但注意:一般有2个这样的类:
a:org.apache.commons.lang.time.DateUtils
b:org.apache.http.impl.cookie.DateUtils
如果要格式化时间成字符串,或反向操作,千万别错误的使用了b,代码分享中有一个我自己写的DateUtil,用这个即可。而b,是总是用格林治(GMT)标准时间来转换的,而我国的是东8区,并不是见鬼的格林治,所以如果用它来转换,会在世界上差8小时,so...总结:在Date->String或反之操作时,一定要头脑清醒,注意到GMT与CST的不同。
如tomcat,在server.xml中的<Connector>标记内加入URIEncoding="UTF-8"也许就能解决。
4,
使用mybatis时,可能会有where查询条件语句内要直接嵌入在java中拼接好的查询条件的情况。这时
在<where>标签内有多个可能条件时需要直接将SQL条件写在首位,如下:
<where>
<if test="SQL != null">
${SQL}
</if>
<if test="id != null">
AND ID=#{id}
</if>
...
</where>
这样写的好处是:
a,因为在首位,所以不需要AND关键字链接,继而传入“ ”字符串也不会出错,而不再首位时,你需要先在前面写好AND,别人传入“ ”时就会出错,而作为java中的不明情况的调用者,是完全有可能传给你“ ”字符串的。
b,不明情况的调用者自己拼接SQL时,可以在前面拼入AND,也可以不拼。不拼,因为在首位当然不会错;拼了,因为在<where>标签内,这个标签有自动修剪首尾关键字的能耐,经过它的修剪自然也不会错。而如果不在首位,调用者是给最前面拼AND呢还是不拼呢?他是不是要跑来看你的XML文件中是不是提供了AND呢?
filter-mapping中可以用<url-pattern>和<servlet-name>两种标签来过滤,而它们的意义是完全不同的,url-pattern自然是一般的url来匹配过滤;可servlet-name则是和已经定义的<servlet>标签对应的。网上很多的spring ShallowEtagHeaderFilter相关的过滤器配置都使用的servlet-name,我用了之后达不到效果,找了半天才发现是一个标签的问题。果断改为url-pattern,同时对误人子弟的说句:shit!
6,用户输入的内容在页面显示:
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>标签,然后在显示时${fn:escapeXml(text)}。为什么呢?当然是防止用户输入HTML标签而影响了你这个页面的显示,如果用户写个javascript标签,然后在里面注入点其它地方的JS代码呢?嘿嘿