栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目

过滤器Filter解决中文乱码 0、前言

最近上实训课,老师要求用原生的Web技术来开发后端数据接口。讲真啊,自从用了框架,就好久没有用这些基础的技术了,虽然原理都是相同,只是用法不同而已。

怎么说呢?我觉得基础还是很重要的,框架是高度封装的,用的时候确实爽,但是一旦报错,不知道原理的话,更难定位和解决,所以我个人认为复习基础不但有助于理解框架的原理的,DEBUG的时候也能更加得心应手。

场景:现在有一个数据接口,查询出学生的分页列表,但是显示浏览器上会有乱码,接下来我们给出几种解决方式。


1、解决方法 1.1、方法1

在控制层的每个Servlet类的doPost或者doGet方法中加入以下两行代码即可。

response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "textml;charset=utf-8");

1.2、方法2

使用过滤器解决。

EncodingFilter.java代码如下:

package edu.zhku.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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class EncodingFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}

	
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain filterChain) throws IOException, ServletException {
		// 将父接口转为子接口
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		// 获取请求方法
		String method = request.getMethod();
		// 解决post请求中文数据乱码问题
		if (method.equalsIgnoreCase("post")) {
			request.setCharacterEncoding("utf-8");
		}
		// 处理响应乱码
		response.setContentType("text/html;charset=utf-8");

		// 放行请求
		filterChain.doFilter(request, response);
	}

	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {

	}
}

web.xml代码如下:



	

	
		UserLoginServlet
		edu.zhku.servlet.UserLoginServlet
	
	
		FindUserListByPage
		edu.zhku.servlet.FindUserListByPage
	
	
		UserLoginServlet
		/userLoginServlet
	
	
		FindUserListByPage
		/findUserListByPage
	

	
		EncodingFilter
		edu.zhku.filter.EncodingFilter
	
	
		EncodingFilter
		
		
@WebFilter("
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain filterChain) throws IOException, ServletException {
		// 将父接口转为子接口
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		// 获取请求方法
		String method = request.getMethod();
		// 解决post请求中文数据乱码问题
		if (method.equalsIgnoreCase("post")) {
			request.setCharacterEncoding("utf-8");
		}
		// 处理响应乱码
		response.setContentType("text/html;charset=utf-8");

		// 放行请求
		filterChain.doFilter(request, response);
	}

	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {

	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/986145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号