Java Server Page
即JSP是一种Java服务页,目的在于简化Servlet的设计,将逻辑与界面设计分开
jsp执行时首先通过request调用jsp页面,将.jsp文件编译为.java文件,再编译为.class文件来执行,最后由response相应到客户端
JSP源代码中包含了JSP元素与Template data两类
- jsp元素是<% %>中的代码,其必须符合JSP语法
- Template data 是<% %>以外的代码,是不会被jsp引擎处理的,会直接传送到客户端浏览器
JSP语法有三种不同的类型
- 编译器指令
编译器指令有三种(1)<%@page %>页指令用来定义jsp 文件中的全局属性例如导包<%@ page import="java.util.*, java.lang.*" %> (2)<%@taglib %>taglib指令用于引入定制标签库<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>(3)<%@include %>包含指令,例如向当前页中插入一个静态文件的内容<%@ include file="相对位置" %>
- 脚本语法
<% java语句%>
- 动作与法
<jsp:forward>,<jsp:include>,<jsp:plugin>, <jsp:getProperty>,<jsp:setProperty>和<jsp:useBean>等等
JSP的四种作用域
page是默认值, 仅在当前jsp页面中有效
request在一次请求中有效 ,指从http请求到服务器处理结束,返回响应的整个过程,在这个过程中使用forward方式跳转多个jsp,在这些页面里你可以使用request
session在当前会话中有效,同一浏览器访问多次,在这多次访问之间传递信息
- page
- request
- session
- application
application在所有应用中有效,从服务器启动到服务器关闭一直存在
JSP的9种内置对象
- request来自客户端的请求
- response客户端的相应
- pageContext页面上下文对象
- session会话对象
- application应用程序对象
- out输出对象
- page页面对象
- exception例外对象
- config配置对象
EL表达式(Expression Language)
是JSP页面一种更简洁的语法${ }
例如:
- JSP 获取对象属性 User auser=(User)session.getAttribute(“user”); auser.getName();
- EL获取对象属性 ${sessionScope.user.name}
EL变量的查找顺序
Page | pageScope |
Request | requestScope |
Session | sessionScope |
application | applicationScope |
EL保留字
And、eq、gt、true、Or、ne、le、false、No、lt、ge、null、instanceof、empty、div、mod
EL隐含对象
- PageContext
- pageScope
- requestScope
- sessionScope
- applicationScope Param:request.getParameter()
- Paravalues:request.getParameterValues()
- Header headerValues
- Cookie:request.getcookies()
- initParam
JSTL(Java Server Page standard tag library)
JSTL是一个JSP标签集合,它封装了JSP应用的通用核心功能
JSTL常用标签
<c:out> | 用于在JSP中显示数据,就像<%= ... > |
<c:set> | 用于保存数据 |
<c:remove> | 用于删除数据 |
<c:catch> | 用来处理产生错误的异常状况,并且将错误信息储存起来 |
<c:if> | 与我们在一般程序中用的if一样 |
<c:choose> | 本身只当做<c:when>和<c:otherwise>的父标签 |
<c:when> | <c:choose>的子标签,用来判断条件是否成立 |
<c:otherwise> | <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
<c:import> | 检索一个绝对或相对 URL,然后将其内容暴露给页面 |
<c:forEach> | 基础迭代标签,接受多种集合类型 |
<c:forTokens> | 根据指定的分隔符来分隔内容并迭代输出 |
<c:param> | 用来给包含或重定向的页面传递参数 |
<c:redirect> | 重定向至一个新的URL. |
<c:url> | 使用可选的查询参数来创造一个URL |