Servlet
一、Servlet 的生命周期。
servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet 接口 的 init,service 和 destroy 方法表达。
Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init() 方法进行 servlet 的初始化。通过调用 service() 方法实现,根据请求的不同调用不同的 do***() 方法。结束服务,web 容器调用 servlet 的 destroy() 方法。
--------------------------------------------------------------------------------
JSP
一、jsp有哪些内置对象?作用分别是什么?
request: 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于 获取cookie, header和session数据的有用的方法。
response: 表示 HttpServletResponse对象。 它提供了几个用于 设置送回浏览器的响应的方法(如cookies,头信息等)。
session: 表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。
out: 是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
config: 表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
exception: 针对错误网页,未捕捉的例外
page: 表示从该页面产生的一个servlet实例。
application: 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。
pageContext: 表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
二、jsp有哪些动作?
jsp:include:在页面被请求的时候引入一个文件。
Jsp:param:用于传递参数,必须与其他支持参数的标签一起使用
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
三、JSP中动态include与静态include的区别?
动态: <jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态: 用 <%@include file=included.htm %> 实现,定不会检查所含文件的变化,适用于包含静态页面。
四、forward 和 redirect 的区别?
forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。