当前位置:  编程技术>java/j2ee

JSP对浏览器发送来的数据进行重新编码的两种方式

    来源: 互联网  发布时间:2014-10-19

    本文导语:  最近做的DRP项目中,使用JSP操作中文时,经常会出现一些乱码问题。这些问题导致中文无法输入,或者是无法正常显示。这里就涉及到了字符集的设置、字符集的编码方式。 在JSP/Servlet中主要有以下几个地方可以设置编码,pag...

最近做的DRP项目中,使用JSP操作中文时,经常会出现一些乱码问题。这些问题导致中文无法输入,或者是无法正常显示。这里就涉及到了字符集的设置、字符集的编码方式。

在JSP/Servlet中主要有以下几个地方可以设置编码,pageEncoding="GB18030",contentType="text/html;charset=GB18030"、request.setCharacterEncoding("GB18030")和 response.setCharacterEncoding("GB18030"),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet 中。

这里,我们只谈一下对浏览器发送来的数据进行重新编码时的编码方式。众所周知,要对浏览器发送来的数据进行重新编码,只需要一个语句就可以了,很简单。

方案一:(很简单吧)
代码如下:

request.setCharacterEncoding("GB18030");

但是,这里就出现了一个问题,需要设置字符级的页面有很多,而且,这样的方式也缺乏灵活性,对于日后的维护限制很大,因此,我对方案一进行了一下优化,加入了Filter接口,将设置字符集的语句抽象出一个java类,该java类实现了Filter接口。下面我们来看一下代码。

方案二:(采用Filter统一处理字符集)
代码如下:

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.omg.CORBA.Request;

/**
* 采用Filter统一处理字符集
* @author jerry
*
*/
public class CharsetEncodingFilter implements Filter {

private String encoding = null;

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

//System.out.println("CharsetEncodingFilter--->>>>begin");
// 设置字符集
request.setCharacterEncoding(encoding);

// 继续执行
chain.doFilter(request, response);

//System.out.println("CharsetEncodingFilter--->>>>end");
}

public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
//System.out.println("System.out.println---->>>encoding" + encoding);
}
}

有了Filter类还不行,还需要在web.xml中进行配置。
代码如下:


CharsetEncodingFilter
com.bjpowernode.drp.util.filter.CharsetEncodingFilter

encoding
GB18030



CharsetEncodingFilter
*.jsp


在这里,对编码方式进行了一个灵活的设置,可以在配置文件中灵活更改,为日后的维护简化了很多。

从这个小例子中,我们可以看到,其实有很多的代码是可以进行优化的,从能实现功能的简单代码逐渐优化成不惧各种修改、各种维护的更优代码,这其中更多的是对代码优化的思考,显然,我还不够格,还需要更多的练习,更多的思考。

    
 
 

您可能感兴趣的文章:

  • 在jsp中如何判断传来的字符串是8859-1编码还是gb2312编码方式
  • 重大困惑:用win2000,Tomcat的jsp服务器,发布出来的网页默认编码是西欧字码,我们明明已在jsp文件中写上...GB2312...了,请大虾指点!
  • JSP页面中文传递参数使用escape编码
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • 跨平台问题:怎样用程序得到JSP服务器的默认编码?
  • 怪问题--JSP自动将浏览器的编码转换成 西欧(ISO)字体 然后显示的是乱码
  • 推荐各位搞不清楚中文显示/编码的兄弟看这篇文章,讲的比较透彻,http://www-900.ibm.com/developerWorks/java/jsp_dbcsz/index.shtml
  • jsp页面间传中文参数示例(页面传参数编码)
  • JSP/Servlet 中的汉字编码问题
  • 菜鸟用tomcat3.2,在他的root目录下建立了一个test1.jsp.用浏览器显示正常,但我后来删掉了,可用浏览器还可以看到test1.jsp,这是怎么回事
  • 通过jsp或servlet如何记录用户关闭浏览器时的时间
  • 请问jsp中的一个新的session是否浏览器一关就没了
  • servlet使用RequestDispatcher到jsp页面,浏览器url栏还是servlet
  • jsp中sql语句执行时间太长,用浏览器打开时,页面超时,如何处理?
  • 请教各位大帅:jswdk中运行jsp,为何客户端浏览器无内容,查看原代码,就是原文件?
  • JSP中用回车监听按钮事件兼容火狐 IE等主流浏览器
  • (新手)请教如何通过tomcat运行自己写的jsp,在浏览器上浏览页面?
  • 在visualAge for java3 中我也起动com.ibm.servlet->run main了,在浏览器中也运行了。可是我如何创建jsp工程呢?
  • JSP实现浏览器关闭cookies情况下的会话管理
  • 请问在B/S结构的软件中,浏览器中报表的打印和预览有没有什么好的解决方案?我用的是PHP和JSP!
  • jsp 获取客户端的浏览器和操作系统信息
  • 这个jsp文件用浏览器看没东西为什么?
  • jsp怎样才能使从数据库读出来的表格信息以表格形式全部输出到浏览器上呢?
  • jsp文件中凡是中文的,到浏览器上全成了乱码,清高手指点
  • 请教:JSP怎样连接Excel?将Excel的数据读取出来用表格显示在浏览器上?
  • JSP页面缓存cache技术--浏览器缓存介绍及实现方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jsp发送邮件的问题
  • 如何使用jsp发送邮件
  • 如何通过其他网站发送短消息(比如新浪)?JSP页面提交,高分请教!!
  • 我想用jsp做个发送邮件的程序,请问需要什么服务器?怎样配置?最好还能提供一个简单的测试程序!谢谢!
  • 很简单。50分!在j2eetutorial1.3的Bank例子中是哪个.jsp或FORM率先用method=get发送数据给
  • 邮件发送简单例子-jsp文件
  • 从jsp发送动态图像
  • 在jsp中发送email
  • JSP发送邮件实例
  • 如何在JSP中使用JAVAMAIL发送需要身份验证的信件???
  • 急!急!急!怎么在jsp中用javamail发送html格式的邮件???
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?
  • 我要学jsp,已经下载了j2ee1.4,需要一个支持jsp引擎的WEB服务器或jsp引擎!!(急,马上给分)
  • jsp中相对路径怎么表示?例如当前目录下的jsp目录里的文件。
  • 我已经在输出前包含了<jsp:include page="2.jsp"/>,
  • 欲学JSP,请教JSP资料,最好电子版。
  • jsp中文乱码 jsp mysql 乱码的解决方法
  • jsp+JavaBean vs jsp+Servlet+JavaBean
  • JSP/html 编辑器 Bravo JSP editor
  • jsp中相对路径怎么表示?例如当前目录下的jsp目录里的文件。 iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3