使用过滤器(Filter)解决JSP/Servlet中的中文(编码)问题

时间: 2007-12-18

仅仅对于中文问题,我们可以在获取参数的时候指明:
String myparam = new String(request.getParameter("myparam").getBytes("ISO8859_1"),"GB2312");

如果一个应用里有多个地方要获得参数并且每个地方都要用这样的方式来解决编码问题,那肯定会很有意思;如果以后不仅仅是中文问题还有其他字符问题,那肯定更有意思。

其实可以在数据进/出的时候就将他们处理,以获得和设置正确的编码信息,这需要用到过滤器(Filter),以下是使用过滤器的方法:


1、编写过滤器SetCharacterEncodingFilter.java:

package cn.net.badboy.jane.tools;

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 javax.servlet.UnavailableException;


public class SetCharacterEncodingFilter implements Filter {


// ----------------------------------------------------- Instance Variables



protected String encoding = null;



protected FilterConfig filterConfig = null;



protected boolean ignore = true;


// --------------------------------------------------------- Public Methods



public void destroy() {

this.encoding = null;
this.filterConfig = null;

}



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

// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}

// Pass control on to the next filter
chain.doFilter(request, response);

}



public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;

}


// ------------------------------------------------------ Protected Methods



protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}



2、配置web.xml,在web-app元素内增加:

<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>cn.net.badboy.jane.tools.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Servlet容器Filter的使用(Filter解决乱码问题实例) 这一切还要从乱码讲起....场景: 是这样子的,在做用户添加和修改模块的时候,做完了之后,在填写用户名的时候,如果我们输入中文的话,提交到数据库中, 发现数据库中的代码是乱码. 于是去网上查了查关于中英文乱码的事,怎么会提交到数据库中的汉字变成了乱码呢? 我们在这个jsp页面的开始明确给出了页面的编码格式:   GB18030代表的是汉字的编码的, 怎么会出现的乱码? 下面先解释一下 cha 阅读详情

相关推荐

JSP(Servlet,Filter)简单实现图书信息的添加功能,并创建字符编码过滤器,避免中文乱码的产生

代码 1、index.jsp <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <html> <head> </head> <body> <form action="AddServlet" method="post"> <table algin="center" boder="1" width="350"> <t

qq_44442911的博客 789

Filter的使用实例

      JSP技术构建在Servlet技术之上,所以Servlet和JSP的技术本质是一样的,JSP能做到的,Servlet都能做到,但是它们却各有所长。Servlet比较适合作为控制类组件,比如视图控制器等。另外,Servlet还可以作为过滤器、监听器等。Servlet不仅可以动态生成HTML内容,还可以动态生成图形。总而言之,Servlet在项目中作为控制类的组件,并且处理一些后台业务,J

刘宇的技术博客 2646

J2EE学习笔记(五)之Servlet中的Filter过滤器

一、Filter简介上一话提到了Servlet原理,当我们在运行一个JSP页面的时候,其实JSP页面会被编译成Servlet文件,Servlet文件来处理和响应用户的请求。Filter过滤器可以认为是Servlet的一种“加强版”,可以对用户的请求进行预处理,也可以对HttpServletResponse进行后处理。二、案例一——字符编码什么时候需要用到Filter呢? 来举一个小栗子~~~我们在

Yolanda_NuoNuo的专栏 1757

【JavaWeb开发-Servlet】应用过滤器实现登录功能验证(filter-login)

添加过滤器后每次访问不同路径都会先进行session过滤,看是否已经登录,登录了就可以访问其他页面,没登录就返回登录界面。因为此时session为空,跳转到登录页,此时session还是为空,陷入死循环,程序无法正常启动。原来需要一个一个写,现在通过过滤器拦截与放行可以实现一劳永逸了。修改方法:获取请求路径并进行判断,允许特定的几个页面放行。将filter写在最上面,/*可以拦截所有路径。

有朋自远方来,不亦乐乎。 2611

全面解析JSP中文乱码过滤器的实现与应用

在Web开发中,中文乱码问题是一个常见的头疼问题,它可能会在浏览器端或服务器端显示无意义的字符替代,影响用户体验和系统数据的准确性。了解中文乱码问题的成因是解决和预防它的第一步。在Web应用中,过滤器(Filter)是一种用于拦截请求和响应,以完成特定处理过程的组件。过滤器工作于请求被发送到目标资源之前,可以对请求进行一系列预处理操作,也可以在请求处理后对响应进行修改。通过这种方式,过滤器可以控制对特定资源的访问,以及对数据进行编码转换或安全检查等。过滤器的工作机制是通过实现。

weixin_34268462的博客 666

如何配置Filter过滤器处理JSP中文乱码

配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记<filter>和<filter-mapping>; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的Server.xml文件配置URIEncoding; 4.前台页面设置contentType的charset值与web.xml里设置的值一致。

JSP详细篇——Servlet过滤器和监听器(二)

JSP中Servlet过滤器详解

yaguanzhou2014的专栏 927

Nvidia Tesla A100 驱动安装方法

Nvidia Tesla A100 驱动安装方法 遇到的问题:以前安装tesla系列、geforce系列等gpu 驱动的时候,只需执行nvidiaxxxx.run驱动包或者安装nvidiaxxxx.rpm包即可,但遇到新的GPU Nvidia Tesla A100的时候,安装完驱动似乎不起作用,找了半天资料,原来需要以下步骤才可以使用;

qq_24343177的博客 2万+

Servlet Filter实现全站统一编码,解决中文乱码问题

在开发 Web 项目时,解决中文乱码问题是不可避免的。在前面所学的知识中,解决乱码的通常做法是在 Servlet 程序中设置编码方式,但是,当多个 Servlet 程序都需要设置编码方式时,就会书写大量重复的代码。

unber的博客 1184

基于stm32开发的红外循迹小车

2.L298N电机驱动模块:分别是5V,12V,GND,可以通过外加电源给驱动模块供电,IN1,IN2,IN3,IN4,EN1,EN2,通过给IN口不同的电平,可以达到控制电机正反转,EN口为使能口,可以通过给EN口不同的PWM波,来达到控制小车速度,1.红外循迹模块:检测黑线的原理是向外发射红外线,当没有遇到黑线的时候,返回回来,之后返回高电平,当遇到黑线的时候,红外被吸收,返回高电平,读取相应IO口的电平就可以知道小车此时的大致位置;模块有四个输入接口,分别连接四个TT马达,驱动小车运动;

2301_81374681的博客 1万+

新手必看!Stata工具变量分析中的三大陷阱:如何正确解读LM统计量、CDW检验和Hansen J值

本文深度解析Stata工具变量分析中的三大核心检验:不可识别检验、弱IV检验和过度识别检验,帮助新手避开常见陷阱。详细解读LM统计量、CDW检验和Hansen J值的正确使用方法,提供实战案例和Stata操作指南,确保研究结论的可靠性。

weixin_29231027的博客 571

[JSP] 利用Filter解决Servlet输出中文乱码的问题

Servlet的过滤器, 用来解决中文输出乱码的问题. 1. Filter过滤器的代码如下: package filter;import java.io.IOException;import java.util.Collection;import java.util.Iterator;import java.util.Map;import java.util.Set;import...

bamian4814的博客 185

淘特App x-sign参数逆向实战:从抓包到算法定位

本文详细解析了淘特App的x-sign参数逆向过程,从抓包分析到算法定位,涵盖了使用jadx-gui进行静态分析、Frida动态Hook验证以及Native层算法还原等关键技术。文章重点介绍了x-sign参数的生成机制及其在阿里系应用中的安全防护策略,为逆向工程师提供了实用的调试技巧和对抗策略。

5b6n7m8的博客 226

Jsp乱码问题的基本解决方案,转码 + 过滤器 Filter

利用转码&过滤器的方式解决Jsp中常见的两种中文乱码情况.

hang_jian的博客 2629

FISCO BCOS 三、多群组部署以及新节点加入群组

本章主要以星形组网和并行多组组网拓扑为例,指导您了解如下内容:了解如何使用创建多群组区块链安装包;了解创建的多群组区块链安装包目录组织形式;学习如何启动该区块链节点,并通过日志查看各群组共识状态;学习如何向各群组发送交易,并通过日志查看群组出块状态;了解群组内节点管理,包括节点入网、退网等;了解如何新建群组。

qq_63235624的博客 2919

基于NB-IoT的智慧路灯监控系统(NB-IoT专栏—实战篇1:项目简介)

基于NB-IoT技术的城市道路智慧路灯监控系统,在每个照明节点上安装一个集成了NB-IoT模组的单灯控制器,单灯控制器再经运营商的网络,与路灯控制平台实现双向通信,路灯控制平台直接对每个灯进行控制,包括开关灯控制、光照检测、自动调节明暗、电耗分析等操作。

不脱发的程序猿 5万+

使用filter过滤器解决编码问题

编码问题在java开发中很常见,

qingfoo的专栏 2701

ShowDoc item_id 未授权SQL注入漏洞复现

2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可暴破用户token获取系统后台权限,建议所有使用该系统的企业尽快升级修复,以确保系统安全。

0xSec 2357

使用Filter实现统一全站编码

在web开发中,经常会遇到中文乱码问题。 一般我们都是在Servlet中设置编码方式,但是,如果多个Servlet程序都需要设置编码方式,必然会导致大部分的重复代码。 为此,可以在Filter中获取到的请求和响应消息进行编码,从而统一全站的编码。 下面写详细代码 1.编写form.jsp页面 该页面用于提交用户登陆的表单信息 <%@ page language="java" c...

YRZsir的博客 1758

华为OD机试真题2025双机位B卷 Java&Go 实现【朋友圈个数】

给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔

MISAYAONE的博客 516

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaWeb学习-Filter-5-Filter实现全局编码过滤器

这篇来做一个Filter在全局编码过滤器练习,这篇新建一个web项目来做练习。 web项目创建 先创建一个叫GlobalFilter的web动态项目,把前面文章出现过的login.jsp复制过来,改成如下代码。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UT...

Anthony_tester的博客 1752

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JSP/Servlet页面中文显示为乱码的解决方式

经过网上搜索和自己的经验,JSP/Servlet页面的中文显示为乱码的问题可以细分为5类: 1. JSP页面显示乱码。 2. Servlet接收Form/Request传递的参数时显示为乱码 3. JSP接收Form/Request传递的参数时显示为乱码 4. 用时页面显示乱码 5. 数据库存取的时候产生乱码。 解决方式: 1. JSP页面显示乱码的解决方式: 第一种方式为在页面的

959

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JSP 中的 Filter 过滤器

一、什么是过滤器     过滤器是一个程序,它先于与之相关的 servlet 或 JSP 页面运行在服务器上。过滤器可附加到一个或多个 servlet 或 JSP 页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择: (1)以常规的方式调用资源(即,调用 servlet 或 JSP 页面)。 (2)利用修改过的请求信息调用资源。 (3)调用资源,

士不可以不弘毅,任重而道远 938

使用Filter过滤器解决字符编码问题

Java中的字符编码,默认为:ISO-8859-1(西方编码)。这种编码方式为单字节码,只支持英文、俄文、葡萄牙文等乱七八糟文,不支持中文。因此,我们需要对JSP页面或者Servlet中进行字符编码集的处理,国际编码(UTF-8)。在JSP页面中把最上方标签中的字符编码ISO-8859-1改为UTF-8即可。 &lt;%@ page language="java" import="java.uti...

刘鹏博的博客 2万+

JSP用过滤器解决request中文乱码问题

(1)客户端的数据一般是通过HTTP  GET/POST方式提交给服务器,在服务器端用request.getParameter() 读取参数时,很容易出现中文乱码现象。 (2)用过滤器解决request中文乱码问题。 (3)代码如下: package my; import java.io.*; import javax.servlet.*; import javax.servlet.ht

徐刘根的博客 4017

Servlet中的Filter

一、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等 一些高级功能。   Servlet API中提供了一个Filter接...

路人而已的专栏 5117
上一篇: 使用ant构建应用
下一篇: Spring简单使用
JavaNoob
博客等级 码龄19年 4粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值