- 浏览: 127511 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (145)
- java (145)
- Java网络编程 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- tomcat部署web工程的两种方法 (1)
- JAX-RS 从傻逼到牛叉 1:REST 基础知识 (1)
- FreyjaJdbcTemplate 大致上完工了,想请人重构。。 (1)
- 开始认识自己 (1)
- 设计模式-Abstract Factory 模式 (1)
- 数据库中主键的设计原则 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- mac环境变量 (1)
- STC单片机ADC转换的例子 (1)
- myeclipse 8下安装Ibator . (1)
- OSGI与Android结合 (1)
- CSDN BLOG EXPERT (1)
- Java中网络操作的开源库CommonsNet (1)
- Apache License Version 2.0 英文内容及中文翻译 (1)
- JTest (1)
- GeoCon 用C#编写的开源的地理信息数据转换工具 (1)
- ERP简易教程 (1)
- 提高站点在搜索引擎上的排名 (1)
- Wifi (1)
- 腾讯Q+开放平台,相信又是一次成功的模仿 (1)
- C#坦克大战网络版代码 (1)
- Problem16 (1)
- Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较) (1)
- ava框架数据库连接池比较(c3p0 (1)
- dbcp和proxool)bonecp (1)
- 继续向成熟男人靠拢 (1)
- Qt4.7中 默认的构造函数 (1)
- xml CDATA (1)
- 只针对中英文混合分词的中文分词器 (1)
- 典型相关分析及其适用范围和spss操作(转) (1)
- llvm (1)
- java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access (1)
最新评论
-
xm3530:
什么鬼?都没法看,发出来干嘛
Android中利用App实现消息推送机制的代码实例 -
lvtenglongxiaohei:
太经典了!
学习一下!
ERP简易教程 -
lvtenglongxiaohei:
<br> 一天中午,丈 ...
ERP简易教程 -
hzw2312:
加油~~~!!!
开始认识自己 -
123048591:
显示乱码
tomcat部署web工程的两种方法
最近又拿起jsp+servlet来做项目,遇到了乱码的问题。解决方案很多,这次决定用过滤器来解决传值过程中的乱码问题。当然前提是tomcat没修改过connector配置项中的uriencoding,即使用tomcat默认的编码配置。
在表单中使用“method”这个属性来指定提交表单时使用的http请求方式。默认是get方式。
使用get方式,提交的参数放在请求的url后面,浏览器会对url进行转义。所以,在服务端要用以下代码取得正确的参数,“utf-8”是我使用的页面字符编码。
如果使用的是post方式,则提交的参数将放在请求的消息体中。这种情况下,只要指定字符串编码就可以了。
好,下面说一下我使用过滤器解决传值乱码的例子。
首先,写个继承httpservletrequestwrapper的类,扩展一下servlet提供的request的功能。
在上面的类中,我们其实就完成了一件事。在我们使用getparameter(),getparametervalues()取得参数前,先对参数进行了我们之前所说到的第一个动作。
接着,编写一个过滤器。
这里,我们使用过滤器完成了两个动作。首先,如果请求是post方式的,则request.setcharacterencoding(encode);如果请求是get方式的,则使用我们进行了扩展的request代替原来的request,这样就做到了对参数进行转码再取值。
接下来,在web.xml中要配置我们的这个过滤器。
在filter中有个encode参数,用来指定我们所使用的字符编码。
<div style="text-align: center">--------------------------------------------事情还有后续----------------------------------------
在表单中使用“method”这个属性来指定提交表单时使用的http请求方式。默认是get方式。
使用get方式,提交的参数放在请求的url后面,浏览器会对url进行转义。所以,在服务端要用以下代码取得正确的参数,“utf-8”是我使用的页面字符编码。
string str = new string(request.getparameter("str").getbytes("iso-8859-1"),"utf-8");
如果使用的是post方式,则提交的参数将放在请求的消息体中。这种情况下,只要指定字符串编码就可以了。
request.setcharacterencoding(encode);
好,下面说一下我使用过滤器解决传值乱码的例子。
首先,写个继承httpservletrequestwrapper的类,扩展一下servlet提供的request的功能。
public class request extends httpservletrequestwrapper { public request(httpservletrequest request) { super(request); } public string tochi(string para) { try { byte[] bytes = para.getbytes("iso8859-1"); return new string(bytes, encode); } catch (exception ex) { } return null; } private httpservletrequest gethttpservletrequest() { return (httpservletrequest) super.getrequest(); } public string getparameter(string name) { return tochi(gethttpservletrequest().getparameter(name)); } public string[] getparametervalues(string name) { string values[] = gethttpservletrequest().getparametervalues(name); if (values != null) { for (int i = 0; i < values.length; i++) { values[i] = tochi(values[i]); } } return values; } }
在上面的类中,我们其实就完成了一件事。在我们使用getparameter(),getparametervalues()取得参数前,先对参数进行了我们之前所说到的第一个动作。
接着,编写一个过滤器。
public class encodefilter implements filter{ private string encode; public void destroy() { } public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception { httpservletrequest httpreq = (httpservletrequest) request; if (httpreq.getmethod().equals("post")) { request.setcharacterencoding(encode); } else { request = new request(httpreq); } chain.dofilter(request, response); } public void init(filterconfig filterconfig) throws servletexception { encode = filterconfig.getinitparameter("encode"); }}
这里,我们使用过滤器完成了两个动作。首先,如果请求是post方式的,则request.setcharacterencoding(encode);如果请求是get方式的,则使用我们进行了扩展的request代替原来的request,这样就做到了对参数进行转码再取值。
接下来,在web.xml中要配置我们的这个过滤器。
<filter> <filter-name>encodefilter</filter-name> <filter-class>com.ieread.search.filter.encodefilter</filter-class> <init-param> <param-name>encode</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodefilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在filter中有个encode参数,用来指定我们所使用的字符编码。
<div style="text-align: center">--------------------------------------------事情还有后续----------------------------------------
发表评论
-
java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access
2012-02-08 14:17 1058<div>Java数据库连接(JDBC)由 ... -
llvm
2012-02-07 16:29 880llvm ... -
典型相关分析及其适用范围和spss操作(转)
2012-02-07 15:43 1583看文章《科学学研 ... -
只针对中英文混合分词的中文分词器
2012-02-03 10:39 1013该版本说明 1、只针对中英文混合分词 需要一些中文和 ... -
xml CDATA
2012-02-03 08:45 1210<h2 style="font-si ... -
Qt4.7中 默认的构造函数
2012-02-01 09:14 1088<p><span style=&qu ... -
继续向成熟男人靠拢
2012-01-11 17:04 879转自徒儿的人人。 ... -
ava框架数据库连接池比较(c3p0,dbcp和proxool)bonecp
2012-01-11 14:13 1135<h1 style="text ... -
Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较)
2011-12-28 15:23 963<span style="font- ... -
Problem16
2011-12-28 12:53 668package com.shui.mu.yao.io. ... -
C#坦克大战网络版代码
2011-12-20 13:09 983简单C#坦克大战网络版代码 写完单机版 http ... -
腾讯Q+开放平台,相信又是一次成功的模仿
2011-12-20 10:44 861今天看到两则新 ... -
Wifi
2011-12-19 13:14 1086. Confirm if Wifi is On ... -
提高站点在搜索引擎上的排名
2011-12-19 12:04 937对于拥有网站的各位站长来说,都希望自己的站点能够在各种 ... -
ERP简易教程
2011-12-16 16:47 922注明:下面的帖子 ... -
GeoCon 用C#编写的开源的地理信息数据转换工具
2011-12-14 12:29 956<p class="MsoNorma ... -
JTest
2011-12-14 09:00 1029接到parasoft公司一位先生打来的电话,说下个月第 ... -
Apache License Version 2.0 英文内容及中文翻译
2011-12-13 12:59 2338</span> <p class= ... -
Java中网络操作的开源库CommonsNet
2011-12-13 12:39 817<p class="MsoNorma ... -
CSDN BLOG EXPERT
2011-12-13 08:59 1094<img src="http://p. ...
相关推荐
解决 Tomcat 下中文乱码问题 在本文中,我们将讨论如何解决 Tomcat 下中文乱码问题。该问题是由于 Tomcat 默认的字符编码设置不正确引起的。我们将通过设置 Connector 元素的 URIEncoding 属性和在过滤器中设置字符...
### 使用过滤器解决中文乱码问题 在Web开发过程中,经常遇到的一个问题是中文或其它非ASCII字符的乱码问题。这种现象通常出现在浏览器接收的数据与实际编码格式不匹配时。解决此类问题的一种常见方法是使用过滤器...
解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP中文乱码的详细步骤: 1. **配置web.xml文件** 在项目的`web.xml`文件中,你需要添加一个Filter来定义处理乱码的逻辑。首先,声明一...
为了解决这个问题,我们可以利用Java的Servlet过滤器(Filter)机制来处理请求。 1. **创建过滤器**: 在Java Web应用中,过滤器是实现特定功能的一段代码,可以在请求到达目标Servlet之前或之后进行预处理和后...
### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨这一现象的原因,并提供一种有效的解决方案。 #### 问题背景 在Tomcat环境下运行Web应用程序时,如果...
解决方法是创建一个Servlet过滤器(Filter),在请求到达目标Servlet之前,设定请求的字符编码。以下是一个简单的过滤器示例,用于设置请求的字符编码为UTF-8: ```java public class SetCharacterEncodingFilter ...
综上所述,通过合理设置JSP页面编码、配置请求过滤器以及进行必要的编码转换,可以有效解决Tomcat环境下中文乱码的问题。在实际应用中,还需要根据具体情况选择合适的解决方案,并注意保持前后端编码的一致性。
- Tomcat的日志输出默认使用平台默认编码,可能导致乱码。可以通过修改`logging.properties`文件,为`java.util.logging.ConsoleHandler.encoding`设置为`UTF-8`。 - 如果使用的是自定义日志框架,如Log4j,需在...
Struts框架中的ActionForm乱码问题以及Servlet全局过滤器的转义编码处理是Java Web开发中常见的字符编码问题。在开发基于Struts的Web应用时,乱码主要出现在三个方面:页面显示乱码、参数传递乱码以及国际化资源文件...
在 Tomcat 服务器中,可以使用以下过滤器来解决中文乱码问题: ```java package com; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet....
以上示例使用Spring框架提供的`CharacterEncodingFilter`过滤器来强制所有请求都使用UTF-8编码。这种方法更加灵活,可以根据具体的应用场景来定制。 #### 三、验证修改结果 修改完成后,可以通过以下几种方式来...
【filter过滤器流程】 在Java Web开发中,Filter(过滤器)是用于处理HTTP请求和响应的重要组件。它遵循Servlet规范中的Filter接口,允许开发者在请求到达目标Servlet或JSP之前以及响应离开Servlet之后进行拦截和...
对于POST提交的表单,可以通过创建一个Servlet过滤器(Filter)来解决乱码问题。过滤器会在请求被处理前执行,可以在这里更改请求参数的编码。以下是一个简单的`SetCharacterEncodingFilter`示例: ```java ...
过滤器(Filter)在Java Web应用中扮演了重要角色,它可以用来解决这个问题。过滤器是Servlet API的一部分,允许我们在数据请求到达目标资源之前或之后进行拦截和处理,包括对字符编码的转换,从而避免乱码的出现。 ...
基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法 在基于tomcat8 的Web应用程序中,字符编码问题是常见的问题之一。特别是在处理POST请求时,中文字符可能会出现乱码的情况。为了解决这个问题,我们可以...
使用过滤器统一设置编码 - 创建一个过滤器类`SetCharacterEncodingFilter`,该过滤器会在请求到达控制器之前设置正确的编码。 - 配置过滤器类: ```java package com.ruder.filters; import java.io....
如果你的项目包含`web.xml`,确保其中的`<filter>`和`<filter-mapping>`标签用于字符编码过滤器,如`CharacterEncodingFilter`,确保设置正确的编码,例如: ```xml <filter> <filter-name>encodingFilter</...
在Web应用中,由于编码不一致,中文字符可能会出现乱码,而通过自定义过滤器可以有效地解决这个问题。 首先,让我们了解过滤器的工作原理。在Java Web应用中,过滤器通过实现javax.servlet.Filter接口并重写其...
本文主要介绍了SpringMVC Tomcat控制台乱码问题解决方案,该解决方案通过修改Tomcat的logging.properties文件和使用过滤器来解决乱码问题。使用该解决方案可以解决SpringMVC框架中出现的乱码问题,对大家的学习或者...
**方法一:实现过滤器(FILTER)设置GBK编码** 1. 参考Tomcat的Servlet-Examples目录下的示例,将 `%TOMCAT安装目录%/WEBAPPS/SERVLET-EXAMPLES/WEB-INF/CLASSES/FILTERS/SETCHARACTERENCODINGFILTER.CLASS` 拷贝到...