分享
 
 
 

WEB 开发技术系列之一

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前言

1.为什么要讨论?

简单的来说,就是就用来开发Web应用所需要的技术,目前有很多讨论各种技术的论坛,但我在这里想讨论的是横向方面,也就是在WEB应用开发中,如何把各种技术结合起来,提高开发效率.用更通俗的话讲,不要讲最先进的,讲最有用的.

2.内容包括什么?

WEB开发技术包括三个层面:

a) 显示层. 页面制作 ,这个通常由美工完成

b) 逻辑层.主要讨论的内容,包括Struts,Hibernate,模式,代码生成技术(Xdoclet,Middlegen),自动构建(Maven)Taglib

c) 资源层. 讨论数据库的设计,MSSQL,Oracle,存储过程,触发器.

3.目的

做Web开发的难点之一就是比较分散,不像做GUI界面那样紧凑,比如写了一个Servlet,就要配置web.XML,修改了数据库的字段,就要修改各种逻辑,而修改数据库这种情况恰恰是经常发生的,所以开发人员要往返的修改,同步. 除了这些,web开发所需要的人也是不同的,有美工,数据库设计,逻辑开发,这些人如何协调起来,如何同步,这些都对提高开发效率有直接的影响.

我在这里讨论的技术不一定是万能的,这些只是我积累的经验,我也在不停的完善中.

第一篇: 汉字编码的问题

也许汉字是Web开发中最常见的问题了,所以就拿这个问题开始我们的讨论吧!

1.汉字问题出现的场合

a. 获取参数Request.getParameter("param"); 在Tomcat下,默认是ISO8859-1,因此若要正确获得参数,需要转换成GB2132;

b. 页面的汉字显示。

这里有两种情况,

I )当jsp要被解析成Servlet时,容器读取<%@ page contentType="text/Html; charset=gb2312" 以确定文件的编码,故通常应该设置。

当IE得到页面要显示时,通过<meta http-equiv="Content-Type" content="text/html; charset=gb2312">来确定显示的编码.

II) 假如没有设置编码,则页面的编码为 ISO8859-1,这时候假如要显示汉字,可以采用unicode编码形式来显示汉字. 如直接out.print('\uffff');

把汉字转换成Unicode编码可以用jdk 1.5 下的一个工具.可以把一个文件里的汉字全部转换成Unicode编码.这种方法就没有前面这种方便了.

c.Beans中的编码。在Java Beans中的编码时默认编码,假如平台的默认编码时GB2312,则在Java Beans中不需要非凡转换。

d.数据库的编码。数据库也有自己的默认编码。mysql的默认编码为ISO8859,MSSQL/Orcale的默认编码为平台编码,在Windows下均为GB2312。当向数据库写数据库,应该根据数据库的编码做相应变换。

2.如何实现汉字编码的自动转换

从上面讲的场合来分析,最要害的就是第一种,每次都要转来转去的,很麻烦. 假如在weblogic下,可以在web.xml 设置一个参数,让weblogic自动转换,不过这个只能在weblogic下用了.

借鉴weblogic的思路,可以编写Servlet Filter来实现.Filter是Servlet 2.3规范的内容.现在所有流行的服务器都应该支持.

代码如下:

/**

* Filter class

*

* @web.filter name="Locale.filter" display-name="Locale Filter" description="Description for Locale"

* @web.filter-mapping url-pattern="/*"

*

*/

public class LocaleFilter implements Filter {

private Log log = LogFactory.getLog(LocaleFilter.class);

/**

*

*/

public LocaleFilter() {

super();

}

/**

* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)

*/

public void init(FilterConfig arg0) {

// TODO Auto-generated method stub

}

/**

* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

//String encoding = CommonUtil.getDefaultEncoding();

///log.debug("default CharacterEncoding:" + encoding);

//encoding可以从平台上自动获取.

String encoding = "gb2312";

request.setCharacterEncoding(encoding);

response.setContentType("text/html;charset="+encoding);

response.setCharacterEncoding(encoding);

chain.doFilter(request, response);

}

/**

* @see javax.servlet.Filter#destroy()

*/

public void destroy() {

}

}

3. 效果

基于Filter的实现好处很多,我们可以类似写出gb2312平台下的filter,也可以写出其他平台下的filter.使用的方法,也很简单,就直接request.getParameter()就可以了,不需要非凡的转换.

4. 总结

基于Filter的实现是个不错的选择. 假如要想在Struts类似的框架中读取某个文件中的汉字,并要想显示在页面上,如 常见bean:write 标签读取properties,

最好的做法就是把properties中的汉字用unicode编码,高效直接.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有