ceacer 2 已发布 1月27号 分享 已发布 1月27号 Table of Contents 前言 在开发JavaWeb项目时,由于不同的浏览器和服务器对请求和响应处理的编码格式不同,从而导致了中文乱码的现象出现。同时许多的编码方式对中文的处理并不是特别好,所以一般我们需要对请求和响应做出统一的配置,即设置编码集为UTF-8。这篇文章将会告诉你出现乱码到底是怎样解决的。 方法一:直接在Servlet中配置 处理乱码时最直接的方式就是在Servlet中对请求和响应进行配置。具体配置如下: //设置请求编码格式 request.setCharacterEncoding("utf-8"); //设置响应的编码格式 response.serCharacterEncoding("utf-8"); response.setContentType("text/html;"); 这种方式是最简单直接的方法,但是它也存在一个很大的问题。当业务量多起来时,需要为每个Servlet都加上这几行代码,造成了代码冗余。所以需要想办法把这几行代码抽离出来 方法二:使用过滤器处理乱码 在介绍这种方法之前先来了解一下什么是过滤器 1、什么是过滤器? 过滤器是介于浏览器和web资源之间的,它的作用是将浏览器发来的请求进行“过滤”后再发送给web资源,然后再把web资源返回的响应“过滤”后再返回给浏览器。它的用处也有很多,处理乱码只是其众多功能之一。 上一张图具体描述一下这个流程吧 2、如何利用过滤器处理乱码 使用过滤器处理乱码,首先得有一个过滤器的类 package com.demo.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override 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"); //处理过后放行 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } } 写好过滤器后有两种方式可以使过滤器发挥其功效,分别是在web.xml中配置标签和使用注解的方式 在web.xml中配置 <filter> <filter-name>myFilterfilter-name> <filter-class>com.demo.filter.MyFilterfilter-class> filter> <filter-mapping> <filter-name>myFilterfilter-name> <url-pattern>/*url-pattern> filter-mapping> 使用注解配置 可以使用注解的方式来配置过滤器,不过如果使用了注解就不要再使用web.xml的配置,二者选一种就好,具体方法为: //在过滤器类上方加上注解@WebFilter ,然后依然通过/* 表示拦截所有请求 @WebFilter("/*") public class MyFilter implements Filter { ..... } 评论链接 在其他网站上分享 更多分享选项...
推荐帖
创建账户或登录以发表评论
您需要成为会员才能发表评论
创建一个帐户
在我们的社区注册一个新账户。很简单!
注册新账户登入
已有账户?在此登录
立即登录