[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)

大家都在看

  • Redis——数据操作

    2022-09-20 Redis——select Redis数据库中的数据库的个数为: 16个,使用0号数据库开始的,到第15个数据库结束。 在ubantu中,进入Redis客户端…

    数据库 2023年6月14日
    060
  • MySQL 批量修改库、表、列的排序规则

    1.表字段修复 SELECT TABLE_SCHEMA ‘数据库’, TABLE_NAME ‘表’, COLUMN_NAME ‘字段’, CHARACTER_SET_NAME ‘原…

    数据库 2023年6月14日
    089
  • PHP获取前一天,前一个月,前半年,前一年的时间戳

    // 获取前一秒 strtotime("-1 seconds"); // 获取前一分钟 strtotime("-1 minute"); //…

    数据库 2023年6月14日
    0121
  • my2sql工具之快速入门

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 my2sql工具之快速入门 1….

    数据库 2023年5月24日
    083
  • Java并发

    Java并发 JAVA技术交流群:737698533 CAS compare and swap 比较并交换,cas又叫做无锁,自旋锁,乐观锁,轻量级锁 例如下面的代码,如果想在多线…

    数据库 2023年6月16日
    070
  • MySQL数据库性能优化

    前言 由于一些企业需要在本地部署系统(使用企业服务器部署系统,数据库也部署在同一台服务器上),本地部署的系统的服务器往往无法到达我们的云部署服务器,速度性能更差。尤其是在查询统计报…

    数据库 2023年5月24日
    087
  • Java异步执行器CompletableFuture源码解析

    CompletableFuture是对 Future的一种强有力的扩展, Future只能通过轮询 isDone()方法或者调用 get()阻塞等待获取一个异步任务的结果,才能继续…

    数据库 2023年6月11日
    080
  • JavaWeb过滤器Filter(附tomcat部分源码分析)

    过滤器Filter 过滤器通常对一些web资源进行拦截,做完一些处理器再交给下一个过滤器处理,直到所有的过滤器处理器,再调用servlet实例的service方法进行处理。过滤器可…

    数据库 2023年6月16日
    0114
  • Are You OK?主键、聚集索引、辅助索引

    每张表都一定存在主键吗? 关于这个问题,各位小伙伴们不妨先自己想一想,再往下寻找答案。 首先公布结论: 对于 InnoDB 存储引擎来说,每张表都一定有个主键(Primary Ke…

    数据库 2023年6月6日
    070
  • Springboot打包部署项目

    这里打包的是jar项目,也就是没有webapp目录,通过maven打包插件打包发布到服务器 废话不多少直接开撸废话不多少直接开撸废话不多少直接开撸废话不多少直接开撸废话不多少直接开…

    数据库 2023年6月6日
    074
  • logrotate command in Linux

    背景 在生产过程中,由于磁盘空间、保留周期等因素,会对系统、应用等日志提出要求,要求系统日志定期进行轮转、压缩和删除,从而减少开销,而系统自带的 logrotate 则是一个简单又…

    数据库 2023年6月14日
    0157
  • Linux定时任务调度

    任务调度是指系统在某个时间执行特定的命令或程序,任务调度主要有两种,第一种是系统工作,需要周而复始的执行,比如病毒扫描。第二种是个人用户工作,用户需要在某个特定的事件执行某些程序,…

    数据库 2023年6月16日
    078
  • 第十七章 AOP编程

    1.AOP概念 AOP(Aspect Oriented Programing) 面向切面编程 = Spring动态代理开发 以切面为基本单位的程序开发,通过切面间的相互协同,相互调…

    数据库 2023年6月14日
    080
  • Java正则表达式Pattern和Matcher类详解

    概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式. Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配 Pattern类 常用方法及介绍 Pa…

    数据库 2023年6月11日
    090
  • 索引的树结构

    二分查找 二叉树 二叉平衡树 B-TREE :二叉平衡树的基础上,使加载一次节点,可以加载更多路径数据,同时把查询范围缩减到更小 缺点:业务数据的大小可能远远超过了索引数据的大小,…

    数据库 2023年6月16日
    0124
  • liquibase新增字段注释导致表格注释同时变更bug记录

    liquibase是一个用于数据库变更跟踪、版本管理和自动部署的开源工具。它的使用方式方法可以参考官方文档或者其他人的博客,这里不做过多介绍。 1. 问题复现 在使用过程中发现了一…

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