6.1,JSP概述
6.1.1什么是JSP
JSP全名是Java Servlet Pages,它是建立在Servlet规范之上的动态网页开发技术。
6.1.2JSP运行原理
(1)客户端发送请求,请求访问JSP文件
(2)web容器将jsp转化为servlet代码(.java)
(3)web容器将转化为servlet代码编译(.class)
(4)web容器加载编译后的代码并执行
(5)将执行结果响应给客户端
6.2,JSP基本语法
6.2.1JSP脚本元素
a,JSP Scriptlets:是一段代码段<% java 代码 (变量,方法,表达式等) %>
b,JSP声明语句:<%!
定义的变量或方法
%>
a和b的使用演示——在chapter06项目下的WebContent目录下创建名称为example.jsp,在该文件下编写声明语句并运行效果如下
c,JSP表达式:<%= expression %>
6.2.2JSP注释:—— <%-- 注释信息--%>
在项目chapter06的WebContent目录下创建一个名称为example02的jsp页面,代码和效果如下
6.3,JSP指令
6.3.1-----page指令
<%@ page 属性名1="属性值1" 属性名2="属性值2" ...%>
6.3.2-----include指令
<%@ include file="被包含文件地址"%>
在项目chapter06的WebContent目录下创建俩个JSP页面文件date.jsp和include.jsp,在include.jsp文件中使用include指令将date.jsp文件包含在其中,代码和结构如下
6.4,JSP隐式对象
6,4,1 隐式对象的概述
JSP隐式对象是JSP容器为每个页面提供的java对象,开发者可以直接使用它们而不用显示声明。JSP隐式对象也被称为预定义对象。常见的有下面9个隐式对象
6.4.2 out对象
out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。可以在page指令中使用buffered='false'属性来轻松关闭缓存。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。
在项目chapter06的WebContent目录下创建一个名称为out的jsp页面,代码和效果如下
6.4.3 pageContent对象
pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。
这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。
这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。
6.4.4 exception对象
exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应
在项目chapter06的WebContent目录下创建一个名称为exception.jsp的页面,编写发生异常的代码,再建一个名称为error.jsp的页面,获取exception.jsp页面中传递过来的exception对象,代码和结果如下:
6.5 JSP动作元素
6.5.1------<jsp:include>动作元素
<jsp:include page="relativeURL" flush="true|false" />
在项目chapter06的WebContent目录下编写俩个JSP文件,分别是included.jsp和dynamiclnclude.jsp,内容和效果如下
6.5.2 ------<jsp:forward>动作元素
<jsp:forward page="relativeURL" />
在项目chapter06的WebContent目录下编写俩个JSP文件,jspforward.jsp和welcome.jsp,代码和效果如下
6.6 传智书城JSP页面