一、jsp内置对象之域对象:
-- pageContext:属性的作用范围仅限当前的jsp页面(范围最小)
-- request:属性的作用范围仅限同一个请求(转发有效)
-- session:属性的作用范围仅限于一次会话,浏览器打开直到关闭称为一次会话(在此期间会话不失效)
-- application:属性的作用范围仅限于当前web应用(范围最大)
Response不是域对象,因为不能存对象
域对象的大小比较
Application>session>request>pageContext
二、EL(Expression Language)表达式:
-- 功能:替代jsp页面中的复杂代码
<%= %>
-- 语法:${EL expression}
${bean.name}
<%
User u=new User("root","root123");
pageContext.setAttribute("user", u);
%>
${user}
<br>
名字:${user.getName()} ${user.name}<br>
密码:${user.getPwd()} ${user.pwd}
${user.name.equals("root")?"yes":"no" }
-- EL中的隐含对象(pageScope、requestScope、sessionScope、applicationScope)
如果命名都一样,那么我们就按照范围从小往大进行取值,不然需要域对象+Scope.命名
<%
pageContext.setAttribute("msg", "world 你好");
%>
<!-- EL表达式 -->
application:${applicationScope.msg};
<br>
session:${sessionScope.msg};
<br>
request:${requestScope.msg};
<br>
page:${msg};
-- EL运算符(算术 关系 Empty运算符【判断集合中值是否为空 返回true或者false】)
<%
List<User> list=new ArrayList<>();
pageContext.setAttribute("us", list);
%>
${us.size()==0} - ${empty us} - ${not empty us}
也可以使用正则表达式哦
request:${requestScope.msg==null?"x":"y"}
注意:EL表达式必须是从域对象中取值(没有从域对象中取值不会显示)
正确示例:
<%
int sum=100;
/*先把他放到域对象中*/
pageContext.setAttribute("sum", sum);
%>
<%-- EL表达式必须是从域对象中取值--%>
总价:${sum };
三、JSTL
--通用标签:set out remove
1.首先需要导入两个jar包
2.在页面中导入jstl标签吧库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.运用
<%--pageContext.setAttribute("a",1);--%>
<c:set scope="page" value="1" var="a"></c:set>
<c:out value="${a}"></c:out>
<%--pageContext.removeAttribute("a");--%>
<c:remove var="a" scope="page"></c:remove>
--条件标签:if
<%
//yy这个参数是空值当前用户是否已经登录
String yy = request.getParameter("yy");
pageContext.setAttribute("yy",yy);
%>
<%--如果登录了显示你好--%>
<%--如果没有登录,显示一个登录--%>
<c:if test="${yy!=null}">
<h1>欢迎使用该系统</h1>
<h1>范德萨发撒法打赏</h1>
</c:if>
<c:if test="${yy==null}">
<h1>你现在还没有登录,请点击下面的按钮</h1>
<button>请进行登录</button>
</c:if>
--迭代标签:forEach
例:商品的遍历
1.创建一个实体类
package com.zking.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
public class Goods {
private Integer goodsId;
private String goodsName;
private String goodsType;
private Double goodsPrice;
public Integer getGoodsId() {
return goodsId;
}
public void setGoodsId(Integer goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getGoodsType() {
return goodsType;
}
public void setGoodsType(String goodsType) {
this.goodsType = goodsType;
}
public Double getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(Double goodsPrice) {
this.goodsPrice = goodsPrice;
}
public Goods() {
super();
// TODO Auto-generated constructor stub
}
public Goods(Integer goodsId, String goodsName, String goodsType, Double goodsPrice) {
super();
this.goodsId = goodsId;
this.goodsName = goodsName;
this.goodsType = goodsType;
this.goodsPrice = goodsPrice;
}
@Override
public String toString() {
return "Goods [goodsId=" + goodsId + ", goodsName=" + goodsName + ", goodsType=" + goodsType + ", goodsPrice="
+ goodsPrice + "]";
}
}
2.进行编写和实现
<%@ page import="java.util.List" %>
<%@ page import="com.zking.pojo.Goods" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL基本标签</title>
</head>
<body>
<%
List<Goods> list=new ArrayList<>();
for (int i = 0; i < 5; i++) {
Goods g=new Goods();
g.setGoodsId(i);
g.setGoodsName("小谬手机"+i);
g.setGoodsType("搞笑分区"+i);
g.setGoodsPrice(i*100.0);
list.add(g);
}
pageContext.setAttribute("list",list);
%>
<%--商品的遍历--%>
<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>
</table>
</body>
</html>
好啦,今天就到这里咯,下次见咯,我的宝