[javaweb]过滤器处理乱码

过滤器

有一些信息不应该被处理,要被过滤的。

1.导包


    javax.servlet.jsp.jstl
    jstl-api
    1.2

    taglibs
    standard
    1.1.2

    javax.servlet.jsp
    javax.servlet.jsp-api
    2.3.2-b01

2.继承过滤器的接口

package com.javaweb.controller;

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

/**
 * @author panglili
 * @create 2022-07-20-20:32
 */
public class FilterDemo1 implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
       servletRequest.setCharacterEncoding("utf-8");
       servletResponse.setCharacterEncoding("utf-8");
       servletResponse.setContentType("text/html;charset=utf-8");
        System.out.println("****before:");
        //让请求继续执行,如果不写请求到这里就会停止
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("####after:");

    }

    public void destroy() {
        System.out.println("destory......");
    }
}

3.写一个没有处理编码的请求

package com.javaweb.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author panglili
 * @create 2022-07-20-8:26
 */
public class tets extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String username="弄啥嘞~";
        context.setAttribute("username",username);
        resp.getWriter().write(username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      doGet(req, resp);
    }

}

此时还没有配置过滤器,看看网页效果

[javaweb]过滤器处理乱码

意料之中的乱码。

4.将过滤器注册到web配置


    encoding
    com.javaweb.controller.FilterDemo1

    encoding
    /filter

5.经过过滤器的处理

[javaweb]过滤器处理乱码

Original: https://www.cnblogs.com/lumanmanqixiuyuanxi/p/16512704.html
Author: 路漫漫qixiuyuanxi
Title: [javaweb]过滤器处理乱码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619483/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 如何成为一名开发人员——第 2 部分:非技术技能

    在第一部分中,我提到了成为开发人员所涉及的技术技能。现在我要谈一些非技术性的技能。 4 学会沟通 编程归根结底是将人类思想转化为机器逻辑的艺术。因此,一半的工作在于理解和表达人类思…

    数据库 2023年6月14日
    0100
  • MySQL之存储引擎、基本数据类型及约束条件

    一、存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,…

    数据库 2023年5月24日
    074
  • 【中国信通院 x ShardingSphere 金融用户社区】成立,多家知名金融机构正式入驻

    2022 年 5 月 20 日”OSCAR 开源先锋日”现场,Apache ShardingSphere 联合中国信通院共同成立了【中国信通院 x Shar…

    数据库 2023年6月16日
    096
  • linux-centos常用命令

    01-centos-常用命令 1.centos防火墙 关闭 systemctl stop firewalld 禁止开机启动防火墙 systemctl disable firewal…

    数据库 2023年6月11日
    098
  • CSS进阶内容—浮动和定位详解

    CSS进阶内容—浮动和定位详解 我们在学习了CSS的基本知识和盒子之后,就该了解一下网页的整体构成了 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章: CSS的三种布局…

    数据库 2023年6月14日
    077
  • 条件控制

    1. 顺序结构 java代码顺序执行 2. 选择结构 if语句 格式 if(结果为booblean类型的表达式){ 语句体; } if(结果为booblean类型的表达式){ 语句…

    数据库 2023年6月14日
    054
  • MySQL数据类型(精)

    数据类型(精) MySQL中的数据类型 整型类型 类型介绍 可选属性 M 显示宽度 不会影响类型的实际宽度 设置字段f1,f2,f3 f1 INT, f2 INT(5), f3 I…

    数据库 2023年5月24日
    088
  • MySQL<=>是什么鬼

    类似于相等比较 =运算符 官网描述 NULL-safe equal. This operator performs an equality comparison like the …

    数据库 2023年6月9日
    0103
  • SQL Server2019安装

    检查.NET 环境 打开控制面板下面的程序,选择 &#x542F;&#x7528;&#x6216;&#x5173;&#x95ED; Wind…

    数据库 2023年6月6日
    098
  • HTTP Study

    定义:在两点之间传输文本,视频,图片等超文本数据的协议和规范 HTTP风险 通信使用明文,https通过信息加密(混合加密)解决 无法验证报文的完整性,https通过校验机制(摘要…

    数据库 2023年6月16日
    071
  • MySQL中的触发器

    1.定义: 触发器和存储过程相似,都是嵌入到 MySQL 中的一段程序。触发器是由事件来触发某个操作。当数据库执行这些事件时,就会激活触发器来执行相应的操作。这些事件称为触发条件,…

    数据库 2023年6月16日
    0115
  • 容器化 | ClickHouse Operator 原理解析

    作者:苏厚镇 青云科技数据库研究工程师从事 RadonDB ClickHouse 相关工作,热衷于研究数据库内核。 通过《ClickHouse on K8s 部署篇》,对比了 Ra…

    数据库 2023年5月24日
    0112
  • 线程池系列三:动态修改线程池队列大小

    线程池中的队列要求的是阻塞队列,作用主要是当线程池处理任务能力不足时,队列存储多余的任务,从而起到削峰和缓冲的目的。 可以选择的队列种类很多,如何选择合适的队列应用到自己的线程池中…

    数据库 2023年6月6日
    082
  • Host-Only模式下虚拟机无法联网问题

    环境: 镜像:Linux CentOS7——————————…

    数据库 2023年6月11日
    093
  • 1291. 顺次数

    我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。 请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。 示例 1: 输出:…

    数据库 2023年6月16日
    076
  • 查看PostgreSQL监听端口

    如何查看PostgreSQL的监听端口呢?下面总结一下查看PostgreSQL监听端口的方法。 方法1:netstat命令查看 或者sudo netstat -plunt |gre…

    数据库 2023年6月11日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球