tomcat下的jsp和servlet的字符编码问题

filter对request请求拦截,对请求参数进行修改 对request请求进行拦截,对请求参数修改。常用于前台提交表单参数关键字的过滤。此工具可以对参数拦截并转义后提交到对应的处理类。 除了添加两个JsFilter.java和GetHttpServletRequestWrapper.java之外,需要在web.xml添加对应的配置。 sqlFilter weixin.idea.waiting.cq.controller.JsFilter sqlFilter /* 立即下载

tomcat下的jsp和servlet的字符编码问题  
 
 使用filter来改变request的编码

在前面的文章里面,我们讨论了在tomcat下的jsp和servlet的字符编码问题!


知道当没有指定request的编码的时候,从客户端得到的数据是iso-8859-1编码的(request.getParameter()得到传递的参数值);


但是我们怎么来改变request的编码呢?


方法有很多种!


 比如:在getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);之前修改


request的编码,那么在jsp/jsptoserv/hello.jsp中得到的参数值就是制定的编码的字符。


本文我们使用Filter来修改request的编码!


 


1)首先编写filter类:


package myFilter;

 

import java.io.IOException;
import javax.servlet.*;

 

public class ChangeCharsetFilter implements Filter {

 

    protected String encoding = null;/////要制定的编码,在web.xml中配置

    protected FilterConfig filterConfig = null;


        public void destroy() {


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


    }


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


            if (request.getCharacterEncoding() == null){
            String encoding = getEncoding();////得到指定的编码名字
            if (encoding != null)
                request.setCharacterEncoding(encoding);////设置request的编码
        }


         chain.doFilter(request, response);///有机会执行下一个filter


    }


    public void init(FilterConfig filterConfig) throws ServletException {


          this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");///得到在web.xml中配置的编码
      }

 

    protected String getEncoding() {


        return (this.encoding);///得到指定的编码


    }

 

}

 

2。编辑web.xml文件


<?xml version="1.0" encoding="ISO-8859-1"?>


<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">


<web-app>


<filter>
        <filter-name>SetCharacterEncoding</filter-name>
        <filter-class>myFilter.ChangeCharsetFilter </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>//////指定编码为GB2312
        </init-param>
     </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>////////对于所有的request改变其编码
    </filter-mapping>


</web-app>
///


3。


写一个a.jsp


<%@ page contentType="text/html; charset=GB2312" %>
<html>
<head></head>
<body>
<%
String name=request.getParameter("name");///本来这里得到字符是iso-8859-1编码的,不能直接


在Console中输出的,但是现在改变了request的编码方式,此时的name的编码是GB2312,所以能正确在Console中显示的。

System.out.println(name);


%>
<form action="a.jsp" method="post">
<input type="text" name="name">
<input type="submit">
</form>
<%=name%>
</body>
</html>


完!


关于中文处理的问题就写这些了!

5个Servlet过滤器实例源码(JSP) Servlet过滤器大全,各种详细使用的代码! 一、字符编码的过滤器 二、使浏览器不缓存页面的过滤器 三、检测用户是否登陆的过滤器 四、资源保护过滤器 五 利用Filter限制用户浏览权限 立即下载

相关推荐

Servlet编码过滤器的实现

NULL 博文链接:https://slccie.iteye.com/blog/897429

使用filter来改变request的编码

转载请注明:http://www.youkuaiyun.com/develop/article/17/17204.shtm作者:ggyy1977@hotmail.com                                      使用filter来改变request的编码在前面的文章里面,我们讨论了在tomcat下的jsp和servlet的字符编码问题!知道当没有指定reques

ggyy的专栏 1583

JSP 开发中过滤器filter设置编码格式的实现方法

主要介绍了JSP 开发中过滤器filter设置编码格式的实现方法的相关资料,我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式,这里提供一次性修改所有的请求编码问题,需要的朋友可以参考下

sevlet使用过滤器(Filter)统一设置字符编码

sevlet使用过滤器(Filter)统一设置字符编码

m0_74637610的博客 991

Linux 音频驱动(六) ALSA音频驱动之PCM Write数据传递过程

目录1. 前言2. PCM Data Flow3. 总结 1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在Linux 音频驱动(一) ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间不能随便互相访问。因此用户如果播放音频,则需要调用copy_from_user()将用户数据从user spa

_Modest_的博客 1万+

Vue3 + EventSource 实战:手把手教你打造实时AI聊天悬浮窗(附完整代码)

本文详细介绍了如何使用Vue3和EventSource技术构建一个实时AI聊天悬浮窗。文章从产品化视角出发,重点讲解了流式数据接收与渲染、悬浮窗UI交互的工程化实现、性能优化及高级功能,并提供了完整的代码示例,帮助开发者快速集成功能完整的AI问答系统。

assembly8low的博客 846

java web中使用过滤器对request及response中参数进行统一字符编码

在java web中字符编码的处理是一件很繁琐的事情,如果不对编码进行处理,总会出现各种奇怪的字符,甚至如果代码写的不好,还可能引发莫名其妙的错误。所以,想偷懒的人们总会来研究一些能对字符编码进行统一处理的办法,此时,过滤器来担此大任! 本文参考博客: 用过滤器filter设置编码格式 Servlet编码过滤器(Post和get方式都支持) 由于目前国际通用编码为utf-8,因此本文默认使...

吟游诗人——吟唱生命的不朽 2112

UE4载具性能调优指南:从参数设置到实战优化

本文详细解析了UE4载具性能调优的关键技巧,从WheeledVehicle类构建到轮子参数、传动系统设置,再到物理属性与操控调校。通过实战案例分享,帮助开发者优化载具的速度、加速度等核心性能,提升游戏体验。特别适合需要精细调校载具物理特性的开发者参考。

weixin_29019241的博客 469

过滤器实现对request的编码

第一步:声明包装类: //声明包装类 class MyRequest extends HttpServletRequestWrapper{     public MyRequest(HttpServletRequest request) {        super(request);     }     //增强getParamter     @Override     pub

JeremyYong的博客 536

【实战指南】OpenClaw Telegram 群聊不响应完整解决方案:从获取群 ID 到关闭隐私模式全流程

将整个从“获取群组 ID → 配置 OpenClaw Telegram 通道 → 关闭隐私模式 → 测试”的全流程都整合进去。

hampeter的博客 3490

S参数反演法

等效介质理论模型— 利用S参数反演法提取超材料结构的等效参数 等效介质理论模型—利用S参数反演法提取超材料结构的等效参数 S参数反演法,即利用等效模型的传输矩阵和S参数求解超材料结构的等效折射率n和等效阻抗Z的过程。本文对等效介质理论模型进行了详细介绍,并提供对应代码。 超材料的传输矩阵 超材料结构的传输矩阵函数为: 其中,d 为等效光学活性材料的厚度,n 为折射率,Z 表示阻抗。 S参数和传输矩阵T 超材料结构的S参数和传输矩阵T满足下列方程: 利用以上两式,可以得到等效折射率n和相对阻抗的表达式

weixin_43962864的博客 1万+

利用过滤器实现request的编码转换

关于Filter接口:创建Filter必须实现javax.servlet.Filter接口,该接口种定义了三个方法void init(FilterConfig config):用于完成Filter的初始化。void destroy();用于Filter销毁前资源的回收。void doFilter(ServletRequest request,ServletResponse response,Fil

jun_yuner的专栏 1493

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 706

Servlet+jsp+tomcat--用filter解决字符编码问题_用filter解决session失效问题

文本讲述在servlet+jsp+tomcat基础开发中 1.用filter解决字符编码问题(不需要再在每个Servlet的post方式中写上这样一行代码了request.setCharacterEncoding("utf-8");) 2.用filter解决session失效问题(解决当登陆之后,清除cookie,session依赖于cookie,再刷新页面出现500的问题,不再出现500,而...

qq_42980244的博客 347

C# Blazor Server工业监控Web UI:实时数据推送、历史曲线、报警记录,跨浏览器访问(踩坑总结+生产可用)

坑点现象解决方案StateHasChanged()太频繁服务器CPU占用高,浏览器卡顿别100ms刷新一次,1秒刷新一次足够并发高时服务器卡多个用户同时访问,服务器响应慢用Redis做分布式缓存,或者加服务器做负载均衡断线重连后数据丢失浏览器刷新后,实时数据不更新用InfluxDB存历史数据,刷新后重新查询工业现场网络不稳定Blazor Server频繁断线用SQLite本地缓存,断网时数据不丢,联网后补发历史曲线查询慢查询过去7天的数据,要等很久。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 305

092、多sensor帧同步在环视系统中的实现——基于瑞芯微RK3588的PPS同步与曝光同步方案

摘要: 本文探讨了瑞芯微RK3588平台在360环视系统中实现多摄像头帧同步的技术方案。针对环视拼接常见的动态场景错位问题,提出了PPS同步与曝光同步相结合的解决方案。通过GPIO硬件触发实现四路摄像头同步曝光,配合I2C全局曝光控制,将时间误差控制在0.5ms内。文章详细解析了RK3588设备树配置、内核驱动实现中的关键细节,包括同步信号处理、寄存器原子写入等核心技术点,并分享了量产中遇到的温度漂移、信号完整性等实际问题及解决方法。最终通过硬件整形和电源优化,将同步抖动控制在±5μs以内,有效解决了动态拼

zzfmlxs的博客 33

java(16)--servlet+jsp+四大域+javabean+开发模式

一、javaweb1. HTTP协议Http协议制定客户端与服务器端的通讯格式 Http协议一定一问一答 问: 请求消息 请求行:请求方式get和post的区别 消息头:referer 答: 响应消息 响应消息: 压缩方式 Accept-Encoding 通知对方下载: content-disposition:attachment;filename=文件名2. tomcat服务器1)

上善若水,厚德载物 815

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

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

Java 中文问题的解决 mysql, oracle, servlet, jsp

在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求,上网找资料终于发现了最完美的解决办法,不用每个地方都转换了,而且无论get,和post都正常。写了个文档,贴出来希望跟我有同样问题的人不再像我一样痛苦一次:-)上传文件有问题,只好直接贴了,难看点:-)-------------------Tomcat 5中文问题author:kiss__sky@163.c

seaso的专栏 886

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Servlet-jsp

Servlet 与 JSP nginx 可以部署静态内容 tomcat 可以部署动态内容 常见操作 startup.bat shutdown.bat ctrl+C 找后台 java 进程 server.xml 可以端口,配置字符集,虚拟主机 … maven pom.xml GAV 坐标 &lt;dependency&gt; &lt;groupId&gt;组织 &lt;...

zpj890512的博客 282

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Tomcat 下 JSP(enctype="multipart/form-data") post 提交时中文乱码解决方案

This problem had been bugging me for 3 days!Background:Use JSP and Servlet to implement file upload。The uploaded file is stored in file system, the related info like description and Mime type, siz

hantb的专栏 2977

Servlet 与 JSP(一)

富贵必从勤苦得,男儿须读五车书 Servlet 与 JSP nginx 可以部署静态内容 tomcat 可以部署动态内容 常见操作 startup.bat shutdown.bat ctrl+C 找后台 java 进程 server.xml 可以端口,配置字符集,虚拟主机 … maven pom.xml GAV 坐标 &lt;dependency&gt; &lt;gro...

We_chuan的博客 400

Jsp与Servlet 编码问题

1.编码格式: ServletRequest setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException 重写此请求正文中使用的字符编码的名称。必须在使用 getReader() 读取请求参数或读取输入之前调用此方法。否则,此方法没有任何效果。 env 包含字符编码名称的 String。 Throws ...

wangxulei123的博客 286
上一篇: 深入了解MIDP-基础篇
下一篇: Java学习从入门到精通
天地客人
博客等级 码龄23年 62粉丝 168原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值