2.4.JSP
JSP (Java Server Pages) : 一种在服务器端生成动态页面的技术,本质上就是Servlet。将HTML代码嵌入到Java代码中, 通过Java逻辑控制HTML代码的结构从而生成页面。在MVC中通常担任视图层(view),负责信息的展示与收集。
2.4.1.生命周期
转换
Jsp源文件转换成servlet源文件
编译
Java文件编译成类(class)文件
装载
将类文件加载到内存中
创建
创建一个servlet类的实例对象
初始化
调用_ jspInit()方法,最终调用servlet的init()
服务
调用_ jspService()方法,最终调用servlet的service()
销毁
调用_ jspDestroy()方法,最终调用servlet的destroy()
2.4.2.九种内置对象
JSP(Java Server Pages)九种内置对象包括:
名称 | 所属类 | 描述 | 作用域 |
---|---|---|---|
page | java.lang.Object类型 | 指向页面自身的方式 | page(页面执行期) |
request | javax.servlet.ServletRequest的子类型 | 此对象封装了由WEB浏览器或其它客户端生成地HTTP请求的细节(参数,属性,头标和数据)。 | request(用户请求期) |
response | javax.servlet.ServletResponse的子类型 | 此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。 | page(页面执行期) |
session | javax.servlet.http.HttpSession类型 | 主要用于跟踪对话 | session(会话期) |
application | javax.servlet.ServletContext类型 | servlet的环境通过调用getServletConfig().getContext()方法获得。它提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式 | application(整个程序运行期) |
pageContext | javax.servlet.jsp.PageContext(抽象类)类型 | 此对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法 | page(页面执行期) |
config | javax.servlet.ServletConfig | 提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数 | page(页面执行期) |
out | javax.servlet.jsp.JspWriter类型 | 代表输出流的对象。 | page(页面执行期) |
exception | javax.lang.Throwable | 只有在page指令中具有属性isErrorPage="true"时才有效 | page(页面执行期) |
2.4.3.三种伪指令
用来传送JSP容器中的一种信息,通常写在<%@...%>
之间
1.page指令
定义当前页面的属性
<%@page language="java" import="java.util.*" pageEncoding="utf-8" %>
2.include指令
向当前文件插入一个静态文件的内容
<%@include file="../../../common/include.jsp" %>
这里的 …/ 使用的是相对路径
3.taglib指令
引入定制的标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2.4.4.动作
动作(行为):创建,修改,或使用对象。遵守严格的XML语法。
<jsp:include>
引入一个文件
<jsp:forward>
转到新的页面
<jsp:useBean>
实例化一个JavaBean
<jsp:setProperty>
设置JavaBean的属性
<jsp:getProperty>
得到JavaBean的属性
<jsp:plugin>
插件
2.4.4.1.<jsp:include>
动作与 include
指令比较
-
语法格式 :
指令
<%@ include file=”relativeURI”%>
动作
<jsp:include page=”relativeURI” flush=”true” />
-
执行时间
指令是在翻译阶段执行
动作是在请求处理阶段执行 -
引入内容
指令 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
动作 引入执行页面或servlet所生成的应答文本.
2.4.5.整体结构
脚本 <%... %>
: 用于编写java的逻辑代码, 如:for 循环,if 判断 ,连接调用javaBean,传接值
表达式<%=… %>
: 将= 等号后面的内容显示在页面上, 如:展示的内容
2.4.6.与Servlet比较
-
JSP就是Servlet :
-Jsp是Servlet的简化,更方便的生成及维护HTML页面
-Jsp页面要先转化成Servlet类,再编译执行 -
都可以服务器端动态的生成页面
-Servlet是一行一行的生成
-JSP参考ASP,将JSP元素嵌到HTML代码中 -
侧重各有不同
-Servlet侧重于重程序逻辑的模块开发
-JSP侧重于重页面输出的模块开发