1.什么是Servlet?
用java语言编写的运行在服务器上,处理用户请求做出相应的小服务程序.
2.Servlet的生命周期?
加载实例化阶段会加载项目的web.xml配置文件,并解析得到所有配置好的servlet-class中配置的包名+类名,通过反射机制就实例化好了包名+类名对应的Servlet类对象。
Servlet 初始化后调用 init () 方法。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 销毁前调用 destroy() 方法。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
Servlet 的生命周期。按照功能的不同,大致可以将 Servlet 的生命周期分为四个阶段,分别是加载实例化阶段、初始化阶段、运行阶段【处理请求】和销毁阶段。
1.加载实例化阶段
当Servlet容器启动以后,会加载项目的web.xml配置文件,并解析得到所有配置好的servlet-class中配置的包名+类名,通过反射机制就实例化好了包名+类名对应的Servlet类对象。
2.初始化阶段
当客户端向 Servlet 容器发出 HTTP 请求要求访问 Servlet 时,Servlet 容器首先会解析请求,检查内存中是否已经有了该 Servlet 对象,如果有,则直接使用该 Servlet 对象,如果没有,则创建 Servlet 实例对象,然后通过调用 init() 方法实现 Servlet 的初始化工作。需要注意的是,在 Servlet 的整个生命周期内,它的 init() 方法只能被调用一次。
3.运行阶段【处理请求】
这是 Servlet 生命周期中最重要的阶段,在这个阶段中,Servlet 容器会为这个请求创建代表 HTTP 请求的 ServletRequest 对象和代表 HTTP 响应的 ServletResponse 对象,然后将它们作为参数传递给 Servlet 的 service() 方法。
service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。
在 Servlet 的整个生命周期内,对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新的 ServletRequest 和 ServletResponse 对象,也就是说,service() 方法在 Servlet 的整个生命周期中会被调用多次。
4.销毁阶段
当服务器关闭或 Web 应用被移除出容器时,Servlet 随着 Web 应用的关闭而销毁。在销毁 Servlet 之前,Servlet 容器会调用 Servlet 的 destroy() 方法,以便让 Servlet 对象释放它所占用的资源。在 Servlet 的整个生命周期中,destroy() 方法也只能被调用一次。
需要注意的是,Servlet 对象一旦创建就会驻留在内存中等待客户端的访问,直到服务器关闭或 Web 应用被移除出容器时,Servlet 对象才会销毁。
3.Servlet中常见的接口?
1.Servlet接口
2.ServletConfig接口
3.ServletContext接口
4.ServletRequest---->HttpServletRequest接口
5.ServletResponse—>HttpServletResponse接口
6.HttpSession接口
4.forword与redirect的区别?
5.什么是会话跟踪?
服务器处理程序实现记录/保存请求/链接的状态的过程就叫会话跟踪。
6.为什么使用会话跟踪?
浏览器发送的http请求,http请求使用的是http协议,而http协议是一种无状态的协议,它不会去主动记录使用这个http协议的用户是谁,一旦请求发送成功,服务器做出响应以后,那么此时浏览器与服务器之间的链接就会消失,这时服务器就不知道请求来自哪里,是谁发送来的。
7.常见的会话跟踪技术
- 隐藏表单域: ,非常适合步需要大量数据存储的会话应用。
2.URL 重写 :URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字 / 值对。
3 .Cookie: 一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个Cookie 头标将之返回到服务器。与其它技术比较, Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启后它仍可以保留其值。
4 .Session :使用 setAttribute(String str,Object obj) 方法将对象捆绑到一个会话.
8.Cookie与Session 的区别?
9.get与post的区别?
10.什么是过滤器?
java过滤器能够对目标资源的请求和响应进行截取。
11.什么是过滤器链?
由多个过滤器组成处理同一个请求/响应的Servlet组件。
将请求/响应传递给下一个过滤器/目标资源。
12.什么是Servlet的监听器?
Servlet 事件监听器是一个实现了特定接口的 Java 程序,这个程序专门用于监听 Web 应用中 ServletContext、HttpSession 和 ServletRequest 等对象的创建和销毁过程、监听这些对象属性的修改以及感知绑定到 HttpSession 域中的某个对象的状态。
13.8种监听器的类型?
14.HttpSession的钝化与活化?
HttpSession 对象从内存中转移至硬盘的过程称为钝化.
HttpSession 对象从持久化状态变为运行状态的过程称为活化。
15.什么是JSP?
包含有java程序的运行在服务器上的页面{HTML}.
16.jsp的执行过程?
当我们请求一个jsp页面的时候,服务器收到jsp页面的请求以后,会先将被访问的jsp文件转换成Servlet文件,继续编译转换以后的Servlet文件得到Servlet文件对应的字节码文件,接着执行这个编译以后的字节码文件,将运行结果封装到响应对象中,返回给客户端浏览器。
缺点:第一次访问jsp页面会比较慢一些。
17.include指令[<%@include file=”” %>]与include动作[<jsp:include page=""></jsp:include>]有什么区别?
18.Servlet与JSP的区别?
19.jsp的内置对象的名称、类型、作用