b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

web项目访问jsp路径 Servlet及相关类和接口(5)

电脑杂谈  发布时间:2018-02-08 02:41:49  来源:网络整理

可以看到,GenericServlet类是一个抽象的(abstract)类,所以它无法被实例化。它继承了三个接口,其中Servlet和ServletConfig接口是前面介绍过的,可以看出GenericServlet类里面大多数方法都是这两个接口里面的方法,所以这个类其实是整合了这两个接口,给出了设计servlet的一些骨架,定义了servlet生命周期,还有一些得到名字、配置、初始化参数的方法,使得编写servlet类时更方便。GenericServlet类里面所有继承了这两个接口的方法的功能,在本文前面已经详细介绍,这里只说明一下这个类里面新增的方法:log(String msg)、log(String message, Throwable t)、init()。

两个log()方法:通过ServletContext对象将Servlet的类名和给定的信息写入log文件中。

两个init()方法:init(ServletConfig config)方法是实现了Servlet接口中的方法,作用是可以通过getServletConfig()方法获取ServletConfig对象。如果你覆盖了这个方法,你必须调用super.init(config),这样GenericServlet类的其他方法才能正常工作。而它下面还调用了无参的init()方法,也就是GenericServlet类自定义的无参方法。为什么还要定义这个无参数的init()方法呢?其实这个无参数的init()方法是专门留给开发者使用的,开发者只需要覆盖这个方法就可以很方便的在方法里面扩充一些功能,比如对自己写的Servlet类初始化时可以在这个方法里面进行,解析web.xml文件里面关于servlet配置的信息时可以在这个方法里面。这样就不需要覆盖init(ServletConfig config)方法了,不需要存储config对象,也不需要调用super.init(config)。

尽管GenericServlet类实现了Servlet和ServletConfig接口的功能,但它的service方法中的参数还是ServletRequest,ServletResponse,它处理的还只一般的Servlet请求,并没有跟http相关对象挂钩。service方法是和应用层协议无关的,也就是说你有可能用非http协议实现它。而我们平时通过浏览器访问网站时,基本上都是HTTP请求(当然还有FTP请求),请求方式包括GET、POST等,显然如果直接使用service方法会很繁琐,所以提供了一个HttpServlet类来解决这些问题,这个类继承了GenericServlet类,除了能实现其所有方法,还根据HTTP请求的特性进行了扩充,使得其更能有效地处理基于HTTP协议的请求。

6、HttpServlet类

这个类的源码有点长,不再详细展示,有兴趣可以去看源码,这里通过类的说明。

其中HTTP协议的请求类型与其对应的实现方法见下表:

该类继承了GenericServlet类,用于接收基于Http协议的请求,并对请求进行处理,然后做出响应。一般在web开发中,开发者自己编写的Servlet类只需要继承HttpServlet类即可。这里我们重点介绍两个service()方法。

service(ServletRequest req, ServletResponse res):通过源码可以发现,此方法是GenericServlet类的service()方法的实现,他把ServletRequest和ServletResponse对象分别强制转化为HttpServletRequest和HttpServletResponse对象,并把强制转化后的对象作为参数,调用另一个重载的service(HttpServletRequest req, HttpServletResponse resp)方法。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66452-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...