JSP 入门

128 阅读3分钟

一、原理

JSP 就是 Java Server Pages,Java 服务端页面

JSP = HTML + Java,用于简化开发的,本质上就是一个 Servlet

JSP 由两部分组成:

  • 静态部分:包含标准的 HTML 标签和静态页面,和 HTML 基本一致
  • 动态部分:包含需要从数据库中读取或需要动态生成的内容,实际就是通过 Java 代码产生的数据内容

JSP 页面由系统编译成 Servlet,Servlet 再负责响应用户的请求。自己编写的 JSP 代码应该放在 web 应用的 WEB-INF 路径下,Servlet 容器会对该文件进行编译,生成两个文件,分别是 .java 文件和 .class 文件,被放在 work 路径下的对应的 web 应用内

JSP 页面的执行原理:

二、生命周期

JSP 生命周期就是从创建到销毁的整个过程,类似于 servlet 生命周期,区别在于 JSP 生命周期还包括将 JSP 文件编译成 servlet

JSP 生命周期所走过的几个阶段:

  • 编译阶段:servlet 容器编译 servlet 源文件,生成 servlet 类
  • 初始化阶段:加载与 JSP 对应的 servlet 类,创建其实例,并调用它的初始化方法
  • 执行阶段:调用与 JSP 对应的 servlet 实例的服务方法
  • 销毁阶段:调用与 JSP 对应的 servlet 实例的销毁方法,然后销毁 servlet 实例

三、基本语法

1. JSP 声明

JSP 声明用来声明方法和变量:<%!声明部分%>

  • 在 JSP 中不能声明抽象方法

  • 在 JSP 中声明的方法和变量被所有客户端所共享

2. JSP 输出表达式

<%=num%>

等价于

<%out.println(num)%>

  • 等号就相当于 Java 中的输出语句

  • 输出表达式后不能有分号

3. JSP 小脚本

使用 JSP 小脚本可以包括任何可执行的 Java 代码,但是在这里面声明的变量是局部变量,需要满足在 Java 中对局部变量的约束

eg:

<table>
<%
for(int i = 0;i < 5;i++){
%>
    <tr>
        <td>循环值:</td>
        <td><%=i%></td>
    </tr>
<%  
}
%>
</table>

四、JSP 九大内置对象

对象描述类型作用域
requestHttpServletRequest 类的实例,代表 HTTP 请求的对象,包含客户端发送到服务器的信息,如表单数据、URL参数等javax.servlet.ServletRequestRequest
responseHttpServletResponse 类的实例,代表 HTTP 响应的对象,用于向客户端发送数据和响应javax.servlet.SrvletResponsePage
pageContextPageContext 类的实例,提供对 JSP 页面所有对象以及命名空间的访问javax.servlet.jsp.PageContextPage
sessionHttpSession 类的实例,代表用户会话的对象,可用于存储和检索用户特定的数据,跨多个页面javax.servlet.http.HttpSessionSession
applicationServletContext 类的实例,代表 Web 应用程序的上下文,可以用于存储和检索全局应用程序数据javax.servlet.ServletContextApplication
outJspWriter 类的实例,用于向客户端输出文本内容的对象,通常用于生成 HTMLjavax.servlet.jsp.JspWriterPage
configServletConfig 类的实例,包含有关当前 JSP 页面的配置信息,例如初始化参数javax.servlet.ServletConfigPage
page类似于 Java 类中的 this 关键字,代表当前 JSP 页面的实例,可以用于调用页面的方法javax.lang.ObjectPage
exceptionexception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,用于处理 JSP 页面中的异常情况,可用于捕获和处理页面中发生的异常javax.lang.ThrowablePage