public void doGet(HttpServletRequest request,HttpServletResponse response)
{
  .....
   response.setContenType("text/html");
}
1.参数response是HttpServletRequest类的,可是HttpServletRequest却是一个接口,怎么解释?接口能被实例化?
2.即使接口能被实例化,那么接口中的方法都是空的啊,response.setContenType("text/html");执行了又有什么作用呢?

解决方案 »

  1.   

    在帮助文档中找到一句:The servlet container creates an HttpServletRequest object and passes it as an argument to the servlet's service methods (doGet, doPost, etc). 
    不知道怎么理解an HttpServletRequest object 及The servlet container
      

  2.   

    顶……
    LZ初学初得好厉害啊!这个方法声明并不是说传进来的参数是接口类,而是说是调用这个方法时response参数必须是一个实现了HttpServletRequest接口的类,request类似。比如RequestClass1 implements HttpServletRequest,那么这个RequestClass1的实例就可以作为request参数传入。呵呵。至于response.setContentType("text/html")是告诉客户端的浏览器知道这次传过去的数据是html页面数据。如果setContextType("text/xml")则说明传出去的是xml文档。浏览器会作不同处理的……呵呵
      

  3.   

    知道了,就是说传进来的参数是一个子类,这个也就是所谓的面向对象的多态性的体现吧.
      另外,我知道response.setContentType("text/html")的作用.原意是:既然response是一个接口的实例,它的方法就是空的,不会产生任何动作.既然传进来的是一个实现了的子类,就没有什么疑惑了,谢谢.
      什么是The servlet container呢?现在我就知道servlet是一个运行在web服务器上的程序,担任的是一个中间层的角色.对于容器概念不清楚,哪位解释一哈.
      

  4.   

    我的理解:Servlet容器就是能运行Servlet的Web服务器,或说是能运行Servlet的Web服务器的驱动Servlet运行的那一部分……呵呵,哪有那么复杂啊?