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

【JavaWeb】用过滤器实现字符集设置和登录拦截 导读:如果未经登录就去访问某些网页资源,会被弹出类似“请登录”的消息。在访问网页资源之前,对不满足条件的请求进行拦截、处理,这就是过滤器。 过滤器的常见用途 请求字符集处理 网页资源权限访问控制 敏感词屏蔽 过滤器的工作流程和生命周期 工作流程:客服端发送到服务器的请求,如果满足拦截条件,则过滤器会对这个请求进行拦截,并进行相应处理。再将处理后的请求发送至服务器端。服务器端处理完请求,发... 阅读详情

         乱码问题在java开发中很是常见,出现场合有jsp页面显示,数据库存值取值,xml解析等。在开发中统一编码,遵守规范,是避开这些恼人问题的良方。

    一:保证页面支持中文

         页面编码建议使用UTF-8,  如在jsp页面统一使用以下文件头,这个依据具体情况使用合适的编码方式

   <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    二:servlet

        对于POST请求可以在获取请求信息之前调用 request.setCharacterEncoding(charSet) 设置字符编码。设置的字符编码需要和页面设置的字符编码一致!如我们前面在页面中使用了utf-8,这里就应该为utf-8。

         对于GET 请求,默认情况下,request.setCharacterEncoding(charSet) 对其不适用。因为 request.setCharacterEncoding(charSet)  只能影响到请求体的编码。对于 Tomcat 服务器而言,需要修改 server.xml 文件的 Connector 节点,添加 URIEncoding 属性或 useBodyEncodingForURI 属性

	<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="80" 
	protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

   三:过滤器

     将设置字符编码的代码放入一个过滤器中,具体实现如下:

import java.io.IOException;

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

public class EncodingFilter implements Filter {

    public EncodingFilter() {}

	public void destroy() {}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		ServletContext servletContext = filterConfig.getServletContext();
		String encoding = servletContext.getInitParameter("encoding");
		request.setCharacterEncoding(encoding);
		response.setCharacterEncoding(encoding);
		chain.doFilter(request, response);
	}

	private FilterConfig filterConfig;
	
	public void init(FilterConfig fConfig) throws ServletException {
		this.filterConfig = fConfig;
	}

}

之后需要在web.xml中配置一下

web.xml

 	<context-param>
	    <param-name>encoding</param-name>
	    <param-value>UTF-8</param-value>
	  </context-param>
	<filter>
	    <display-name>EncodingFilter</display-name>
	    <filter-name>EncodingFilter</filter-name>
	    <filter-class>com.test.filter.EncodingFilter</filter-class>
	  </filter>
	  <filter-mapping>
	    <filter-name>EncodingFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	  </filter-mapping>

大部分的编码问题到以上也就结束了,但是如果碰到从别的地方接收请求,出现了乱码,又该怎么办呢?

可以用如下代码来转,

String content=new String(req.getParameter("education").getBytes("iso-8859-1"),"utf-8")
无论编码为iso-8859-1,gb2312、gbk、或是其他,getBytes("")相应的也得随着改变,可以将字符编码转成自己想要的格式


(附:微信手机端发信格式为gbk...)


Python爬虫实战:全网政府招标信息采集与整合 本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。 阅读详情

相关推荐

gnuradio+b210实现FM收音机

gnuradio+b210实现FM收音机环境介绍FM接收1 Flow Graph2 变量参数FM发射1 Flow Graph 环境介绍 Name Version gnuradio 3.7.14.0 uhd 3.15.0.0 ubuntu 18.04 usrp b210 参考 https://www.ijedr.org/papers/IJEDR1702038.pdf Audio File Transmission using GNURADIO and USRP FM接

u011745228的博客 5124

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

源码跟踪案例

ShanLanF的博客 1818

深入解析MOS管电容特性:从基础理论到高频应用

本文深入解析了MOS管的电容特性,从基础物理结构出发,详细拆解了栅氧电容、重叠电容和结电容的成因与影响。文章重点探讨了电容值随工作状态变化的非线性特性,并分析了其在CMOS高频开关电源、射频电路等应用中的关键作用,包括开关损耗、米勒效应、信号完整性挑战以及如何将电容特性转化为可控元件(如MOS变容管)的机遇。最后提供了从选型、仿真到PCB布局的实战设计指南。

weixin_29278805的博客 381

使用过滤器对所有请求进行字符编码过滤

过滤器对访问资源的请求或服务器的响应进行过滤

wds的博客 2444

【农业生产系统模型】基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

APSIM模型有Classic和Next Generation两个系列模型,能模拟几十种农作物、牧草和树木的土壤-植物-大气过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等诸多与农业生产和科研有关的领域。R语言是一门应用场景广泛、简单易学的程序语言,APSIM模型开发了许多R语言辅助包,在APSIM模型的气候、土壤、管理措施等数据准备,自动化模拟,参数优化和结果分析上都发挥着重要的作用。案例一:APSIM模型输入参数和土壤文件的制备。

2303_79243743的博客 1046

混合动作空间在强化学习中的创新应用:PDQN与MPDQN算法解析

本文深入解析了强化学习中处理混合动作空间的PDQN与MPDQN算法。针对既有离散选择又有连续调节的复杂决策场景,PDQN通过参数化深度Q网络,巧妙结合DQN与DDPG进行交替优化;MPDQN则进一步改进,为每个离散动作提供专属参数评估以减少干扰。文章通过游戏、自动驾驶等实例阐述了其应用价值与面临的挑战。

efc123456的博客 861

编写通用的字符集编码的过滤器Filter

        简介:数据传输,通常依赖GET/POST请求,但是都有可能提交中文数据。一般在Serlvet中对中文进行编码处理。Servlet下POST/GET中文乱码的处理方式   我们现在可以将处理乱码交给过滤器(Filter)完成,只需要在Servlet中调用request.getParameter();接收参数即可,而不去关心到底get/post如何处理乱码.   增强request中的...

玲儿叮当想 1037

手把手教你用TJA1145A实现CAN节点智能唤醒(含数据帧过滤技巧)

本文详细介绍了如何使用TJA1145A收发器实现CAN节点的智能唤醒功能,包括数据帧过滤技巧和超低功耗设计。通过硬件级帧过滤和双条件唤醒机制,TJA1145A在保持微安级休眠电流的同时,能对特定报文做出毫秒级响应,显著提升电池供电设备的续航能力。

weixin_28721917的博客 249

过滤器实例——字符编码Filter

  字符编码过滤器是一种快速解决Tomcat服务器中request和response乱码问题的解决方案。一般程序中要解决request、resopnse传中文参数乱码问题时一般通过在取参数前对request进行setCharacterEncoding("UTF-8")编码设置,这种方法需要在每个要使用的页面中都进行编码设置,用起来十分麻烦。字符编码过滤器通过在每个页面访问前执行Filte...

VirusCode2016的博客 450

CTR-GCN 论文解读

提出了一种信道拓扑优化图卷积,该卷积可以动态有效地对信道拓扑进行建模。共享拓扑是一个参数化的邻接矩阵,作为所有通道的拓扑先验,并提供顶点之间的一般相关性。通过使用特定于通道的相关性细化共享拓扑,CTR-GC 获得了通道拓扑。

一杯水果茶!足矣~ 3087

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2255

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

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

刘鹏博的博客 2万+

华为s110、s220、s310、s530、s620 配置ssh,配置web登录

在服务器端创建SSH用户。

送个祝福给小豪的博客 317

关于在struts 框架中使用Filter过滤器解决汉字编码问题

很简单的一个问题,只要两个步骤就可以了。 1.在web.xml最开始的地方加上对filter过滤器的声明,指明过滤器使用的类filter-class>,要使用的编码param-value>,以及过滤器的适用范围url-pattern>:        filter>              filter-name>setEncodingfilter-name>    

123xxx的专栏 4114

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

关于在struts 框架中使用Filter过滤器解决汉字编码问题(转)

转自:http://blog.youkuaiyun.com/123xxx/archive/2005/01/27/270575.aspx 1.在web.xml最开始的地方加上对filter过滤器的声明,指明过滤器使用的类<filter...

164

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

时间: 2007-12-18 仅仅对于中文问题,我们可以在获取参数的时候指明: String myparam = new String(request.getParameter("myparam").getBytes("ISO8859_1"),"GB2312"); 如果一个应用里有多个地方要获得参数并且每个地方都要用这样的方式来解决编码问题,那肯定会很有意思;如果以后不仅仅是中文问...

JavaNoob的博客 313

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

16. JSP 过滤器解决Post编码【乱码】问题

使用过滤器Filter解决乱码问题 在之前编写servlet时,需要在每个servlet中声明编码,这种方式比较繁琐,下面使用Filter解决该问题。 首先搞个Servlet 做登录后台: package filter; import java.io.IOException; import javax.servlet.ServletException; import javax.servle...

Bi-Hu的博客 154

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

在filter过滤器里面使用动态代理的方法解决网站request请求乱码问题,实现统一编码(附带装饰者模式的写法)

动态代理模式的写法 package com.it.filter; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import javax.servlet.Filte...

未来架构师的博客 413

Javaweb之Filter案例练习-项目全局编码过滤器

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

byj4352的博客 202

使用 Filter 过滤器 处理中文 乱码问题

使用 Filter 过滤器 处理中文 乱码问题

浪迹天涯 1306

【Java Web问题解决】过滤器Filter进行编码过滤后页面空白、显示不了原因及解决办法

过滤器Filter进行编码过滤后页面空白、显示不了原因及解决办法 前言 之前一篇文章是解决表单提交乱码问题的 原文链接如下: 【Java Web问题解决】提交表单后显示乱码原因及解决办法 当时还没有学到过滤器,说过学到过滤器后和大家分享用过滤器解决乱码问题 如今学到了,就拿出来和大家分享 过滤器解决乱码文章链接如下: 【Java Web问题解决】使用过滤器Filter解决提交表单后显示乱码问...

菜鸟的后花园 3576

通过过滤器Filter解决web项目的中文乱码问题

事先说明:这里的问题解决是针对web项目中怎么通过Filter过滤器解决当前项目下所有Servlet资源的中文乱码问题。 一是post请求出现的中文乱码; 二是respose输出字符流出现的中文乱码问题; 一、配置Filter的拦截路径 为了能过使得当前项目下所有的Servlet资源都能解决乱码问题,我们配置了Filter的注解为@WebFilter("/"),“/”代表当前项目的所有Ser...

干嘛卷来卷去的博客 3051

JavaWeb过滤器解决中文乱码问题

javaweb项目实现过滤器Filter解决前端表单提交的信息出现的中文乱码问题 Javaweb三大组件是:Servlet,Filter,Listener。1、ServletServlet作为中转处理的容器,连接了客户端和服务器端的信息交互和处理。2、Filter拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response,实现开发者想得到的功能。3、Listener。

weixin_51604181的博客 2311
上一篇: XML document structures must start and end within the same entity.
下一篇: utf8 和 UTF-8 有什么区别
君子陌
博客等级 码龄17年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值