目前很多新项目很少会用到JavaEE的技术栈,但是对于部分维护老代码的工程师来说,还是尤为重要。 1. JSP 有哪些内置对象?作用分别是什么?JSP有9个内置对象: request:封装客户端的请求,其中包含来自GET或POST请求的参数; response:封装服务器对客户端的响应; pageContext:通过该对象可以获取其他对象; session:封装用户会话的对象; application:封装服务器运行环境的对象; out:输出服务器响应的输出流对象; config:web应用的配置对象; page:jsp页面本身(相当于Java程序中的this); exception:封装页面抛出异常的对象。
2. 介绍一下 Servlet 生命周期Servlet是运行在服务器端,以多线程的方式处理客户端请求的小程序。是sun公司提供的一套规范(规范的实现是接口)。 servlet的生命周期就是从servlet出现到消亡(销毁)的全过程。主要分为以下几个阶段: 加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求响应(服务阶段)—>销毁 详细介绍: 在下列时刻会加载Servlet(只执行一次): - 如果已经配置自动加载选项,则在启动服务器时自动加载web.xml文件中设置的;
- 服务器启动之后,客户机首次向Servlet发出请求时会加载;
- 重新加载Servlet时会进行一次加载;
加载Servlet后,服务器创建一个Servlet实例。(只执行一次) - 调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象 ServletConfig。(只执行一次);
对于到达服务器的客户机请求,服务器创建针对此次请求的一个"请求对象"和一个"响应对象"。 服务器调用 Servlet 的 service() 方法,该方法用于传递"请求"和"响应"对象。 service() 方法从"请求"对象获得请求信息、处理该请求并用"响应"对象的方法将响应回传给客户端。 service() 方法可以调用其他方法来处理请求,例如 doGet()、doPost() 或其他方法。 当服务器不需要 Servlet,或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。(只执行一次); 3. Servlet和JSP的区别和联系区别: JSP是在HTML代码里面写Java代码;而Servlet是在Java代码中写HTML代码,Servlet本身是个Java类; JSP使人们将显示和逻辑分隔称为可能,这意味着两者的开发可以并行进行;而Servlet并没有将两者分开; Servlet独立地处理静态表示逻辑与动态业务逻辑,任何文件的变动都需要对此服务程序重新编译;JSP允许使用特殊标签直接嵌入到HTML页面,HTML内容与JAVA内容也可放在单独文件中,HTML内容的任何变动会自动编译装入到服务程序; Servlet需要在web.xml中配置;而JSP无需配置; 目前JSP主要用在视图层,负责显示;而Servlet主要用在控制层,负责调度;
联系: 4. JSP的执行过程在JSP运行过程中,首先由客户端发出请求,Web服务器接收到请求之后,如果是第一次访问某个JSP页面,Web服务器对它进行一下三个操作: 由.jsp变为.java,由JSP引擎完成。 由.java变为.class,由Java编译器实现。 由.class变为.html,用Java虚拟机执行编译文件,然后将执行结果返回给Web服务器,并最终返回给客户端。 如果不是第一次访问某个JSP页面,则只执行第三步,所以第一次访问JSP较慢。
|