1.servlet是100%的运行在服务器端为客户端请求作出相应的的纯Java的应用程序。 

 

2.J2EE(Java)中有几种容器(曾经的面试题)★:

servlet容器(eg. Tomcat , Jetty)

EJB容器(JBOSS<Jboss公司> 、Weblogic<BEA> 、WebSphere<IBM>)

Applet容器(现在几乎不用了)

 

3.开发一个servlet的步骤:

①声明一个类,并且让该类继承自HttpServlet类

②重写doGet(),doPost()方法

③在web.xml中注册一个servlet

 

4.servlet的生命周期:★(笔试和面试遇到过)

 

①客户端发出请求(post或get) → web容器(eg.Tomcat)

②容器产生request,resonse两个对象

③容器根据URL找到合适的Servlet并分配线程进行访问。

④Service()方法根据请求头(每次请求http的头部信息是不同的,eg.get,post),决定调用doGet()或者doPost()方法

⑤Servlet使用相应的对象通过容器给客户端做出响应

⑥service()方法执行结束,访问线程和request、response对象被销毁


5.生命周期的几个阶段:

①实例化(1次):web容器创建Servlet的实例。

②初始化(1次):web容器调用Servlet的init()方法。

③服务(多次调用):调用service()方法,由service方法调用doxxx()方

④销毁(1次):web容器关闭时调用destory()方法销毁servlet

 

6.一个Servlet在一个Web容器中只有一个对象(或实例,有唯一的实例,不同的线程),即只在第一次被请求时,创建一个对象;但是其doGet(),doPost()方法被反复调用  → 那么多个请求就会有多个线程,故有可能产生线程同步的问题,造成线程的不安全。 → 为了避免线程的同步问题,就要避免使用全局的实例变量。

 

7.注意事项:从servlet跳转到JSP页面时,最好用“请求转发跳转”,因为在页面的URL地址栏不会显示jsp页面的地址,有利于保护真正的JSP地址。

 

8.在servlet中创建session对象:

HttpSession session = request.getSession();

 

9.过滤器 (比如:权限过滤,把UTF-8放在过滤器中,我们就不用每次都转码了!!)

①servlet中的过滤器是实现了javax.servlet.Filter这个接口。

②其是双向过滤

 

③Filter在整个容器中也只有一个对象,并且是在关闭容器销毁 

④所有的请求都要经过过滤器。(当然也和你web.xml中的配置有关系)

⑤多个过滤器的过程顺序, 以在web.xml中的配置顺序为主

 10.在servlet中获得application对象的方法有2两种:

①ServletContext application = getServletContext();

②HttpSession session = request.getSession();

ServletContext application = session.getServletContext();