Jsp面试题及答案(6-10)

6、JSP 有哪些内置对象?分别是什么?

JSP 有 9 个内置对象,分别是:

    -request:封装客户端的请求,其中包含 HTTP 请求的所有信息。
    -response:封装服务器对客户端的响应,可以通过它来设置 HTTP 响应的状态和头信息。
    -pageContext:JSP 页面的上下文,它是 PageContext 类型的引用,用于管理 JSP 页面的属性和作用域。
    -session:封装用户会话的对象,可以用于在不同请求之间共享信息。
    -application:封装 ServletContext 的对象,用于在整个应用程序中共享信息。
    -out:用于向客户端输出文本信息。
    -config:封装 Servlet 配置信息的对象,可以用于读取 web.xml 中的初始化参数。
    -page:指向正在执行的 JSP 页面本身。
    -exception:封装 JSP 页面抛出的异常。

7、JSP 中如何实现页面跳转?

在 JSP 中实现页面跳转有两种方式:

1)使用 Java 代码进行跳转:
response.sendRedirect(“target.jsp”);
这种方式会向客户端发送一个 302 重定向响应,客户端的浏览器会自动重定向到目标页面。

2)使用 JSP 指令进行跳转:

这种方式会在服务器端进行页面跳转,将请求转发到目标页面,客户端的浏览器是无法感知到这个跳转的。

8、JSP 中如何使用标准的 JSTL 标签库?

要使用 JSTL 标签库,需要在 JSP 页面顶部添加以下指令:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

其中,prefix 属性是标签库的前缀,uri 属性是标签库的统一资源标识符(URI)。

然后,就可以在 JSP 页面中使用 JSTL 标签了。例如,可以使用 标签遍历集合:

<c:forEach var="item" items="${items}">
  <p>${item}</p>
</c:forEach>

9、JSP 页面中的注释有哪些?

JSP 页面中有两种注释方式:

HTML 注释:
JSP 注释:<%– 这是一个 JSP 注释 –%>
其中,HTML 注释不会被 JSP 引擎处理,而 JSP 注释会被 JSP 引擎忽略。

10、JSP 中如何使用自定义标签?

要使用自定义标签,需要定义一个标签处理类和一个标签库描述文件。标签处理类通常继承自 javax.servlet.jsp.tagext.SimpleTagSupport 类,实现标签的处理逻辑。标签库描述文件是一个 XML 文件,用于描述自定义标签的属性、名称和处理类等信息。

例如,下面是一个简单的自定义标签,用于显示当前时间:

标签处理类 com.example.TimeTag:

package com.example;

import java.io.IOException;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class TimeTag extends SimpleTagSupport {
    public void doTag() throws JspException, IOException {
        getJspContext().getOut().write(new Date().toString());
    }
}

标签库描述文件 time.tld:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0">
  <tlib-version>1.0</tlib-version>
  <short-name>time</short-name>
  <uri>http://example.com/tags/time</uri>
  <tag>
    <name>time</name>
    <tag-class>com.example.TimeTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

在 JSP 页面中引入自定义标签库:

<%@ taglib prefix="t" uri="http://example.com/tags/time" %>

然后就可以在 JSP 页面中使用自定义标签了:

<t:time/>