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