Java Web 部分面试题一1.说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别?Web 容器加载 servlet 并将其实例化后,servlet 生命周期开始,容器运营其 init 方法进行 servlet 的初始化,请求到达时运营其service 方法,service 方法自动派遣运营于请求相应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。与 CGI 的区别在与 servlet 处在服务器进程中,它通过多线程方式运营其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完毕后就销毁,所以效率上低于 servlet。2.forward 和 redirect 的区别?forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目的地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器主线不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以 session,request 参数都可以猎取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,也有助于隐藏实际的链接;在有些情况下,比如需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。3.JSP 中动态 include 与静态 include 的区别?动态 include 用 jsp:include 动作实现它总是会检查所包含文献中的变化,适合用于包含动态页面,并且可以带参数;静态 include 用 include 伪码实现,它不会检查所含文献的变化,合用于包含静态页面<%@ include file="included.htm" %>4.JSP 的有哪些内置对象,作用分别是什么?request:表达 HttpServletRequest 对象,它包含了有关浏览器请求的信息,并且提供了几个用于猎取 cookie,header 和session 数据的有用方法;response:表达 HttpServletResponse 对象,并提供了几个用于设立送回浏览器的响应的方法(如 cookies,头信息等。)pageContext:网页的属性在这里管理;session:表达一个请求的 javax.servlet.http.HttpSession对象,session 可以存储用户的状态信息;application:表达一个 javax.servlet.ServletContext 对象,这...