EL表达式 ${}
表达式就是变量加符号得到最终结果
只能得到值,不能做逻辑表达
主要目的是为了得到一个值,至于从哪里得到,不是重点,可以放在jsp里任何一个标签里,但是不能放在JSP小脚本里,在EL表达式中 {} 里一定得出一个值 。
EL表达式获取内容的过程
如:${3>4} 获得的值结果为false
${"aa"} 获得字符串aa
${list[1].username}
EL表达式,是可以获得很多位置上的内容的,但是我们要注意一些点:EL表达式获取数据的顺序是从小到大的顺序来获取的。
page—> request—> session —> application
page: 当前用户,当前页面(不常用)
request:当前用户,本次请求
session:当前用户,没有退出之前(本次浏览器没有关闭前或session没有失效前)
application:所有用户,任何时候(服务器没有退出之前),JSP的一个内置对象,一般只有全局性的配置,全局性的统计才有可能放aplication中做。
加上**Scope描述之后,它就去这个域去拿,不加 就是按顺序拿,
scope—存储域
如${sessionScope.list}
JSTL
JSTL 是一个标签库。
JSTL 依托、结合EL表达式来做的,因为EL表达式是可以放置在html标签内部;
EL表达式和JSTL都是对小脚本的封装,EL表达式封装是取值过程,而JSTL 标签库封装的是流程控制过程。
需要导入的包:jstl-1.2.jar (版本任意)
设置lib库:以常用的c包为例(c是核心)
f包(fmt)---->标准格式化包
fn包(functions)----->函数支持包
sql包---->数据库链接支持包
xml包---->解析xml
prefi——>前置名,一般不用改
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
简单的使用
set加一个值给进来 remove删掉
<c:set value="ddd" var="name" scope="page"></c:set>
<c:remove var="name"></c:remove>
<c:out></C:out> 相当于 ${out }
//c标签的分支
<c:if test="${3>4}"> <div>fdsa</div> </c:if>//choose选择, when判断,第一个成立后面when不选择,所有的when不成立执行otherwise。 <c:choose> <c:when test="${5>4}"> <div>hhhhh</div> </c:when> <c:when test="${6>4}"> <div>zzzzzzz</div> </c:when> <c:otherwise> <div>yyyyy</div> </c:otherwise> </c:choose> //输出结果为hhhhh
//c标签的循环
其中的属性:
items :要被循环的信息 默认值无
begin:开始的元素(0=第一个元素,1=第二个元素) 默认值 0 end :最后一个元素(0=第一个元素,1=第二个元素) 默认值 Last element
step :每一次迭代的步长 默认值 1
var :代表当前条目的变量名称 默认值 无
varStatus :代表循环状态的变量名称 默认值 无
<c:forEach items="${list}" var="item" varStatus="status">
<div>当前是第 ${status.count} 个用户,用户名: ${item.username}</div>
</c:forEach>
9大内置对象:(常用的是前6个)
OGNL表达式
out:输出对象,负责向页面输出一行内容
request:请求对象,就是请求到本页面的请求体
response:向前端返回数据的工具
session:就是HTTPSession,当前会话对象
application:特指当前应用
page:当前页面(object)
pageContext:高级容器,是所有JSP的容器,也叫所有JSP的最高管理者 、 内置对象生成器,基本上所有内置对象都是从它里面拿出来的除了request,response那些
config: 配置信息对象(当前页面)
exception:当且仅当这个JSP发生错误异常的时候,这个对象才会出现
OGNL表达式
如:#{valu}
前端<———>后端方式
前端往后端发送的方式两种:
1.同步 ----就是form表单那种同步提交,同步提交得到的结果是页面的切换,所以是同步提交,后端就给前端回一个新的页面,用sendRedirect或getRequestDispatcher来前端页面进行一个整体跳转
2.异步------如果是异步,直接让前端获得一个字符串,用resp.getWriter()这个过程就行
后端往前端发送方式三种:
第一种:直接返回一个数据字符串
第二种:重定向
第三种:转发