jsp九大内置对象

一、能够在 JSP 页面中直接使用,而无需额外声明是什么意思?

在 JSP 页面里可以直接使用这九大内置对象,无需额外声明,意思是你在 JSP 页面中运用这些对象时,不用像常规的 Java 变量那样先声明再使用。下面从常规 Java 变量声明和 JSP 内置对象使用对比的角度来详细说明:

1.常规 Java 变量声明和使用

在 Java 程序里,若要使用某个变量,必须先对其进行声明,也就是指定变量的类型和名称,有时还需对其进行初始化。例如:

public class VariableExample {
    public static void main(String[] args) {
        // 声明一个整型变量 num 并初始化为 10
        int num = 10; 
        // 使用变量 num 进行计算
        int result = num * 2; 
        System.out.println("计算结果: " + result);
    }
}

在这个例子中,num 变量在使用之前,先明确声明了它的类型为 int,并且进行了初始化赋值。

2.JSP 内置对象的使用

JSP 的九大内置对象在 JSP 页面中可直接使用,无需额外声明。这是因为在 JSP 页面被服务器编译成 Servlet 时,服务器会自动创建这些对象,并且使其在 JSP 页面的作用域内可用。例如,使用 request 对象获取客户端提交的参数:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>使用 request 内置对象</title>
</head>
<body>
    <%
        // 直接使用 request 对象,无需提前声明
        String username = request.getParameter("username"); 
        out.println("你输入的用户名是: " + username);
    %>
</body>
</html>

在这段 JSP 代码中,request 对象无需提前声明,可直接使用它的 getParameter 方法来获取客户端提交的 username 参数。

3.原理说明

当客户端请求一个 JSP 页面时,服务器会把该 JSP 页面编译成一个 Servlet 类。在这个编译过程中,服务器会自动在 Servlet 类里创建这九大内置对象,并将它们作为成员变量或者方法参数提供给 JSP 页面的代码使用。所以,在 JSP 页面中可以直接使用这些对象,无需额外声明。

综上所述,“能够在 JSP 页面中直接使用,而无需额外声明” 极大地简化了 JSP 开发的流程,让开发者能够更专注于业务逻辑的实现。

二、jsp九大内置对象

在 JSP(JavaServer Pages)里,有九个内置对象,这些对象能够在 JSP 页面中直接使用,而无需额外声明。下面为你详细介绍这九大内置对象:

1. request

  • 类型javax.servlet.http.HttpServletRequest
  • 作用:封装客户端的请求信息,像请求参数、请求头、请求方法等内容。借助它可以获取客户端提交的数据。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>获取请求参数</title>
</head>
<body>
    <%
        String username = request.getParameter("username");
        out.println("你输入的用户名是:" + username);
    %>
</body>
</html>

2. response

  • 类型javax.servlet.http.HttpServletResponse
  • 作用:封装服务器对客户端的响应信息,能够设置响应头、响应状态码以及向客户端输出内容。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>设置响应头</title>
</head>
<body>
    <%
        response.setHeader("Refresh", "5;URL=https://www.example.com");
        out.println("5秒后将自动跳转到示例网站。");
    %>
</body>
</html>

3. session

  • 类型javax.servlet.http.HttpSession
  • 作用:用于在多个页面间跟踪用户会话,能够存储和获取用户的会话数据。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>会话管理</title>
</head>
<body>
    <%
        session.setAttribute("user", "JohnDoe");
        String user = (String) session.getAttribute("user");
        out.println("当前会话中的用户是:" + user);
    %>
</body>
</html>

4. application

  • 类型javax.servlet.ServletContext
  • 作用:代表整个 Web 应用程序,可用于在多个 Servlet 和 JSP 页面间共享数据。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>应用程序范围数据</title>
</head>
<body>
    <%
        application.setAttribute("appName", "MyWebApp");
        String appName = (String) application.getAttribute("appName");
        out.println("当前应用程序的名称是:" + appName);
    %>
</body>
</html>

5. out

  • 类型javax.servlet.jsp.JspWriter
  • 作用:用于向客户端输出内容,可输出文本、HTML 标签等。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>输出内容</title>
</head>
<body>
    <%
        out.println("<h1>欢迎访问我的网站!</h1>");
    %>
</body>
</html>

6. config

  • 类型javax.servlet.ServletConfig
  • 作用:封装 Servlet 的配置信息,可获取 Servlet 的初始化参数。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>获取配置参数</title>
</head>
<body>
    <%
        String paramValue = config.getInitParameter("myParam");
        out.println("初始化参数的值是:" + paramValue);
    %>
</body>
</html>

7. pageContext

  • 类型javax.servlet.jsp.PageContext
  • 作用:代表当前 JSP 页面的上下文,可用于访问其他内置对象,设置和获取页面范围内的属性。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>页面上下文</title>
</head>
<body>
    <%
        pageContext.setAttribute("pageVar", "这是页面范围内的变量");
        String pageVar = (String) pageContext.getAttribute("pageVar");
        out.println("页面范围内的变量值是:" + pageVar);
    %>
</body>
</html>

8. page

  • 类型java.lang.Object
  • 作用:代表当前 JSP 页面的实例,在实际开发中较少使用。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>当前页面实例</title>
</head>
<body>
    <%
        out.println("当前页面实例的类名是:" + page.getClass().getName());
    %>
</body>
</html>

9. exception

  • 类型java.lang.Throwable
  • 作用:在错误处理页面中使用,用于获取异常信息。
  • 示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>错误处理页面</title>
</head>
<body>
    <h1>发生错误</h1>
    <p>错误信息:<%= exception.getMessage() %></p>
    <p>错误堆栈跟踪:</p>
    <pre>
        <%
            exception.printStackTrace(new java.io.PrintWriter(out));
        %>
    </pre>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值