解决JavaWeb中的乱码问题

处理乱码

  1. 通过设置请求,响应的编码格式
request.setCharacterEncoding("utf-8");//设置请求从前端接收过来的数据的编码格式
response.setCharacterEncoding("utf-8");//设置服务端编码格式
 response.setContentType("text/html;charset=utf-8");//设置浏览器端编码格式

2.通过过滤器Filter
创建一个Filter类,去实现Filter接口

package com.wmx.Filter;

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

//编码格式
public class Filter01 implements Filter {
    String encoding = null;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
       //初始化的时候就将编码格式获取到
        encoding = filterConfig.getInitParameter("encoding");
        System.out.println("编码格式:" + encoding);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("进入过滤器,进行拦截并放行...");
        if (encoding != null) {
            servletRequest.setCharacterEncoding(encoding);//设置请求从前端接收过来的数据的编码格式
            servletResponse.setCharacterEncoding(encoding);//设置服务端编码格式
            servletResponse.setContentType("text/html;charset=" + encoding);//设置浏览器端编码格式
        }
        filterChain.doFilter(servletRequest, servletResponse);//过滤器进行放行
    }

    @Override
    public void destroy() {
        System.out.println("过滤器的销毁方法..");
    }
}

注:操作完了之后一定要在web.xml文件中进行Filter的配置
在这里插入图片描述
如果在使用了过滤器的情况下,使用.css文件的话,css样式将不会起到任何作用,因为被过滤器过滤掉了,一般使用外部导入css样式的时候尽量不要使用过滤器,必要情况下,可以尝试这种操作:

 @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("进入过滤器,进行拦截并放行...");
        HttpServletRequest Request = (HttpServletRequest) servletRequest;
        String requestURI = Request.getRequestURI();
        //如果文件后缀名为.css将直接放行,不进行过滤
        if (requestURI.contains(".css")) {
            filterChain.doFilter(servletRequest, servletResponse);
        }
        if (encoding != null) {
            servletRequest.setCharacterEncoding(encoding);
            servletResponse.setCharacterEncoding(encoding);
            servletResponse.setContentType("text/html;charset=" + encoding);
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值