目录
一、jsp内置对象之域对象
在JSP中,存在四大域对象,它们分别是👇
- pageContext 页面容器
- request 请求
- session 服务器存储
- application 公共存储
它们的范围大小图解👇
从图中可以看到,它们的存储范围大小:application>session>request>page(大到小)
详细介绍👇
- pageContext:属性的作用范围仅限当前的jsp页面(范围最小),Context的意思是容器、上下文
- request:属性的作用范围仅限同一个请求(只对转发有效)
- session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)当浏览器关闭后被再次打开时,session中的卡号JSESSION会改变,已经不是原来的会话了
- application:属性的作用范围仅限于当前web应用(范围最大)
二、EL表达式
EL全称:Expression Language(表达式语言)
功能:替代jsp页面中的复杂代码,相当于<%= %>
语法:
${EL expression}
${ bean.name } 等于 ${ bean['name'] },${bean.name}实质是调用bean的getName()方法使用好处:相比较在JSP中嵌入Java代码,EL应用更简单
注意:EL表达式必须是从域对象中取值,不能完全替代<%= %>的取值方式
使用EL表达式👇
- 先往域中存值
application.setAttribute("a", "aaa");
session.setAttribute("b", "bbb");
request.setAttribute("req", "ccc");
pageContext.setAttribute("pag", "ddd");
- 再使用EL表达式取出
application:${a}
<br>
session: ${b }
<br>
request:${req}
<br>
pageContext: ${pag }
- 运行一下:
当application,session,request,page四个对象存入时的属性名相同时👇
application.setAttribute("h", "aaa");
session.setAttribute("h", "bbb");
request.setAttribute("h", "ccc");
pageContext.setAttribute("h", "ddd");
- 使用存入的属性名取值
application:${h}
<br>
session: ${h }
<br>
request:${h}
<br>
pageContext: ${h }
取到的都是最小的域pageContext里面的值
- 使用它们在EL中的名称来取值
application:${applicationScope.h}
<br>
session: ${sessionScope.h }
<br>
request:${requestScope.h}
<br>
pageContext: ${h }
注:由于是在当前页面取值,pageContext是页面容器,可以直接使用存入时的属性名来取值
使用它们在EL中的名称来取值就会取到自己的值
详细介绍👇
EL运算符
在使用EL表达式取值时,可以在${ }中对取到的值进行一些运算符操作
运算符可以是布尔类型的运算符或者三元运算符等等👇
补充
域对象中不仅可以存属性值,还可以存对象、集合等等👇
向域对象pageContext存入一个用户对象
User u = new User("aa", "567aa");
pageContext.setAttribute("user", u);
使用EL表达式对这个对象进行取值:第一种取值方式更方便
用户对象:${user }
用户名:${user.name }
用户密码:${user.pwd}
用户对象:${user }
用户名:${user.getName }
用户密码:${user.getPwd }
存入集合:
List<User> list = new ArrayList<>();
pageContext.setAttribute("us", list);
判断集合是否为空:
判断存入的list集合是否为空:${us.size==0 }或者${empty us }-${not empty us }
三、JSTL标签
JSTL基本标签
- 通用标签:set、out、remove
- 条件标签:if
- 迭代标签:forEach
使用操作👇
- 使用之前要将jstl标签库导入到当前项目中:
jstl标签库包:
导入到项目的lib目录下方:
记得右键建立路径:
右键buil path成功后就会出现:
- 导入成功后在页面上引用:
<%--tag标签,lib库,导入一个标签库 prefix是标签库的名字--%>
<%@taglib prefix="a" uri="http://java.sun.com/jsp/jstl/core"%>
经过上述操作就可以使用JSTL标签库了👇
JSTL标签库的使用
- 通用标签:set设置值、out输出值、remove移除值
- 使用条件标签 if 判断用户是否登录
<c:if test="${yy!=null}">
<h1>欢迎使用该系统</h1>
</c:if>
<c:if test="${yy==null}">
<h1>你现在还没有登录,请点击下面的按钮</h1>
<button>请进行登录</button>
</c:if>
- 使用迭代标签 forEach 完成商品的遍历展示
注:items="${list}" 表示存入域对象中的集合list,这里使用了EL表达式${ }来拿到它
goods表示遍历的集合对象
<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>
感 谢 阅 读