JSP 基础知识
JSP基础简介
1. Jsp 简介
JSP(全称 Java server page),是一种动态网页开发技术。通过响应客户端的请求,而动态生成HTML、XML或者其他格式文档的Web网页的技术标准。
JSP 是一种Java Servlet,主要用于实现Java Web 应用程序的用户界面部分。网页开发者们通过结合 HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP 通过网页表单获取用户输入数据、访问数据库以及其他数据源,然后动态创建网页。
2. JSP结构
网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面,容器负责截获对JSP页面的请求。JSP 容器需要和Web服务器协同合作,才可以让JSP正常运行。
3. JSP处理
- Web Server 获取一个客户端对JSP的请求,然后将该请求传递给JSP引擎。
- JSP引擎从磁盘中获取对应的JSP文件,将它们转换为Servlet。将模版文本改用println()语句,将所有JSP元素转换为Java代码。
- JSP 引擎将Servlet编译成可执行的类,并将原始请求传递给Servlet引擎。
- Web Server调用Servlet引擎,载入并且执行Servlet类,在执行的过程中,Servlet将产生HTML格式的输出,然后嵌入到HTTP Response 返回到客户端。
一般情况下,JSP引擎会检查JSP对应的Servlet是否存在,并且会检查JSP文件是否比Servlet文件要新。决定JSP引擎是否需要重新编译生成 Servlet。
4. JSP 的生命周期
JSP的生命周期就是从创建到销毁的过程,与Servlet类似,区别在于JSP的生命周期中多JSP文件编译为Servlet文件。
- 编译阶段
JSP引擎将JSP文件编译为Servlet。
- 初始化阶段
加载JSP对应的Servlet,创建实例,并且调用初始化的方法jspInit()。
- 执行阶段
调用与JSP对应的Servlet实例的服务方法:
void _jspService(HttpServletRequest request, HttpServletResponse response)
这个方法无法继承,需要注意。
- 销毁阶段
调用与JSP对应的Servlet实例的销毁方法 jspDestroy()。例如在停止Tomcat 运行的时候,就会调用 JSP 的jspDestroy() 方法。
5. JSP语法
5.1. 脚本程序
脚本程序可以包含任意量的Java语句、变量、表达式,只要他们在脚本语言中都是有效的。
脚本程序的语法格式:
<% 代码片段 %>
任何文本、HTML标签、Jsp 元素必须要写在脚本外面。
5.2. 中文编码
为了避免中文显示出现乱码的情况,需要在JSP 文件的头部加入以下代码。
<%@ page language=”java” contentType=”text/html; charset=UTF-8” pageEncoding=”UTF-8” %>
核心:page language、contentType、pageEncoding
5.3. JSP 声明
一个声明语句可以声明一个或者多个变量或者是方法,供后面的Java代码使用。在JSP文件中,您必须要先声明在调用。
声明的语法格式与脚本的格式很相似。以下列出两者,作为对比。
脚本程序语法格式:
<% 代码片段 %>
举例:
<% out.println(“Hello World!”) %>
声明语句语法格式:
<%! 代码片段 %>
举例:
<%! private int counter = 0; public void printHelloWorld(){ System.out.println(“Hello World!”); } %>
5.4. JSP 表达式
一个JSP表达式中包含的脚本语言表达式,先会转换为String,然后插入到表达是出现的地方。
由于表达式会被转换为String,因此您可以在一个文本行中任意地方使用表达式,而不用关心它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分好来结束表达式。
表达式的语法格式:
<%= 表达式 %>
5.5. JSP 注释
JSP 注释有两个功能,一个是为代码段添加说明,一个是屏蔽某段代码。
JSP 的注释和 HTML 的注释不一样,前者无法在浏览器中通过查看源码的方式查看,后者则可以。
JSP 注释格式:
<%-- 注释内容 --%>
HTML 注释格式:
<!-- 注释内容 --!>
5.6. JSP 指令
JSP指令用来设置与整个JSP页面相关的属性。
JSP 指令语法格式:
<%@ directive attribute=”value” %>
举例:
<%@ page … %> 定义页面依赖的属性
<%@ inclue … %> 包含其他文件
<%@ taglib … %> 引入标签库的定义
5.7. JSP 隐含对象
JSP 支持九个 自动定义的对象,通常称之为隐含对象。
request HttpServletRequest 类的实例
response HttpServletResponse 类的实例
out PrintWriter 类的实例
session HttpSession 类的实例
application ServletContext 类的实例
config ServletConfig 类的实例
pageContext PageContext 类的实例,提供对JSP 页面所有对象以及命名空间的访问。
page 类似Java 中 this
exception Exception 类的对象,JSP页面中的异常。
需要注意的是:exception 对象,只有在异常页面中有效。异常页面需要加入以下标识。
<%@ page isErrorPage=”true” %>
6. web.xml文件
默认要访问的页面,如果不配置,在浏览器中会直接显示一个空白页面。
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>