servlet

来源:互联网 发布:淘宝规则最新 编辑:程序博客网 时间:2024/06/05 09:00

长时间不用servlet确实很容易忘记,这几天又回顾了一下,还是写篇博客记下来吧!

1、首先所以实现servlet接口的类就是一个servlet,当然会在web.xml里面配置一下servlet-name servlet-mapping url等。servlet主要有init(ServletConfig config)、service(ServletRequest req, ServletResponse res) 和destrory()方法,init方法会第一次访问的时候被web容器所调用。每次访问都会调用service方法, 当web容器关闭时调用destrory,所有实现了servlet接口的类都会实现这三个方法。

2、servletConfig接口,它有getInitParameter(java.lang.String name)getInitParameterNames() getServletContext() getServletName()这几个方法来获取配置在web.xml中init-param,可以获取servletCOntext上下文对象等。

3、GenericServlet类,实现了servlet接口和servletConfig接口,所有将这两个类里面的抽象方法都会实现。同时提供了一个无参的init()方法,用于让子类去覆盖使用,防止子类覆盖init(ServletConfig config),从而导致无法获取config对象,导致getInitParameter(java.lang.String name) 空指针异常。该类中只有一个service方法是抽象的。

4、HttpServlet 继承了GenericServlet类,实现了service方法。在service方法内获取访问方式,从而调用不同的方法,如doGet和doPost等,该类继承了GenericServlet所有的非抽象方法。并提供了getLastModified(HttpServletRequest req)获取最后修改时间的方法。

5、我们修建一个servlet一般都会去继承HttpServlet,所以在该类中除了doGet和doPost,还可以使用很多方法,如getInitParameter,getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName,等,当然也可以获取servletConfig对象从而获取参数。

6、servletContext上下文对象,是整个项目公用的,可以在application域内设置一些共享的参数,也可以在web.xml配置context-param如数据库的连接信息。

7、request和response使用比较常见,这里就不多说了,Response.getWrite()和Response.getOutputStream()互斥,不能同时使用。

8、一个servlet的访问,tomcat启动加载web.xml,通过url-pattern找到servlet-name然后找到servlet-mapping,第一次访问调用init()和service方法。如果设置了<load-on-startup>2</load-on-startup>,那么会在web启动的时候就调用int(),第一次访问的时候就不再调用了。

9、放在WEB-INF下面的文件被屏蔽掉了,不同直接通过url访问,只能通过servlet来访问。

0 0