解决JSP开发Web程序中文显示三种方法

开发 后端
本文介绍解决JSP开发Web程序中文显示三种方法,以及介绍针对从url中获取字符串的问题。

方法一:JSP开发最简单也是用的最多的方法

  1. <%@ page language="java" pageEncoding="GBK" %> 

或者这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。

这个方法用于jsp页面中的中文显示。

方法二:使用过滤器

过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。

编写一个SetCharacterEncodingFilter类。

  1. import java.io.IOException;  
  2. import javax.servlet.Filter;  
  3. import javax.servlet.FilterChain;  
  4. import javax.servlet.FilterConfig;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletRequest;  
  7. import javax.servlet.ServletResponse;  
  8. public class SetCharacterEncodingFilter implements Filter {  
  9. protected String encoding = null;  
  10. protected FilterConfig filterConfig = null;  
  11. protected boolean ignore = true;  
  12. public void init(FilterConfig filterConfig) throws ServletException {  
  13. this.filterConfig=filterConfig;  
  14. this.encoding=filterConfig.getInitParameter("encoding");  
  15. String value=filterConfig.getInitParameter("ignore");  
  16. if(value==null)  
  17.  this.ignore=true;  
  18.   else if(value.equalsIgnoreCase("true"))  
  19.    this.ignore=true;  
  20.   else  
  21.    this.ignore=false;  
  22. }  
  23. public void doFilter(  
  24. ServletRequest request, ServletResponse response, FilterChain chain)  
  25. throws IOException, ServletException {  
  26.  // TODO 自动生成方法存根    
  27.  if (ignore    (request.getCharacterEncoding() == null)) {  
  28.  String encoding = selectEncoding(request);  
  29.  if (encoding != null)  
  30.  request.setCharacterEncoding(encoding);  
  31. }  
  32.  chain.doFilter(request, response);  
  33. }  
  34. public void destroy() {  
  35.   // TODO 自动生成方法存根    
  36.  this.encoding = null;  
  37.  this.filterConfig = null;  
  38. }  
  39. protected String selectEncoding(ServletRequest request) {  
  40.  return (this.encoding);  
  41. }  

然后再web.xml加上

  1. <!-- Set Character Encoding-->  
  2.  <filter>  
  3.   <filter-name>Set Character Encoding</filter-name>  
  4.   <filter-class>com.struts.common.SetCharacterEncodingFilter
  5. </filter-class>  
  6.   <init-param>  
  7.   <param-name>encoding</param-name>  
  8.   <param-value>UTF-8</param-value>  
  9.  </init-param>  
  10. </filter>  
  11. <filter-mapping>  
  12.  <filter-name>Set Character Encoding</filter-name>  
  13.   <url-pattern>/*</url-pattern>  
  14.  </filter-mapping>  
  15. <!-- Set Character Encoding--> 

JSP开发使用过滤器的好处很多,特别是项目之中。

而且在使用国际化时就更有用了,只要在页面指定 <%@ page language="java" pageEncoding="UTF-8" %>,服务器就会根据本地Locale来显示正确的字符集。

所以我特别推荐使用过滤器。

方法三:修改tomcat的server.xml文件中URIEncoding

  1. <Connector debug="0" acceptCount="100" connectionTimeout="20000" 
    disableUploadTimeout="true"   port="80" redirectPort="8443" 
    enableLookups="false" minSpareThreads="25" maxSpareThreads="75"  
    maxThreads="150" maxPostSize="0" URIEncoding="GBK" >  
  2. </Connector>  

这个方法主要针对从url中获取字符串的问题。

JSP开发在tomcat5.0及以上版本,post和get方法在处理编码时有所不同。如果你在url中获取中文就会出现?号。但在tomcat4.1版本没有问题,因为tomcat4.1的post和get方法在处理编码时是一样的。

【编辑推荐】

  1. JSP XML XSLT将输出转换HTML
  2. 浅析JSP技术单处理和多任务处理
  3. JSP变量在规范中称作范围变量
  4. 详解JSP技术的方法
  5. JSP变量在规范中称作范围变量
责任编辑:佚名 来源: IT168
相关推荐

2022-04-28 07:26:17

PythonDocker容器

2009-07-08 12:56:32

编写Servlet

2022-12-07 10:20:08

蓝牙物联网

2009-10-14 14:37:56

调试.NET程序

2011-08-01 17:41:09

Oraclesqlplus

2009-12-11 18:49:39

预算编制博科资讯

2010-09-14 15:10:49

CSS注释

2011-04-18 15:32:45

游戏测试测试方法软件测试

2023-08-14 17:58:13

RequestHTTP请求

2022-07-13 16:06:16

Python参数代码

2009-06-23 10:45:18

Hibernate支持

2011-06-10 10:43:12

Ubuntu应用安装

2013-01-04 15:47:54

Android开发平铺UI设计

2010-09-13 08:45:23

DIVFlash

2022-05-30 07:07:35

Java监听文件Java 8

2010-07-29 09:56:45

Flex数据库

2021-07-13 12:31:27

IT组织改进首席技术官

2016-09-09 13:07:56

CentOSJDKLinux

2023-05-16 16:07:07

大数据数据管理工具

2009-07-23 15:17:54

JDBC连接Acces
点赞
收藏

51CTO技术栈公众号