Servlet详解(二)
上一章中,对Servlet的基本概念作出了解释
一、Servlet的默认方法
1.Servlet是一个接口。
2.init():带参初始化方法,参数为ServletConfig类,不是构造器,但在实例化后,直接调用。
3.destory():销毁Servlet对象,无参,一般用于存放释放资源的内容,在server被中断前自行调用。
4.getServletConfig():获得Servlet的配置方法
5.getServletInfo():用于获得Servlet的作者,版本,版权等信息。
二、ServletConfig接口:
public interface ServletConfig { String getServletName(); //获得Servlet类名 ServletContext getServletContext(); //获得Servlet上下文,org.apache.catalina.core.ApplicationContextFacade@6ee2ee7a String getInitParameter(String var1); //获得通过获得name来获取具体参数 Enumeration<String> getInitParameterNames(); //去粗配置文件中的key值(name) }
三、HttpServlet
1.HttpServlet继承自GenericServlet(类服务),而GenericServlet接入了Servlet接口,ServletConfig接口,Serializable接口,前两个接口已经说过,Serializable是可序列化接口,允许将接入该接口的类使用Object流序列化对象。
2.GenericServlet类源码分析
public String getInitParameter(String name) { return this.getServletConfig().getInitParameter(name); } public Enumeration<String> getInitParameterNames() { return this.getServletConfig().getInitParameterNames(); } public ServletConfig getServletConfig() { return this.config; } public ServletContext getServletContext() { return this.getServletConfig().getServletContext(); } //上面所有方法都仅仅完成了返回当前参数的作用,不过ParementName和Paramenter方法都是借助Config来完成 public String getServletInfo() { return ""; } //关于作者,版本,版权等信息,需要加入时,则重写该方法 public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } //继承自Servlet的初始化方法,也是自动调用的方法,仅仅完成config的配置,不建议继承修改,如需修改建议重写下方的无参方法 public void init() throws ServletException { } public void log(String msg) { this.getServletContext().log(this.getServletName() + ": " + msg); } //返回日志信息 public void log(String message, Throwable t) { this.getServletContext().log(this.getServletName() + ": " + message, t); } //抽象Service方法 public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; //获得当前Servlet的名字 public String getServletName() { return this.config.getServletName(); } }
3.HttpServlet常用方法:
1. init和destory等方法的重写,init的无参方法并非是直接调用,而是有参方法内部再次调用这个方法,该方法用于初始化。而destory方法则主要用于资源的释放。
2.service:html请求发送的最直接的地方,在HttpServlet中,service方法会自行判断你的请求类型,并将请求中的参数传入doget或则dopost中执行。
3.doget:下次详解,目前的差别在于url地址会把你html中的登录等信息暴露出来,不安全
4.dopost:会自动隐藏你在html中的信息。
5.关于一些ServletConfig等内容的获得,在GenericServlet已经做出了实现,HttpServlet仅仅是继承了这些方法,所以也不多加概述。