Wednesday, January 17, 2007

Java Web日记:Servlet、JSP中的乱码

这IT世界由英语把持的弊端——或者称为给中国programmer带来的困扰——之一就是乱码吧.这也是小白我必经的一课.那么,且来认识一下字符转换问题.

之所以会出现乱码,原因在于使用的字符集(charset)不匹配.26个英文字母到哪里都OK,但是其他土著文字便没有这么轻松,如果使用的字符集没有提供相应的文字索引,那显示出来的便只有乱码.从底层来说,文字都是二进制代码形式存储.操作系统启动后便加载在内存里.我们所输出输出的,都是对文字的索引.不同字符集索引位置不一样.使用错误的字符集,便找不到正确的索引而只能是乱码.

在java编程中需要发生转码的地方.developerworks上有篇文章讲到了JSP/Servlet 中的汉字编码问题.

从我自己的体验出发,解决办法就是无保留地投向UTF-8字符集.GBK可以显示汉字,但是碰到其他东亚文字依然很糟糕.

Sunday, January 07, 2007

Java Web 日记:1.7-xml战记

其实之前对xml有过概念性的理解.xml就是一堆自定义标签的文本.因为想知道如何才能在ant构建web application时对web.xml进行操作,好像ant没有这样的语法(要有也太强了,ant成了编程语言...),所以想着不如写个java来生成web.xml.于是就陷入了JAXP、DOM、SAX、JDOM.DOM式解析器需要在内存中放下整个DOM树来进行解析,内存小数据量大是就非常吃瘪;SAX的推式处理不错,只是要编写的代码多了,毕竟需要程序员告诉机器该如何处理特定的事件;JDOM真是救星,我是说,写这个的程序员真是想到我心里去了,俺就要这样的模式.Jason Hunter,你是我的神!

Wednesday, January 03, 2007

Java Web 日记:1.3

这几天又稍稍深入了ant.好吧,上次看走了眼,其实全称是"another neat tool",随便鄙视我吧,反正在这里已经把脸面丢光了.
借助于xml的良好的可读性,看了不少示例.其实target就那么几个,但是写出来的脚本却是五花八门的,于是水准高下立分.我现在一看到那些注释太少,white space太少,代码过长,依赖关系混乱的构建文件就想死.
就像Paul Davall说的那样,"……however, if there's one thing I can't stand, anthropomorphically speaking, it's the odor of unmaintainable build scripts."
唔,总结几条:
  1. 灵活使用内置属性,降低硬编码数量.
  2. 宁用location,莫用value.力求清晰、准确.
  3. 目标明确,小而精悍.长行折短,随行注释.留足空行不用客气.
  4. IDE有许多方便,也有许多局限(例如Eclipse的ant代码提示里不会有最基本的tstamp).熟悉ant 的task和语法,做没有IDE气味的构建脚本.
  5. 是否要将构建脚本拆分为若干个脚本以及属性文件,仅取决于它对工程复杂性和平台迁移性的影响.

Monday, January 01, 2007

Java Web日记:1.1

说是要研究jsp语言,但没有想到被一个提交表格的问题困住了.tomcat的设置是没有错的.提交的表单数据也成功传给了控制器Bean,但是将数据写入数据库时发生了问题,虽然返回的executeupdate()的值等于1,但是实际上并没有向数据库写入数据,sql语句也没有发生问题.无法可想,只好放在一边,下次用更规范的MVC架构来写这个小web应用好了.看看能不能发现问题究竟在哪里.

另一方面,又尝试了用ant(Another Nest Tool)来build项目.以我看来,ant的好处就在于跨平台的项目可移植性和优秀的版本控制.ant的关键词就是两个:build、target.