一、jsp内置对象之域对象
1)在JSP中,包含四大域对象,分别为:
1、pageContext 页面容器
2、request 请求
3、session 服务器存储
4、application 公共存储
它们的存储大小按大到小的顺序为:
application>session>request>pageContext
2)下面是四种域对象的详细介绍:
1、pageContext :属性的作用范围仅限当前的jsp页面(范围最小)
2、request :属性的作用范围仅限于同一个请求(转发有效)
3、session :属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)
4、application :属性的作用范围仅限于当前web应用(范围最大)
二、EL表达式
1)介绍
EL:
表达式语言(全称:Expression Language)
功能:
替代jsp页面中的复杂代码(就相当于这个 <%= %>)
语法
语法:$ {EL expression}
$ {bean.name}
使用EL表达式的优势:
相对于在jsp中嵌入java代码,EL的应用更为简单
注意:EL表达式必须要从域对象中取值,但不能完全替代<%= %>的取值方式
2)使用
先向域对象中存值:
request.setAttribute("msg1", "hello 你好");
application.setAttribute("msg2", "hello word");
session.setAttribute("msg3", "你好");
再使用EL表达式取出:
application:${msg2}
<br>
session:${msg3}
<br>
request.${msg1}
运行结果:
当application,session,request,pageContext 四个对象存入时的属性名相同时:
application.setAttribute("msg", "hello word");
session.setAttribute("msg", "你好");
request.setAttribute("msg", "hello 你好");
pageContext.setAttribute("msg", "hello");
使用存入的属性名取值:
application:${msg}
<br>
session:${msg}
<br>
request.${msg}
<br>
page:${msg}
结果取到的值都是最小的域pageContext里面的值:
EL中的隐含对象:(使用它们在EL中的名称来取值 )
pageScope
requestScope
essionScope
applicationScope
application:${applicationScope.msg}
<br>
session:${sessionScope.msg}
<br>
request.${requestScope.msg==null?"x":"y"}
<br>
page:${msg}
效果如下:
存入集合:
List<User> list=new ArrayList<>();
pageContext.setAttribute("us", list);
判断集合是否为空:
${us.size()==0}-${empty us}-${not empty us}
EL隐式对象小结:
EL隐式对象介绍:
EL运算符
在使用EL表达式取值时,可以在${}中对取到的值进行一些运算符操作
运算符可以是布尔类型的运算符或者三元运算符等
三. JSTL标签
JSTL基本标签
用标签:set,out,remove
条件标签:if
迭代标签:forEach
使用操作
注意:在使用之前,一定要将 jstl标签库 导入到当前项目中
导入jstl 标签库的jar包,将它放到lib目录下方,并右键点击build Path,生成牛奶瓶,然后就算添加成功:
添加成功后就是这个样子的:
添加成功后,还需要在页面上编写导入jstl标签库的语句:
<%--tag:标签 lib库,导入一个标签库 prefix:是标签库的名字 --%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSTL便签库的使用
通用标签:set,out,remove
<%--pageContext.setAttribute("a", 1); --%>
<c:set scope="page" value="1" var="a"></c:set>
<c:out value="${a }"></c:out>
<%--pageContext.setAttribute("a") --%>
<c:remove var="a" scope="page"></c:remove>
条件标签:if
<%--如果登录了 显示你好 --%>
<%--如果没有登录了 显示一个登陆 --%>
<c:if test="${yy!=null }">
<h1>欢迎使用该系统</h1>
<h1>哈哈哈哈嗝</h1>
</c:if>
<c:if test="${yy==null }">
<h1>你现在还没有登陆,请点击下方的登陆</h1>
<button>请进行登录</button>
</c:if>
迭代标签:forEach
<%--商品的遍历 --%>
<table border>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品类型</th>
<th>商品价格</th>
</tr>
<%
for(Goods goods:list){
goods.getGoodsName();
}
%>
<c:forEach items="${list}" var="goods">
<tr>
<th>${goods.goodsId}</th>
<th>${goods.goodsName }</th>
<th>${goods.goodsType }</th>
<th>${goods.goodsPrice}</th>
</tr>
</c:forEach>