jsp:JavaServletPage,java 服务器页面,本质是一个java文件,
作用:将内容的生成和信息的展示相分离。
运行阶段:页面翻译(java文件)---->页面编译(class文件)—>类加载—>实例化—>初始化---->提供页面服务—>销毁
运行在服务器端,本质上就是一个serlvet,使用jsp引擎自动翻译为servlet代码,产生的java文件和class保留在tomcat的word目录下。
jsp网页组成:页面模板数据和元素。
jsp脚本(语法)
<%…%> 书写java代码片段,作为jsp的局部变量进行声明,在提供服务的方法中,
<%=…%> 输出表达式 相当于out.print();
<%!..%>声明成员,作为jsp的成员变量来进行声明
JSP指令
作用:声明jsp页面的一些属性和动作
格式:
<%@指令名称 属性=“值” 属性=“值”%>
jsp指令的分类:
page:主要声明jsp页面的一些属性
include:静态包含.先包含再翻译。
taglib:导入标签库
注意:一个页面中可以出现多个指令,指令可以放在任意位置,一般都放在jsp页面最上面。
page指令
errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面
language:当前jsp页面里面可以嵌套的语言
contentType:设置响应流的编码,及通知浏览器用什么编码打开,设置文件的mimetype
import:导入所需要的包
jsp的隐式对象:(9大隐式对象)
在jsp页面上可以直接使用的对象
out、request、response、session
exception
page、config、application、pageContext
内置(隐式)对象 | 类型 |
---|---|
out | JspWriter |
request | HttpServletRequest |
response | HttpServletResponse |
session | HttpSession |
exception | Throwable |
page | Servlet(this) |
config | ServletConfig 过滤器 |
application | ServletContext 应用上下文,全局管理者 |
pageContext | PageContext 当前页面的全局管理者 |
el
el表达式中不可以设置这变量
作用:
1.获取域中数据
2.执行运算
3.获取常见的web对象
4.调用java的方法
格式:
e
l
表
达
式
若
属
性
名
中
出
现
了
"
.
"
∣
"
+
"
∣
"
−
"
等
特
殊
符
号
,
需
要
使
用
s
c
o
p
e
获
取
例
如
:
{el表达式} 若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取 例如:
el表达式若属性名中出现了"."∣"+"∣"−"等特殊符号,需要使用scope获取例如:{requestScope[“arr.age”] }
获取域中的数据
获取简单数据
${pageScope|requestScope|sessionScope|applicationScope.属性名}
以后经常使用:
${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找
若查找不到,返回""
el内置对象
类别 | 内置变量名 | 描述 |
jsp | pageContext | 用来访问JSP的隐式对象 |
作用域 | pageScope | 与page作用域属性的名称和值相关联的 Map 类 |
requestScope | 与request作用域属性的名称和值相关联的 Map 类 | |
sessionScope | 与session作用域属性的名称和值相关联的 Map 类 | |
applicationScope | 与application作用域属性的名称和值相关联的 Map 类 | |
请求参数 | param | 包含请求参数字符串的Map 类 |
paramValues | 包含请求参数字符串数组( String[])的 Map 类 | |
请求头 | header | 包含请求头字符串的 Map 类 |
headerValues | 包含请求头字符串数组(String[])的 Map 类 | |
Cookie | cookie | 按名称存储请求附带的 cookie 的 Map 类 |
JSP:
pageContext★
作用域:
pageScope
requestScope
sessionScope
applicationScope
请求参数
param
paramValues
请求头
header
haederValues
Cookie
cookie
el中的运算符:
四则运算、关系(>…)、逻辑(&& ||)、三元运算符
注意:
+:只能进行加法运算,字符串形式数字可以进行加法运算.
empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空
${empty 域中的对象名称}
jstl(标准标记库)
用来代替java脚本
使用步骤:
1.导入jar包 (jstl.jar和standard.jar)
2.在页面上导入标签库
<%@taglib prefix="" uri=""%>
例如:<%@taglib prefix=“c” uri=“http:// java.sun. com/jsp/jstl/core” %>
c:set(设置值)
c:choose(选择): c:when(相当于case) c:otherwise(default)
c:if 判断
<c:if test="$ {el表达式}">满足的时候输出的内容</c:if>
c:forEach 循环
格式1:
<c:forEach items="$ {el获取域中的容器}" var=“n”>
$ {n }
</c:forEach>
例如:
//遍历list
<c:forEach items="$ {list }" var=“n”>
$ {n }
</c:forEach>
//遍历map
<c:forEach items="$ {map }" var=“en”>
$ {en.key }–$ {en.value }
</ c:forEach>
格式2:
<c:forEach begin=“从那里开始” end=“到那里结束” step=“步长” var=“给变量起个名字” varStatus=“循环状态变量”>
$ {i }–$ {vs.count }–$ {vs.current }
</c:forEach>
varStatus:用来记录循环的状态
常用的属性:
count:记录次数
current:当前遍历的内容
例如:
<c:forEach begin=“1” end=“20” step=“2” var=“i” varStatus=“vs”>
$ {i }–$ {vs.count }–${vs.current }
</c:forEach>
jsp和servlet的区别和联系
jsp的本质就是一个sevlet,第一次访问jsp时,会使用jsp引擎将jsp翻译成为一个sevlet,接下来就是编译成为class文件,类加载,实例化,初始化,提供页面服务,销毁。
区别:
1、servlet是使用HttpServletResponse对象动态的生成html内容,而jsp是将java代码镶嵌到html中,java代码被动态执行生成html内容。
2、servlet注重业务逻辑的组织,而jsp更注重数据的展示。