史上最全JSP面试问题和答案整理

这里列出了针对初学者和专业人士的40个最常见的JSP面试问题和答案。如果你知道此处未包含任何JSP面试问题, 请在” 提问” 部分中发布你的问题。
1)什么是JSP?
Java Server Pages技术(JSP)是一种服务器端编程语言, 用于创建超文本标记语言(HTML)形式的动态网页。它是Servlet技术的扩展。
JSP页面在内部转换为servlet。 JSP可以访问整个Java API系列, 包括用于访问企业数据库的JDBC API。因此, 在Java服务器页面(JSP)中已使用Java语言语法。与Servlet相比, JSP页面更易于维护, 因为我们可以分开设计和开发。它提供了一些附加功能, 例如表达语言, 自定义标签等。
更多细节。
2)JSP的生命周期方法是什么?

Method Description
与servlet的init方法相同, 仅被调用一次。
它在每次请求时都被调用, 与servlet的service()方法相同。
与Servlet的destroy()方法相同, 它仅被调用一次。
3)列出使用JSP的一些优点。
  • 更好的性能。
  • JSP的编译是在服务器处理完之前完成的, 从而消除了每次加载解释器和代码脚本的需要。
  • JSP可以访问功能强大的企业。
    易于维护:JSP易于管理, 因为我们可以轻松地将业务逻辑与表示逻辑分开。在Servlet技术中, 我们将业务逻辑与表示逻辑混合在一起。
  • JSP也可以与servlet结合使用。
4)给出JSP注释的语法。
JSP注释的语法为:
< %-- Comment --%>

5)隐藏注释和输出注释之间有什么区别?
JSP注释称为隐藏注释, 而HTML注释称为输出注释。如果用户查看页面源, 则不会显示JSP注释, 而会显示HTML注释。
6)什么是JSP隐式对象?
JSP默认提供9个隐式对象。它们如下:
Object Type
JspWriter
HttpServletRequest
HttpServletResponse
ServletConfig
HttpSession
ServletContext
PageContext
Object
Throwable
更多细节。
7)include指令和include动作有什么区别?
include directive 包括动作
1)include动作包含请求时的内容。
2)include动作不包含原始内容, 而是调用Vendor提供的类的include()方法。
3)3)对于动态页面更好。
8)JSP技术是否可扩展?
是。通过开发封装在标签库中的自定义动作或标签, 可以扩展JSP技术。
9)如何实现线程安全的JSP页面?使用它的优缺点是什么?
通过让JSP实现SingleThreadModel接口, 可以使它们成为线程安全的。这是通过在JSP页面中添加指令< %@ page isThreadSafe =” false” %> 来完成的。
10)如何防止浏览器缓存JSP或Servlet页面的输出?
(或)如何禁用浏览器后退按钮上的缓存?
< % response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setHeader ("Expires", "0"); //prevents caching at the proxy server %>

11)我们如何处理JSP中的异常?
有两种执行异常处理的方法, 一种是通过page指令的errorPage元素, 第二种是通过web.xml文件的error-page元素。
更多细节。
12)包含另一页结果的两种方法是什么? ?
包含另一页结果的方法有两种:
  • 通过include指令
  • 通过包含动作
13)我们如何将请求从JSP页面转发到servlet?
当然是!在” 前进动作” 标签的帮助下, 但是我们需要提供servlet的URL模式。
前向动作标签
14)我们可以在任何JSP页面中使用异常隐式对象吗?
不能。异常隐式对象只能在使用page指令的isErrorPage属性定义它的错误页面中使用。
更多细节。
15)在MVC模型中如何使用JSP?
JSP通常用于MVC模式(模型视图控制器)中的表示, 即, 它起着视图的作用。控制器处理调用模型和业务类的工作, 这些类和业务类又获取数据, 然后将这些数据提供给JSP, 以呈现给客户端。
前向动作标签
16)什么是上下文初始化参数?
上下文初始化参数由web.xml文件中的< context-param> 指定, 它们是整个应用程序的初始化参数, 并不特定于任何servlet或JSP。
更多细节。
17)< jsp:useBean> 标记的不同作用域值是什么?
有4个值:
  1. 请求
  2. 会议
  3. 应用
更多细节。
18)JSP文字包括什么?
  • boolean
  • 整数
  • 浮点
  • String
  • null
19)< jsp:useBean> 的目的是什么?
jsp:useBean操作搜索具有指定名称的对象的存在。如果找不到, 它将创建一个。
20)< jsp:setProperty> 的目的是什么?
此操作设置bean的属性。
21)< jsp:getProperty> 的目的是什么?
该操作检索bean的属性。
22)列出JSP动作的各种范围值。
可能的范围值是:
  • 请求
  • 会议
  • 应用
23)” out” 隐式对象的用途是什么?
该对象用于对内容做出响应。
24)给出session对象的使用。
【史上最全JSP面试问题和答案整理】在客户端请求之间使用该对象来跟踪客户端会话。
25)给出异常对象的使用。
该对象用于生成对引发的错误的响应。
26)ServletContext和PageContext有什么区别?
ServletContext提供有关容器的信息, 而PageContext提供有关请求的信息。
27)使用request.getRequestDispatcher()和context.getRequestDispatcher()有什么区别?
使用request.getRequestDispatcher(path)创建资源时, 我们需要提供资源的相对路径, 而使用context.getRequestDispatcher(path)创建资源时, 我们需要提供资源的绝对路径。
28)JSP中的EL是什么?
JSP中使用了Expression Language(EL)来简化对象的可访问性。它提供了许多可以直接使用的对象, 例如param, requestScope, sessionScope, applicationScope, request, session等。
29)JSP定制标记和Java Bean之间的主要区别是什么?
  • 定制标记可以操纵JSP内容, 而Bean则不能。
  • 与Bean相比, 使用自定义标签可以将复杂的操作简化为非常简单的形式。
  • 与bean相比, 自定义标签的设置工作量要大得多。
  • 定制标记仅在JSP 1.1和更高版本中可用, 但是bean可以在所有JSP 1.x版本中使用。
30)可以在JSP文件中实现接口吗?
编号
31)什么是JSTL?
JSP标准标记库是预定义标记的库, 可简化JSP的开发。
更多细节。
32)JSTL中提供了多少个标签?
JSTL标签有5种类型。
  1. 核心标签
  2. sql标签
  3. xml标签
  4. 国际化标签
  5. 功能标签
更多细节。
33)在JSP定制标记中使用哪个指令?
JSP taglib指令。
34)JSP bean开发中使用的三个标记是什么?
  1. jsp:useBean
  2. jsp:setProperty
  3. jsp:getProperty
更多细节。
35)如何在JSP中禁用会话?
< %@ page session="false" %>

36)列出JSP中使用的各种动作标签。
以下是JSP中使用的各种动作标签的列表:
  • jsp:forward:此操作标签将请求和响应转发到另一个资源。
  • jsp:include:此操作标签用于包含另一个资源。
  • jsp:useBean:此操作标签用于创建和定位bean对象。
  • jsp:setProperty:此操作标签用于设置bean属性的值。
  • jsp:getProperty:此操作标签用于打印bean的属性值。
  • jsp:plugin:此操作标签用于嵌入另一个组件, 例如applet。
  • jsp:param:此操作标签用于设置参数值。它用于向前, 并且主要包含在内。
  • jsp:fallback:如果插件正常工作, 则此操作标签可用于打印消息。
37)解释在JSP中创建自定义标签的步骤吗?
要创建任何自定义标签, 我们需要执行以下步骤:
  1. 创建标签处理程序类
    要生成标签处理程序, 我们将继承TagSupport类并重写其方法doStartTag()。要为JSP写入数据, 我们需要使用JspWriter类。
    PageContext类提供getOut()方法, 该方法返回JspWriter类的实例。 TagSupport类默认提供pageContext的实例。
  2. 创建TLD文件
    标签库描述符(TLD)文件包含标签和标签处理程序类的信息。它必须保存在WEB-INF目录中。
  3. 创建JSP文件
    让我们使用JSP文件中的标签。在这里, 我们直接指定tld文件的路径。但是, 建议使用URI名称代替完整的tld文件路径。稍后我们将了解URI。它使用taglib指令来使用tld文件中定义的标签。
38)小程序如何在JSP中显示?举例说明。
jsp:plugin操作标记用于将小程序嵌入JSP文件中。 jsp:plugin操作标记在客户端下载插件以执行applet或bean。
在JSP中显示小程序的示例
< html> < head> < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> < title> Mouse Drag< /title> < /head> < body bgcolor="khaki"> < h1> Mouse Drag Example< /h1> < jsp:plugin align="middle" height="500" width="500" type="applet"code="MouseDrag.class" name="clock" codebase="."/> < /body> < /html>

39)JSP中的表达语言是什么?
表达式语言(EL)简化了Java Bean组件中存储的数据以及其他对象(如请求, 会话, 应用程序)的可访问性。
EL中有许多隐式对象, 运算符和保留字。
它是JSP技术版本2.0中的新增功能。
40)用表达语言解释各种隐式对象。
Implicit Objects Usage
它将给定的属性名称与页面范围中设置的值进行映射
它将给定的属性名称与在请求范围内设置的值进行映射
它将给定的属性名称与会话范围中设置的值进行映射
它将给定的属性名称与在应用程序范围内设置的值进行映射
它将请求参数映射到单个值
它将请求参数映射到值数组
它将请求标头名称映射到单个值
它将请求标头名称映射到值数组
它将给定的cookie名称映射到cookie值
它映射初始化参数
它提供对许多对象请求, 会话等的访问。
Java OOP面试问题
Java字符串和异常问题
JDBC面试问题
JSP面试问题
休眠面试问题
SQL面试题
Android面试题
MySQL面试问题
公共无效的jspInit()
公共无效_jspService(ServletRequest request, ServletResponse)引发ServletException, IOException
公共无效jspDestroy()
1)出
2)要求
3)回应
4)配置
5)会议
6)申请
7)pageContext
8)页
9)例外
1)include指令包含页面翻译时的内容。
2)include指令包含页面的原始内容, 因此页面大小在运行时会增加
3)最好使用静态页面。
pageScope
requestScope
sessionScope
应用范围
停止
参数值
标头
headerValues
曲奇饼
初始化参数
pageContext
Java基础面试问题
Java多线程问题
Java Collection面试题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
SQL Server面试问题

    推荐阅读