阶段小结

前段时间忙这敢着做东西,还碰上了自己以前很多没碰上的事情,所以干脆在这做个记录。

1. 乱码的问题:
以前以为写了一个filter就没有问题了,但事实上问题还很多。以前一直不知道为什么在Ajax中用GET方法发送的数据会有乱码的问题。就算是用了encodeURI进行编码,问题还是依旧。很多时候都尽量避免使用中文,又或者是使用字符串重建的方法来实现消除乱码问题。但一直都觉得这样的方法实在是不“协调”了,总觉得这是很别扭的事情。

几个这次又遇上必须要能下载中文文件名的的文件,以前的方法都是直接使用英文,但链接文字用中文,但是这样用户不干了。觉得写下载类,又加上要使用数据库进行管理,比较麻烦,不过写下载类,能更细粒度地控制整个下载。

IE有个总以UTF-8对链接进行编码,这也就是说,链接都是以UTF-8格式传上去的。但就是这样,服务器端依旧没有办法正常识别汉字,因为Tomcat总是以ISO-8859-1(java.net.URLDecoder.decode(url, "ISO-8859-1"))对URL进行解码,所以根本得不到正确的文件地址。解决方法很简单,那就是在配置文件中(访问端口的配置中)加入URIEncoding="UTF-8"这个设置,那么问题就解决了。但是这个问题解决了,老问题又来了,以前字符串重建获得参数值的方法又是乱码了。原来IE的UTF-8进行编码,并不包括对GET形式提交参数进行编码。也就是“?”后面的中文并没有进行编码。

用Opera的时候,就会发现,很多时候URL中的中文字符就被进行了编码。IE就不会帮你完成这项任务,所以你只有自己动手,使用encodeURI进行编码,或者在显示前,用Struts标签中的Link之类的便签编码后输出。当然自己用URLEncoder.encode(url, "UTF-8") 方法也行。

由于POST没有这样的问题,所以最好都是使用POST方法提交,有链接的地方,那还是先编码再输出,或者还是用脚本控制。还有就是字符串重建是非常非常愚蠢的方法,还是别用的好。

以前不知道JSP页面里的pageEncoding是干什么用的,现在知道了,是标识JSP源码是用的什么编码格式,这个属性可以令源码同页面字符的输出不是同一种格式。不过这样的做比较愚蠢。

另外使用GBK而不是GB2312,上次居然让我碰上用GBK的输出会有乱码的问题,还是用GBK好,另外使用UTF-8更好!

我最喜欢JB处理文件格式的方式,每个工程都是独立的格式管理,并且在这个工程下创建的文件,都会帮你按照工程设置好,这点比起NB和Eclipse都要好!!

2.线程安全
在使用ThreadLocal类的时候一定要注意,每次使用完毕了ThreadLocal中的数据后,一定记得要清理掉,或者每个请求前覆盖掉。在Tomcat中,每次请求后,此线程并没有消亡,只是假如不够用会启用新的,旧的会一直保留着,这点和连接池一样!只是连接池程序会帮我们清理。以前我一直以为每个请求后,都会启用新的线程,但事实上是每个请求都是独立的线程,但不一定是新的。结果上次写程序还犯了错误!!

3.数据库
一直没在数据库上遇到乱码问题,也许是因为用的Oracle,人家这方面已经做得很好了。不过上传发现,大数据类型,如BLOB这样的字段类型,对储存空间非常敏感,因为要是没有相同名称的空间,那根本就导不进去,哎!!!以前一直用Oracle提供的操作界面在操作,结果自己都不知道如何用SQL进行创建,结果使用简化版本的时候,我根本没办法创建空间!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值