在CSD超级实习生开启Java学习的第一天,以后每天更新一篇博文,大家一起监督~~
一、Servlet接口
1、Servlet接口中的主要方法
1.1、init(Servlet config)
Servlet的初始化方法。在Servlet实例化后,容器调用该方法进行Servlet的初始化,ServletAPI规定任何Servlet实例init()方法只能被调用一次,如果此方法没有正常结束,就会抛出ServletException异常,一旦抛出异常,Servlet将不再执行。
1.2、service
(ServletRequest req, ServletResponse resp)😗*Servl的服务方法。当用户对Sevlet发出请求时容器会调用该方法处理用户请求;ServletRequest参数提供访问请求数据的方法和字段,ServletResponse参数提供Servlet构造相应的方法。
1.3、destroy():
Servlet的销毁方法。容器在终止Servlet服务前调用此方法,容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时,destroy()不被执行。
1.4、getServletConfig():
此方法可以让Servlet在任何时候后的ServletConfig对象。
1.5、getServletInfo():
此方法可以让Servlet在任何时候获得Servlet的信息,例如:开发者、创建日期、描述信息等。该方法也可用于容器。
2、GenericServlet类
GenericServlet类是一个抽象类,时Servlet接口的直接实现,提供了除service()方法之外其他有关Servlet生命周期的方法;
我们可以通过简单的拓展GenericServlet和实现service()方法编写一个基本的Servlet。
2.1、init(ServletConfig conf):
该方法来源于Servlet接口,若重写方法,必须调用super.init(config),这样GenericServlet类的其他方法才能正常工作。
2.2、init(ServletConfig config)
该方法重载了Servlet结合口的init(ServletConfig config)方法而无需调用super.init(config)而ServletConfig对象依然可以通过调用getServletConfig()方法获得。
2.3、service(ServletRequest req, ServletResponse resp):
这是一个抽象的方法,当为执行网络请求继承这个类时必须实现它。
2.4、destroy():
与Servlet接口中的destroy方法相同。
3、HttpServlet类
HttpServlet类继承于GenericServlet类,HttpServlet指能够处理Http请求的Servlet,他在原有的Servlet接口上添加了对Http协议的处理,它比Servlet接口的功能更加强大(PS:虽然通过拓展GenericServlet就可以编写一个基本的Servlet,但若要实现一个在Web中处理的Http请求的Servlet,则需要使用HttpServlet),HttpServlet作为Http请求的分发器,除了提供对Get和Post请求的处理方法doGet()和doPost()之外,对于其他请求类型(如:Head、Options、Delete、Put、Trance)也提供了相应的处理方法(如:doHead()、doOptions()、doDelete()、doPut()、doTrance())
3.1、service(HttpServletRequest req, HttpResponse resp):
HttpServlet在实现Servlet接口是,重写了service()方法。该方法会自动判断用户的请求方式;若为get请求,则调用HttpServlet的doGet()方法;若为post请求,则调用doPost()方法,而不要去重写service()方法。如果Servlet收到一个Http请求而没有重载相应的do方法 ,它就返回一个说明此方法对本资源不可用的标准Http错误。
3.2、doGet(HttpServletResquest req, HttpServletResponse resp):
此方法被本类的service()方法调用,用来处理一个HttpGet操作。
3.3、doPost(HttpServletResquest req, HttpServletResponse resp):
此方法被本类的service()方法调用,用来处理一个HttpPost操作
4、Servlet生命周期
Servlet的生命周期是指Servlet实例从创建到相应客户请求、直至销毁的过程。
5、Servlet的声明配置:@WebServlet&web.xml
5.1、String name&< servlet-name>
指定Servlet的名字,可以为任何字符串,一般与Servlet的类名相同,如果没有显式指定,则该Servlet的取值即为类的全限定名。
5.2、String[] urlPatterns&< url-pattern>
指定一组Servlet的URL匹配模式,可以是匹配地址映射(如:/SimpleServlet)、匹配目录映射(如:/servlet/*)和匹配扩展名映射(如: *.action)。
5.3、String[] value
该属等价于urlPatterns睡醒。两个属性不能同时使用。
5.4、WebInitParam[] initParams&< init-param>
指定一组初始化参数
5.5、int loadOnStartUp&< load-on-startup>
指定Servlet的加载顺序。当此项没有指定时,表示容器在该Servlet第一次被请求时才加载;当值为0或大于0时,表示容器在应用启动时就加载了这个Servlet。值越小,启动该Servlet的优先级越高。原则上不同的Servlet应该使用不同的启动顺序数字。
5.6、boolean asyncSupported&< async-supported>
声明Servlet是否支持异步操作模式,默认为false。
5.7、String description& < description >
指定该Servlet的描述信息。
5.8、String displayName&< displayname>
指定该Servlet的显示名,通常配合工具使用。
5.9、< servlet-class>
指Servlet类的全限定名,即:包名.类名。
5.10、< param-name>
指定初始参数名。
5.11、< param-value>
指定初始参数名对应的值。
5.12、< servlet-name>
用来指定要映射的Servlet名称,要与< servlet>声明中的< servlet-name>值一致。