当前位置: 首页 > news >正文

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

(1)客户端的数据一般是通过HTTP  GET/POST方式提交给服务器,在服务器端用request.getParameter()

读取参数时,很容易出现中文乱码现象。

(2)用过滤器解决request中文乱码问题。

(3)代码如下:

package my;

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

public class ChineseFilter implements Filter { //定义了一个过滤器 实现Filter接口

  private FilterConfig config = null;

  public void init(FilterConfig config) throws ServletException {
    this.config = config;
  }

  public void destroy() {
    config = null;
  }

  public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException 
 {  
       request.setCharacterEncoding("GB2312");
       chain.doFilter(request, response); //把过滤后的request对象转发给下一个过滤器处理
  }
}


(4)部署过滤器。编辑WEB-INF\web.xml文件,添加以下内容:

<filter>
    <filter-name>cf</filter-name>
    <filter-class>my.ChineseFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>cf</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

这里的<dispatcher></dispatcher>主要是配合RequestDispatcher使用。


1.取值为REQUEST时 表示有请求直接来自客户端时,过滤器才能被激活,如果请求是来自RequestDispatcher.forward时不激活;


2.取值为FORWARD时 表示如果请求是来自RequestDispatcher.forward时此过滤器才激活;


3.取值为INCLUDE时 表示如果请求是来自RequestDispatcher.include时此过滤器才激活;


4.取值为ERROR时 表示如果请求是来自RequestDispatcher使用“错误信息页”时此过滤器才激活;


5.默认为REQUEST。


(5)创建一个jsp页面检验

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<%
    String s=request.getParameter("data");
	out.print(s);
%>
</body>
</html>


(6)OK!到此结束 望你成功!

相关文章:

  • Advanced R之编程风格
  • SpringMVC实现一个controller写多个方法
  • 枚举类型的抽象方法定义实现
  • 大数据笔记07:大数据之Hadoop的HDFS(特点)
  • 【数据库学习笔记】(1)JDBC驱动程序的分类
  • 【数据库学习笔记】(2)JDBC加载并注册数据库驱动并连接数据库
  • 【数据库学习笔记】(3)SQL数据类型与Java数据类型的对应关系
  • 如何提高团队管理能力1
  • 【数据库学习笔记】(4)JDBC数据源和连接池
  • Flash制作遇到的小问题1--为何变形需要将图形打散(Ctrl+b)
  • MapReduce 规划 六系列 MultipleOutputs采用
  • BeanUtils数据封装与表单JavaBean
  • 文件上传和下载的JavaBean组件
  • JDBC存储过程的调用
  • Ext之Grid
  • android 一些 utils
  • download使用浅析
  • Elasticsearch 参考指南(升级前重新索引)
  • exports和module.exports
  • SQLServer之创建显式事务
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue2.0 实现互斥
  • 反思总结然后整装待发
  • 分享几个不错的工具
  • 复习Javascript专题(四):js中的深浅拷贝
  • 和 || 运算
  • 浅谈web中前端模板引擎的使用
  • 树莓派 - 使用须知
  • 我与Jetbrains的这些年
  • 一个项目push到多个远程Git仓库
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • hi-nginx-1.3.4编译安装
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ![CDATA[ ]] 是什么东东
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $L^p$ 调和函数恒为零
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)逆序输出字符串
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Python第六天)文件处理
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (待修改)PyG安装步骤
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (学习日记)2024.01.09
  • (一)RocketMQ初步认识
  • (转)nsfocus-绿盟科技笔试题目
  • . Flume面试题
  • .bat批处理出现中文乱码的情况