关于java:Servlet和JSP面试题

40次阅读

共计 2130 个字符,预计需要花费 6 分钟才能阅读完成。

Servlet 的生命周期, 以及 Servlet 和 CGI 的区别

Servlet 的生命周期:

  1. Web 容器加载 Servlet 并将其实例化后,Servlet 生命周期开始.
  2. 容器运行其 init()办法进行 Servlet 的初始化.
  3. 申请达到时调用 Servlet 的 service 办法,service 办法会调用与申请对应的 doGet 或 doPost 等办法.
  4. 当服务器敞开会我的项目被卸载时服务器会将 Servlet 实例销毁. 此时会调用 Servlet 的 destroy 办法.

CGI:
CGI(Common Gateway Interface)通用网关接口.
通过 CGI 接口,Web 服务器就可能获取客户端传递的数据, 并转交给服务器端的 CGI 程序处理, 而后返回后果给客户端(CGI 程序是实现了 CGI 接口标准的程序).
Web 服务器接管到动静脚本申请,Web 服务器主过程就会创立出一个新的过程来启动 CGI 程序, 也就是将动静脚本交给 CGI 程序来解决. 当 CGI 程序启动后会去解析动静脚本,而后将后果返回给 Web 服务器, 最初由 Web 服务器将后果返回给客户端, 之前创立进去的过程也随之敞开.
(转自:https://www.jianshu.com/p/c4dc22699a42)


Servlet 与 CGI 的区别:
在于 Servlet 处于服务器过程中, 它通过多线程形式运行其 service 办法,一个实例能够服务于多个申请, 并且其实例个别不会销毁.
CGI 对每个申请都产生新的过程, 服务实现后就销毁, 所以效率上低于 Servlet. 随着 Fast CGI 解决 CGI 效率上的问题, 二者在效率长差异不是很大.

转发 (forward) 和重定向 (redirect) 的区别

forward 是容器中控制权的转向, 是服务器申请资源, 服务器间接拜访指标地址的 URL, 把那个 URL 的响应内容读取过去, 而后把这些内容再发给浏览器. 浏览器基本不晓得服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址.
redirect 就是服务器端依据逻辑, 发送一个状态码, 通知浏览器从新去申请那个地址, 因而从浏览器的地址栏中能够看到跳转后的链接地址.
前者更加高效, 在前者能够满足需要时, 尽量应用转发.(通过 RequestDispatcher 对象的 forward 办法.RequestDispatcher 对象能够通过 ServletRequest 对象的 getRequestDispatcher 办法取得),并且, 这样也有助于暗藏理论的链接.
在有些状况下, 比方, 须要跳转到一个其它服务器上的资源, 则必须应用重定向(通过 HttpServletResponse 对象调用其 sendRedirect 办法)

JSP 的内置对象及其作用

  • request: 封装客户端的申请, 其中蕴含来自 GET 或 POST 申请的参数.
  • response: 封装服务器对客户端的响应.
  • pageContext: 通过该对象能够获取其余对象.
  • session: 封装用户会话的对象.
  • application: 封装服务器运行环境的对象.
  • out: 输入服务器响应的输入流对象.
  • config:Web 利用的配置对象.
  • page:JSP 页面自身(相当于 Java 程序中的 this).
  • exception: 封装页面抛出异样的对象.

get 和 post 申请的区别

  1. get 申请用来从服务器上取得资源, 而 post 是用来向服务器提交数据.
  2. get 将表单中数据依照 name=value 的模式, 增加到 action 所指向的 URL 前面. 并且两者应用“?”连贯, 而各个变量之间应用“&”连贯.post 是将表单中的数据放在 HTML 头部(header), 传递到 action 所指向 URL.
  3. get 传输的数据要受到 URL 长度限度(1024 字节). 而 post 能够传输大量的数据, 上传文件只能应用 post 形式
  4. 应用 get 时参数会显示在地址栏上, 如果这些数据不是敏感数据, 那么能够应用 get. 对于敏感数据还是利用应用 post.

JSP 和 Servlet 的关系

Servlet 是一个非凡的 Java 程序, 它运行于服务器的 JVM 中, 可能依附服务器的反对向浏览器提供显示内容.
JSP 实质上是 Servlet 的一种繁难模式,JSP 会被服务器解决成一个相似于 Servlet 的 Java 程序, 能够简化页面内容的生成.
Servlet 和 JSP 最次要的不同点在于:

  • Servlet 的应用逻辑是在 Java 文件中, 并且齐全从表示层中的 HTML 拆散开来.
  • JSP 是将 Java 和 HTML 能够组合成 jsp 文件.
  • JSP 侧重于视图,Servlet 更侧重于管制逻辑, 在 MVC 架构模式中,JSP 适宜充当视图 (view) 而 Servlet 适宜充当控制器(controller).

JSP 中的四种作用域

  1. page: 代表与一个页面相干的对象和属性.
  2. request: 代表与 Web 客户机收回的一个申请相干的对象和属性. 一个申请可能逾越多个页面, 波及多个 Web 组件;须要在页面显示的长期数据能够置于此作用域.
  3. session: 代表与某个用户与服务器建设的一次会话相干的对象和属性. 跟某个用户相干的数据应该放在用户本人的 session 中.
  4. application: 代表与整个 Web 应用程序相干的对象和属性, 它本质上是逾越整个 Web 应用程序, 包含多个页面, 申请和会话的一个全局作用域.
正文完
 0