Skip to content

JSP技术详解及其运行机制

Published:  at  03:34 AM

JSP 基础

JSP 概念

JSP(Java Server Pages)是一种运行在服务器端的页面技术,允许在 HTML 页面中嵌入 Java 代码,用于生成动态 Web 内容,主要目标是简化 Servlet 中大量 HTML 输出代码的编写

一个 JSP 页面通常包含:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>测试用例</title>
  </head>
  <body>
    <% System.out.println("hello JSP!"); %>
    <p>hi JSP!</p>
  </body>
</html>

JSP 运行原理

JSP 本质上仍然是 Servlet

服务器在第一次访问 JSP 页面时,会经历以下过程:

  1. .jsp 文件转换为 .java Servlet 源文件
  2. 编译生成 .class 字节码文件
  3. 由容器(如 Tomcat)加载并执行
  4. 后续访问直接使用已编译的 Servlet

由于只有 Servlet 能被 Web 容器直接调用,因此 JSP 只是 Servlet 的一种语法层封装


JSP 脚本元素

JSP 中用于编写 Java 代码的语法称为脚本元素,主要分为三类,不同脚本在最终生成的 Servlet 中所处位置不同。

1. Scriptlet(脚本片段)

<% Java代码 %>
<% System.out.println("hello"); %>

2. Declaration(声明)

<%! Java代码 %>
<%! int count = 100; %>

3. Expression(表达式)

<%= 表达式 %>
<%= "hello JSP" %>

JSP 内置对象

JSP 页面中可以直接使用的一组对象,由容器在运行时自动创建并注入。

其中 out 是字符输出流对象,功能与 response.getWriter() 类似,用于向页面输出内容。

需要注意:


JSP 指令

作用

用于配置 JSP 页面属性、导入资源或标签库。

基本格式

<%@ 指令名 属性名=属性值 ... %>

常见指令类型


page 指令常用属性

属性名作用
contentType设置响应 MIME 类型和字符集
import导入 Java 包
errorPage指定当前页面异常时跳转的页面
isErrorPage标识当前页面是否为异常处理页面

异常处理示例

可能产生异常的页面

<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" %>
<%
    int i = 3 / 0;
%>

异常处理页面

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>
<html>
<body>
<h1>页面错误</h1>
<p><%= exception.getMessage() %></p>
</body>
</html>

JSP 注释方式


JSP 九大内置对象

变量名类型主要作用
pageContextPageContext当前页面作用域,可获取其他内置对象
requestHttpServletRequest一次请求范围内共享数据
responseHttpServletResponse响应对象
sessionHttpSession一次会话范围内共享数据
applicationServletContext全局共享数据
pageObject当前 Servlet 实例(this)
outJspWriter页面输出对象
configServletConfigServlet 配置对象
exceptionThrowable异常对象(仅错误页可用)

Suggest Changes

Previous Post
深入理解Session机制及其使用方法
Next Post
会话技术与Cookie在客户端的应用