实训_day02_Filter中文编码过滤器

4 篇文章 0 订阅
3 篇文章 0 订阅

Filter中文编码过滤器

编码过后将有关内容进行讨论:

ps:idea注解配置Filter时,并不会指定过滤路径,但是可以用urlPatterns指定

package wonderful;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author :wonderful_wzf
 * @message:Filter中文编码过滤器
 * @Bolg :https://blog.csdn.net/wonderful_wzf
 * @date :2020/5/19,20:32
 */
@WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
public class EncodingFilter implements Filter {
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //强转
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)resp;
        //请求设置编码格式 浏览器到服务器
        request.setCharacterEncoding("utf-8");
        //防止中文乱码 设置响应编码 服务器到浏览器
        response.setContentType("text/html;charset=UTF-8");
        //放行
        chain.doFilter(req, resp);
    }
    @Override
    public void init(FilterConfig config) {
    }
}

大概懂这个功能,但是对有关问题还是有点疑惑
在这里插入图片描述
a.为什么要将ServletRequest,ServletResponse强转成HttpServletRequest,HttpServletResponse

ServletRequest request;这个是将子类对象赋给父类引用,他运行时的类型是子类,编译时的类型是父类,但是在运行时,父类类型对象调用的方法如果子类里面有,那就执行子类里面的方法,如果编译时的类型也就是父类没有调用的那个方法,则报错。所以在那里要做一个强制类型转换,否则就会报错

b.关于Filter中ServletRequest和ServletResponse强转HttpServletRequest和HttpServletResponse安全问题(向下转型一定不安全吗?)
点击参考文章查看;
对上转型和下转型对象好好理解!
3.web.xml里面的Filter按从上到下执行,如果注解配置Filter多了会是怎样执行呢(Filter不按顺序执行可能会出现看不懂的错误,切记;ps:今天老师在配置Servlet,Filter,Listener时顺序错了,找不着头脑~~)
点击参考文章查看;

不积跬步无以至千里,不积小流无以成江海;
一步一个脚印,多思考为什么?一起加油!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值