IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Filter实例对post请求的中文乱码进行处理 -> 正文阅读

[网络协议]Filter实例对post请求的中文乱码进行处理

Filter

简介:Filter过滤器是JavaWeb三大组件之一,是一个实现了javax.servlet.Filter 接口的类。过滤器对客户端和服务器端之间的请求与响应信息进行拦截过滤。当浏览器访问服务器中的目标资源时, 会被Filter拦截, 在Filter中进行预处理操作,然后再将请求转发给目标资源。服务器做出的响应也需要将响应发送给过滤器处理后, 才会发送给服务端。

Filter在通过init()方法完成初始化,在doFilter()方法中对请求响应进行拦截过滤,通过chain.doFilter()放行相应资源。当有多个Filter时按照其配置顺序加载。

使用场景:解决post请求乱码问题,控制浏览器缓存页面资源,控制权限,自动登录等。

实例:对post请求的中文乱码进行处理

package com.sl.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 实现过滤器
 */
@WebFilter("/*")//拦截所有资源
public class MyFilter01 implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("****MyFilter01初始化****");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		    System.out.println("****MyFilter01开始处理****");
		    //基于HTTP
		    HttpServletRequest request2 = (HttpServletRequest)request;
		    HttpServletResponse response2 = (HttpServletResponse)response;
		    //处理post请求乱码
		    request2.setCharacterEncoding("UTF-8");
		    //放行资源
		    chain.doFilter(request2, response2);
		    System.out.println("****MyFilter01处理结束****");
	}
	@Override
	public void destroy() {		
		System.out.println("****MyFilter01被销毁****");
	}

}

package com.sl.servlet;

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

/**
 * Servlet implementation class MyServlet01
 */
@WebServlet("/MyServlet01")
public class MyServlet01 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyServlet01() {
    	System.out.println("****MyServlet01实例化****");
       
    }

	@Override
	public void init() throws ServletException {
		System.out.println("****MyServlet01初始化****");
	}
	@Override
	public void destroy() {
		System.out.println("****MyServlet01被销毁****");
	}
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("姓名:"+ request.getParameter("uname"));
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="MyServlet01" method="post">
	姓名:<input type="text" name="uname">
	<button>提交</button>
</form>
</body>
</html>

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:44:27  更:2021-09-14 13:46:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:54:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码