JSP是服务器端运行的页面,JSP本身就是一个Servlet,他不仅可以包含静态的HTML代码,也可以包含动态的JAVA代码,服务器容器可以将JSP转换成Servlet发布,并接受请求。
Jsp文件只需放在应用文件下就可以了。
此文档是本人多年开发经验,并总结出来的,很有价值
### JSP学习笔记详解
#### 一、JSP概述
JSP(JavaServer Pages)是一种基于Java技术的服务器端动态网页技术。它结合了HTML、XML等标记语言以及Java编程语言,可以在服务器端生成动态HTML内容。JSP本身就是一个Servlet,能够通过服务器容器将静态HTML代码和动态Java代码相结合,实现页面的动态展示。
- **运行机制**:当用户访问一个JSP页面时,服务器首先将JSP文件转换成Servlet源代码,然后编译成.class文件,最后通过HTTP响应返回给客户端。
- **放置位置**:JSP文件通常放置在Web应用程序目录下的某个特定位置,如 `/WEB-INF` 目录或直接放在Web应用的根目录下。
#### 二、JSP运行流程详解
1. **JSP到Java文件的转换**:当用户首次访问JSP页面时,服务器会将JSP文件解析并转换成一个Java文件(Servlet)。转换后的Java文件位于Tomcat的工作目录下的相应位置,如 `work/Catalina/localhost` 下的应用程序目录内。
- **示例**:假设有一个名为 `index.jsp` 的文件,访问该文件时,服务器会将其转换为 `index_jsp.java` 文件。
2. **编译Java文件**:转换后的Java文件会被编译成 `.class` 文件。
- **示例**:继续上面的例子,编译后的文件为 `index_jsp.class`。
3. **运行.class文件**:服务器加载编译后的 `.class` 文件,通过HTTP响应返回动态生成的HTML内容给客户端。
#### 三、JSP特点
- **无需编译**:JSP文件在服务器端被自动转换为Servlet源代码并编译执行,开发者无需手动编译。
- **无需配置**:相较于传统的Servlet,JSP在部署时更简单,不需要复杂的配置步骤。
- **本质为Servlet**:JSP实际上是一个特殊的Servlet,能够充分利用Servlet的功能和灵活性。
- **以静态页面为主**:虽然JSP支持动态内容的生成,但其主要用途还是在于提供静态HTML结构,结合少量的动态元素。
#### 四、JSP语法格式
JSP提供了五种基本的语法格式:
1. **表达式** `<%=%>`:用于输出变量或表达式的值。例如,`<%= "Hello World" %>` 会输出文本 “Hello World”。
2. **声明** `<%! %>`:用于声明变量、方法或内部类。声明的内容被视为成员变量或成员方法。
- **注意事项**:不要在声明中使用成员变量来做计数等操作,因为Servlet实例可能由服务器管理生命周期,最好将这类数据存储在文件或数据库中。
3. **代码片段** `<% %>`:用于执行Java代码,如条件语句、循环等。代码片段中的变量在服务方法体内声明,被视为局部变量。
4. **JSP指令** `<%@ %>`
- **页面指令**:如 `<%@ page import="java.util.*" %>`, 用于导入包。
- **包含指令**:如 `<%@ include file="header.jsp" %>`, 用于静态地包含其他文件的内容。
5. **JSP动作** `<jsp:>`:用于动态地插入内容或执行其他操作,如 `<jsp:include page="footer.jsp" />` 动态包含页面。
#### 五、JSP注释
1. **服务器端注释**:`<%-- 注释内容 --%>`,不会发送到客户端。
2. **客户端注释**:`<!-- 注释内容 -->`,会作为HTML注释发送到客户端。
#### 六、JSP指令详解
1. **包含指令** `<%@ include file="..." %>`
- **功能**:将其他文件的内容静态地插入当前JSP文件中。
- **注意事项**:包含文件中不应定义与当前文件中相同的变量名称,以避免命名冲突。
2. **页面指令** `<%@ page ... %>`
- **引入包**:`<%@ page import="java.util.*" %>`, 用于引入所需的包。
- **页面编码**:`<%@ page pageEncoding="UTF-8" %>`, 指定页面编码。
- **输出流编码**:`<%@ page contentType="text/html; charset=UTF-8" %>`, 设置输出流编码方式和文件格式。
- **脚本语言**:`<%@ page language="java" %>`, 指定使用的脚本语言。
- **会话控制**:`<%@ page session="true" %>`, 控制是否启用会话。
通过以上介绍可以看出,JSP提供了一种简洁且高效的方式来构建动态Web应用程序,尤其是在需要混合静态内容和动态内容的情况下表现尤为出色。理解JSP的基本概念及其工作原理对于开发高质量的Web应用程序至关重要。