WEB 开发技术系列之一
2004-11-18 14:34
253 查看
前言
1.为什么要讨论?
简单的来说,就是就用来开发Web应用所需要的技术,目前有很多讨论各种技术的论坛,但我在这里想讨论的是横向方面,也就是在WEB应用开发中,如何把各种技术结合起来,提高开发效率.用更通俗的话讲,不要讲最先进的,讲最有用的.
![](http://blog.csdn.net/Emoticons/tongue_smile.gif)
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编码,高效直接.
1.为什么要讨论?
简单的来说,就是就用来开发Web应用所需要的技术,目前有很多讨论各种技术的论坛,但我在这里想讨论的是横向方面,也就是在WEB应用开发中,如何把各种技术结合起来,提高开发效率.用更通俗的话讲,不要讲最先进的,讲最有用的.
![](http://blog.csdn.net/Emoticons/tongue_smile.gif)
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编码,高效直接.
相关文章推荐
- 思维的方法(转载)
- tomcat下数据库连接池的配置
- C#
- 数值型货币的大写转换
- Mysql中一些要用到的日期和时间函数
- 胡谈...
- c# encrypt
- 简单的数组操作字符串,加密可用
- [转贴] 在.NET中嵌入和使用资源文件
- 中华人民共和国万岁
- 好的学习网站登记
- 太郎先生上周去世了
- 当鼠标移动到图片上时```就会出现一个保存和另存为 提示。大家估计都见过,怎么去掉它呢
- 外科医生最喜欢给什么人做手术
- SafeMapping
- 认识一个新的工具 ANTS Profiler
- 用数组移动字符串
- C#写的email 初级系统源代码
- Oracle得到M到N条记录的写法:
- 关于SQLSERVER数据操作的常用类库