A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hsen 中级黑马   /  2014-4-18 15:46  /  922 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

像下面这句话:request.setCharacterEncoding("gbk");我查了一下API中HttpServletRequest这个接口,这个方法出现在  HttpServletRequest接口的父接口ServletRequest中.而且HttpServletRequest这个接口的实现类只有HttpServletRequestWrapper  这个一个类,但是这个类中并没有实现父接口中的setCharacterEncoding(String env);这个方法。

看下面的方法
public void doGet  (HttpServletRequest request, HttpServletResponse response)  throws ServletException,IOException         {
  request.setCharacterEncoding("gbk");
}
在上面这个方法中request这个变量是接口HttpServletRequest的一个实例,我的想法是:它既然是HttpServletRequest的一个实例,   而HttpServletRequest的实现类就只有一个HttpServletRequestWrapper,那么这个request就是HttpServletRequestWrapper类的一  个对象了.但是HttpServletRequestWrapper这个类中并没有实现setCharacterEncoding(String env);这个方法,为什么上面的方法  中可以使用request.setCharacterEncoding("gbk");

2 个回复

倒序浏览
HttpServletRequest的实现类确实只有一个HttpServletRequestWrapper
回复 使用道具 举报
HttpServletRequestWrapper类implements接口HttpServletRequest,接口HttpServletRequest又实现接口ServletRequest。setCharacterEncoding(String env);这个方法是在接口ServletRequest中定义的,说白了吧,孙子可以调用爷爷的方法吧。我觉得应该就是这样吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马