Java知识整理——Servlet&JSP

Servlet

  1. 什么是Servlet?
    servlet是用来处理客户端请求并生成动态web内容的Java程序语言类。Servlets大多是用来处理或者存储HTML表单提交的数据,提供动态内容和管理那些不在HTTP无状态协议中的状态信息。
  2. 解释一个Servlet的架构.
    核心抽象概念肯定是所有servlet必须实现 javax.servlet.Servlet 接口。 每个 servlet 必须直接或者间接实现这个接口, 也可以继承于 javax.servlet.GenericServlet 或者javax.servlet.http.HTTPServlet。最后想提的是,每个 servlet 能够使用多线程服务多个请求。
  3. 一个 Applet 和 一个 Servlet 区别是什么 ?
    一个 Applet 是一个跑在客户机器的 网页浏览器 里面的 客户端java程序。相反,一个 servlet 是跑在网页服务器的服务的容器。一个 applet 能使用用户界面class, 而一个 servlet 不能够有一个用户界面。相反,一个servlet 等待客户端的 HTTP 请求并为每一个请求生成一个响应。
  4. GenericServlet 和 HttpServlet 的区别是什么 ?
    GenericServlet 是一个实现了Servlet 和 ServletConfig 接口的通用的协议无关的 servlet . 那些继承于GenericServlet 类的 servlet 将重写 service 方法 。最后想提的是,为了给Web用户开发一个使用HTTP协议服务的HTTP servlet, 你的 servlet 必须改为继承于 HttpServlet 。查看Servlet的示例 。
  5. 解释一个Servlet的生命周期.
    对每一个客户端的请求,这个Servlet引擎加载servlet和调用它的init方法,以便在servlet初始化。然后, Servlet对象处理所有从客户端来的后续请求,通过为每个请求单独调用服务的方法。最后,该servlet调用服务器的destroy方法。
  6. doGet()和doPost()之间的区别是什么?
    doGet : GET方法附加请求的URL的名称 - 值对。因此,存在客户端的请求字符数量的限制。此外,该请求的参数值为可见,因此,如果有敏感信息不能采用这种方式。
    doPost: POST方法克服了GET请求的限制,将发送请求的值置于body里。此外,发送值的数量没有限制。最后,通过POST请求传递的敏感信息是不可见的
  7. web应用是什么 ?
    web应用是web服务的延伸. 主要有两种类型:面向视觉的和面向服务的. 面向视觉型的应用通过编辑语言来动态展示交互页面. 面向应用的则提供了后端的service.总的来说,就是一堆置于 server’s URL明明空间下的servlets.
  8. 什么是服务端包含 (SSI) ?
    服务端包含是服务端的一种简单脚本语言,主要应用在Web方面,置于servlet标签中. 最常用的地方就是在网页中引入一个或多个文件. 当浏览器加载页面时,使用servlet产生的超文本替换其标签.
  9. 什么是 Servlet 链?
    Servlet 链是指将上一个servlet的结果传到下一个.第二个的结构又可以传到第三个. 最后的servlet负责将响应回复给客户端.
  10. 如何知道请求 servlet的客户端信息 ?
    ServletRequest类可以获取客户端的IP地址或主机名. getRemoteAddr()获取IP getRemoteHost()获取主机名. 示例如下 here.
  11. Http response的结构是什么 ?
    HTTP response 包括了三个部分:
    Status Code: 描述了这次回应的状况. 它可以用来检查这次请求是否成功完成. 一旦请求失败了, 这个status code可以用来寻找原因. 如果你的 servlet 没有返回一个status code, 默认就会返回成功的status code, HttpServletResponse.SC_OK.
    HTTP Headers: 它包含了response的更多信息.举个例子,headers可以反应response的访问date/time, 或者是用于将实体安全地传送到用户的编码形式。可以阅读 how to retrieve headers in Servlet here.
    Body: 它是response的具体内容. 可能包括HTML内容,比如图片。Body包括了紧接Header发送的HTTP事务消息数据字节。
  12. 什么是cookie?session和cookie之间的区别是什么?
    Cookie是Web服务器发送到浏览器的一小块信息,浏览器为每个Web服务器在本地文件中存储cookie。 在以后的请求里, 浏览器对特定的Web服务器,将request和所有特定的Web服务器的cookie一起发送。Session和Cookie之间的区别如下:
    Session无论在客户端浏览器的设置都可以工作。客户端可以选择禁用cookies。然而,Session仍然可以工作,因为客户端没有能力在服务器端禁用Session。
    Session和cookie也有不同的信息存储量。 HTTP会话能够存储任何Java对象,而一个cookie只能保存String对象。
  13. 浏览器和servlet通过什么协议通信 ?
    HTTP协议.
  14. 什么是HTTP通道 ?
    通道是指使用 HTTP或 HTTPS 封装其它的网络协议. HTTP包装了其他的网络通信协议. 其它协议通过HTTP来发送请求的过程就使用了通道.
  15. sendRedirect和 forward 方法的区别?
    sendRedirect创建一个新的请求, forward只是将请求转发.之前请求中包含的对象在redirect后将不可用, 因为产生了一个新的请求. 但是 forwarding不受此限制.通常来说,sendRedirect 比 forward 方法慢一些.
  16. 什么是URL编码和解码 ?
    URL编码就是替换其中的空格和特殊字符, 变成相应的Hex码.解码就是反向操作。

JSP

  1. JSP页面是什么 ?
    一个JSP页面是一个文本文档,包含了两种类型的文本:静态数据和JSP元素。静态数据可以以任何一种基于文本的格式表达,比如HTML或者XML。JSP是一种混合了静态内容与动态生成内容的技术。查看JSP例子
  2. JSP请求是如何被处理的?
    一个JSP请求的到来,浏览器首先以一个jsp扩展的文件名来请求一个页面。然后,Web Server读取到该请求,使用JSP编译器将JSP页面转换为一个servlet类。注意JSP文件只在该页面的第一次请求或者JSP文件已经改变时才编译。生成的servlet类被调用,去处理浏览器的请求。一旦请求处理完,servlet会向客户端返回一个相应。查看如何获取JSP请求中的参数
  3. JSP的优势所在?
    使用JSP技术有以下优势:
    JSP网页被动态的编译,因此开发者很容易更新当前代码。
    JSP网页可预编译。
    JSP网页能容易的组合成静态模版,包括HTML XML片段,且代码可形成动态内容。
    开发者能提供自定义的JSP标签库,且使用类XML语法访问。
    开发者可以在组件级别做逻辑上的改变,但是不能使用程序逻辑编辑个别的网页。
  4. 什么是指令?在JSP中, 包括哪些不同类型的指令?
    指令是JSP引擎所处理的命令,当网页被编译成小程序时,指令用于去设置页面级别的命令,从外部文件插入数据,指定自定义的标签库。指令被包括在<%@ 和%>内。指令的类型分为:
    包含指令:用于包含文件,和当用页面合并文件内容。
    页面指令:用于定义JSP页面的具体属性,比如错误页面和缓冲池。
    标签库:用于声明页面中使用到的自定义标签库。
  5. 什么是JSP的actions?
    JSP的actions是使用XML语法结构来控制Servlet引擎的行为。JSP的actions是在当JSP页面请求的时候才执行。它们会动态插入一个文件中,再利用JavaBeans的组件,转发给用户到另一个页面,或者生成带Java插件的HTML页面。以下是一些可以操作的actions:
    jsp:include- 当JSP页面被请求的时候,包含了一个文件。
    jsp:useBean- 寻找或者实例化一个JavaBean。
    jsp:setProperty- 设置JavaBean的属性。
    jsp:getProperty- 得到JavaBean的属性。
    jsp:forward- 转发请求到新的页面。
    jsp:plugin- 生成特定浏览器的代码。
  6. 什么是Scriptlet?
    在Java Server Page(JSP)技术中,scriptlet是嵌入在JSP页面的其中一块Java代码。scriptlet是标签内的任何东西。在这些标签之间,用户可以添加任何有效的scriptlet。
  7. 什么是声明?
    声明类似于Java中的变量声明。声明是为表达式或者scriptlets后续的使用而声明的变量。添加一个声明,你必须在你的声明中使用序列。
  8. 什么是表达式?
    JSP表达式是把一个脚本语言表达式的值插入进来,转换成字符串,进入数据流之后再通过web服务器返回给客户端。表达式的定义是在<% = 和 %>标签之间。
  9. 什么是隐式对象?他们是什么?
    JSP隐式对象是指JSP容器在每页中提供给开发人员的Java对象。开发人员可以直接调用他们,而不需要任何显示声明。JSP隐式对象也被称为预定义变量。以下对象都是在JSP页面中隐式存在的:
    application
    page
    request
    response
    session
    exception
    out
    config
    pageContext

你可能感兴趣的:(java,jsp,servlet,面试题)