1.JSP——Java Sever Page
是sun公司制定的一种用于服务器端页面生成的技术规范。因为servlet不擅长展示页面(代码量太繁琐,不方便后期维护), 所以将页面展示的部分交给JSP去完成。
2.JSP生命周期
理解JSP底层功能的关键就是去理解它们所遵守的生命周期。 JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。 以下是JSP生命周期中所走过的几个阶段:
解析阶段 :Servlet容器解析JSP文件代码,如果有语法错误,就会向客户端返回错误信息翻译阶段 :Servlet容器把JSP文件翻译成Servlet源文件编译阶段 :Servelet容器编译Servlet源文件,生成servelet类初始化阶段 :加载与JSP对应的Servlet类,创建其实例,并调用它的初始化方法运行时阶段 :调用与JSP对应的Servlet实例的服务方法销毁阶段 :调用与JSP对应的Servlet实例的销毁方法,然后销毁Servlet实例
3.JSP语法
<% 代码片段 %>
或者,也可以编写与其等价的XML语句
<jsp:scriptlet >
代码片段
</jsp:scriptlet >
JSP声明 一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,必须先声明这些变量和方法然后才能使用它们。
<%! int i = 0 ; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0 ); %>
<jsp:declaration >
boolean flag = true;
</jsp:declaration >
<%= 表达式 %>
<%= new java.util.Date ().toLocalString() %>
语法
描述
<%- - 注释 - -%>
JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!- - 注释 - ->
HTML注释,通过浏览器查看网页源代码时可以看见注释内容
<\%
代表静态 <%常量
%\>
代表静态 %> 常量
\’
在属性中使用的单引号
\”
在属性中使用的双引号
JSP指令 语法格式: <%@ directive attribute = “value” %>
指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开。 JSP中的三种指令标签:
指令
描述
<%@ page … %>
定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>
包含其他文件
<%@ taglib … % >
引入标签库的定义
属性 描述 buffer 指定out对象使用缓冲区的大小 autoFlush 控制out对象的 缓存区 contentType 指定当前JSP页面的MIME类型和字符编码 errorPage 指定当JSP页面发生异常时需要转向的错误处理页面 isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面 extends 指定servlet从哪一个类继承 import 导入要使用的Java类 info 定义JSP页面的描述信息 isThreadSafe 指定对JSP页面的访问是否为线程安全 language 定义JSP页面所用的脚本语言,默认是Java session 指定JSP页面是否使用session isELIgnored 指定是否执行EL表达式 isScriptingEnabled 确定脚本元素能否被使用
Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。 Include指令中的文件名实际上是一个相对的URL。如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。 Taglib指令 JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
<%@ taglib uri="uri" prefix="prefixOfTag" %>uri
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
4.JSP内置隐含对象
对象 描述 request HttpServletRequest 类的实例 response HttpServletResponse 类的实例 out PrintWriter 类的实例,用于把结果输出至网页上 session HttpSession 类的实例 application ServletContext 类的实例,与应用上下文有关 config ServletConfig 类的实例 pageContext PageContext 类的实例,提供对JSP页面所有对象以及命名空间的访问 page 类似于Java类中的this关键字 Exception Exception 类的对象,代表发生错误的JSP页面中对应的异常对象
request对象 request 对象是 javax.servlet.HttpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求 。response对象 response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效 。session对象 session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。application对象 application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效 。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。out 对象 out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。pageContext 对象 pageContext 对象的作用是取得任何范围的参数 ,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象 。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象 。config 对象 config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象 。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。page 对象 page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。exception 对象 exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
JSP隐含对象中有哪四个对象可以绑定数据,取数据,以访问范围从小到大的排序是什么? pageContext :只有当前的jsp实例才能访问,生命周期从jsp对象创建到jsp对象销毁request :一次请求,一次响应期间都能访问session :一次会话期间都能访问,多次请求和多次响应application :当前应用所有的组件都能访问,只要服务器不关闭,该应用一直存在