2014年计算机二级《WEB》程序考点:ServletAPI
javax.servlet.GenericServlet实现了Servlet接口
javax.servlet.http.HttpServlet继承自javax.servlet.GenericServlet类
所以编写Servlet继承HttpServlet或GenericServlet即可。
如何编写自定义的Servlet代码
1、追加环境变量servlet-api.jar,编写自定义servlet继承HttpServlet,并重写doGet方法,生成class文件待用(访问控制符应该是public)
2、在webapps目录下找到example中的WEB-INF,copy其中的web.xml
3.在webapps目录下生成自己的文件夹,copyWEB-INF/web.xml
如何部署Servlet(web.xml)、ServletUrl映射路径(注意*的使用)
servlet
!--servlet的名字,随便起个名,但和下面的servlet-name名一致--
servlet-namemgc/servlet-name
!--WEB-INF中文件路径--
servlet-classAnyDirectory.ServletClassName/servlet-class
!--或者可以用servletclass:jsp-file/WEB-INF/hello.jsp/jsp-file--
/servlet
servlet-mapping
!--servlet的名字,随便起个名,但和上面的servlet-name名一致--
servlet-namemgc/servlet-name
!--访问映射路径--
url-pattern/hello/url-pattern
/servlet-mapping
Servlet生命周期:
类加载、实例化、初始化、服务、销毁
service(HttpServletRequestrequest,HttpServletResponseresponse)方法的作用:
根据不同的请求,进行分发工作(Http协议)
init(ServletConfigconfig)与init()方法
当容器(tomcat)帮忙调用init(ServletConfigconfig)并且给传过来一个参数config,这个方法把参数对象的引用指向类的成员变量this.config,并且调用类的this.init()方法。如果我们在写Servlet类时只要重写init(ServletConfigconfig)就可以了,但是init()不就成了多余的了吗?实际上init()方法是为了防止程序员在写Servlet类重写init(ServletConfigconfig)时忘记写super.init(ServletConfigconfig),这样就容易造成出现空指针异常。而这就要求我们最好不要重写init(ServletConfigconfig)。
配置Servlet初始化参数:
init-paramparam-nameparam-value
ServletContext上下文是什么?和Servlet、ServletConfig的关系
ServletContext:
servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图。ServletContext实例是通过getServletContext()方法获得的,由于HttpServlet继承Servlet的关系GenericServlet类和HttpServlet类同时具有该方法。