[摘要]content != null && content.toLowerCase().startsWith("a pplication/x-www-form-urlencode... content != null && content.toLowerCase().startsWith("a pplication/x-www-form-urlencoded")) request.setAttribute(PARAMS_ATTR_NAME,new UTF8ParameterReader((HttpServletRe quest)request)); super.service(request,response); } } 这个就是Servlet基类,它覆盖了父类的service方法,在调用父类service前,创建 了UTF8ParameterReader对象,其中保存了form中提交的信息。然后把这个对象作为一个 Attribute保存到Request对象中。然后照样调用父类的service方法。 对于继承这个类的Servlet,要注意的是,"标准"getParameter在也不能读到post的 数据,因为在这之前这个类中已经从ServletInputStream中读出了数据了。所以应该使 用该类中提供的getParameter方法。 剩下的就是输出问题了,我们要把输出的信息,转为UTF8的二进制流输出。只要我 们设置Content-Type时指定charset为UTF8,然后使用PrintWriter输出,那么这些转换 是自动进行的,Servlet中这样设置: response.setContentType("text/html;charset=UTF8"); Jsp中这样设置: <%@ page contentType="text/html;charset=UTF8"%> 这样就可以保证输出是UTF8流,客户端能否显示,就看客户端的了。 对于multipart/form-data的form提交的内容,我也提供一个类用来处理,在这个类 的构造子中可以指定页面使用的charset,默认还是UTF-8,限于篇幅不贴出源码,如果 感兴趣可以mail to:vividq@china.com和我探讨。
|
关键词: Java Servlet/Jsp多语言处理方案(二)