1、(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑
今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生成,今天在做数据查询的时候,有一个变量首字母小写,第二个字母大写(即tName),我也跟平常一样在struts2的action中用eclipse自动生成getter和setter方法,然后调试,发现无论传给tName什么参数,它接收的都是null,当时,我很纳闷,试了很就发现还是不成功,就把参数换成tname去试,这次却能接收到参数,于是,我就猜测是不是struts2的属性对大小写有什么要求,在百度上找了一下,果然,网上说struts2的set后面必须是大写字母,否则就会失效,看到这个后,我就把settName()改成了setTName(),这次果真接收到数据了。
2、(2014/05/29)jdbc链接mysql不指定编码类型的坑
在struts2中通过getter和setter接收参数,对于中文的参数,传入时先进性URL编码,接收时用URLDecoder进行解码,之后将接收到的参数拼接到SQL语句中,打印出来的日志信息中中文是正常显示的,例如:select * from tableName where name='中国';可是怎么样也查询不出来数据,也不报错,数据是通过JDBC取的,然后就将PreparedStatement执行的SQL语句打印出来,发现执行的语句却是select * from tableName where name='???';,在网上查询资料,看到一条关于指定数据库连接编码的信息,这才想起来我的连接没有指定编码,connInfoMap.put("url","jdbc:mysql://"+array[0]+":3306/"+array[3]);,把它改成connInfoMap.put("url","jdbc:mysql://"+array[0]+":3306/"+array[3]+"?useUnicode=true&characterEncoding=UTF-8");测试通过了。