servlet面试时遇到问题和Eclipse中servlet显示无法导入javax.servlet包问题的解决方案

面试java后台时,那些面试官会问servlet周期。

servlet有三个周期:

1、初始化:调用init()方法

2、响应客户需求:调用service()方法

3、销毁:调用destory()方法

面试官又问什么时候调用init()方法(之前用servlet时没想过这个问题,后来查了资料,自我理解如下):

servlet中的init()使用方式:希望在servlet首次载入时,执行复杂的初始化任务,但并不想每个请求都重复这些任务的时候,用init()方法他在servlet初次创建时被调用,之后处理每个用户的请求时,则不在调用这个方法。因此,他主要用于一次性的初始化,和applet的init方法相同。
由于servlet初始化参数的使用非常依赖于部署描述文件(web.xml),该文件可存放servlet所需要的起始参数以及web应用程序的结构数据。当servlet容器读取web.xml文件内容后。可以将这些起始参数封装成一个对象并在调用init方法时传递个servlet,这个对象就是ServletConfig对象所以我们可以在Servlet内覆写init方法,并通过ServletCongig对象来取得某些初始参数。
以init参数的名称为参数,调用ServletConfig的getInitParameter方法。返回值就是init参数的值。 简单来说,就是,只在该servlet首次调用时运行一次,之后不在运行,也就谈不上释放了。

分别调用三个方法是什么时候:

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 

 

 

 

Eclipse中servlet显示无法导入javax.servlet包问题的解决方案

今天用struts写一个小小的web服务器,可是发现只要是引入javax.servlet里的内容时,都会出错,比如:

         import javax.servlet.Filter;提示:The import javax.servlet.Filter cannot be resolved 等等。

         在网上找了好久,发现是jdk 里不包括servlet-api.jar 这个包,于是到tomcat里找到这个包复制到 jdk\jre\lib 下

         再设置classpath,结果还是无济于事,后来发现是工程里的路径权限高,并且eclipse并到classpath里寻找jar位置,所以我就到我的java项目里

         项目名-->右键

         Property-->选择

         Java Build Path-->选择

         Add External JARs-->选择

         把servlet-api.jar的路径输入即可 该包在tomcat里有 搜索即可找到

posted @ 2015-08-21 15:33  俩逗逼  阅读(4682)  评论(0编辑  收藏  举报