日期:2014-05-19 浏览次数:20620 次
1.说一说Servlet的生命周期??
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。?
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。?
2.JAVA SERVLET API中forward() 与redirect()的区别??
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。?
3.Servlet的基本架构?
答:?
public class ServletName extends HttpServlet {?
? public void doPost(HttpServletRequest request, HttpServletResponse response) throws?
????? ServletException, IOException? {?
????? }?
? public void doGet(HttpServletRequest request, HttpServletResponse response) throws?
????? ServletException, IOException? {?
????? }?
}?
4.什么情况下调用doGet()和doPost()??
答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。?
5.servlet的生命周期?