子类父类浅谈filter里面为什么要强制转换成httpServletRequest类型

在本篇文章中,我们主要介绍子类父类的内容,自我感觉有个不错的建议和大家分享下

public void doFilter(ServletRequest request,

    ServletResponse response, FilterChain chain)

    throws IOException,ServletException

    {

    //获取该Filter的配置参数

    String encoding = config.getInitParameter("encoding");

    String loginPage = config.getInitParameter("loginPage");

    String proLogin = config.getInitParameter("proLogin");

    //设置request编码用的字符集

    request.setCharacterEncoding(encoding);

    //①

    HttpServletRequest requ = (HttpServletRequest)request;

    每日一道理
时间好比一条小溪,它能招引我们奔向生活的海洋;时间如同一叶扁舟,它将帮助我们驶向理想的彼岸;时间犹如一支画笔,它会指点我们描绘人生的画卷。

    HttpSession session = requ.getSession(true);

    //获取客户请求的页面

    String requestPath = requ.getServletPath();

    这样的情景,在filter里头总会看到,为啥要强制转换呢?经过测试知道了,if(request instanceOf  HttpServletRequest) System.out.println("true");输出true。

    ServletRequest是HttpServletRequest的父接口,可见request是HttpServletRequest的实现类的对象,上面就会用到多态的知识,

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

文章结束给大家分享下程序员的一些笑话语录: Google事件并不像国内主流媒体普遍误导的那样,它仅仅是中国Z府和美国公司、中国文化和美国文化甚至中国人和美国人之间的关系,是民族主义和帝国主义之间的关系;更重要的是,它就是Z府和公司之间的关系,是权力管制和市场自由之间的关系。从这个意义上说,过度管制下的受害者,主要是国内的企业。Google可以抽身而去,国内的企业只能祈望特区。www.ishuo.cn

原文地址:https://www.cnblogs.com/jiangu66/p/3093708.html