SP编写无脚本的JSP页面:
EL:表达式语言:Expression Language
EL语言只要目标是从JSP页面中消除Java代码。让前端做前端的事,后台专注后台
EL只用于展示,比如if那些不能用,定义变量无法
要定义变量:用个JavaBean的属性,JSP提供的隐式对象,自动以标记库和标准标记库
代码示例:
JSP:<%= user.getUserName() %>不能对象.对象.属性
EL:$<user.userName>可以对象.对象.属性,展示比较简单
$<requestScope.user.userName>
放在request对象里边的,requestScope可以省略
隐式对象:
requestScope对应req
applicationScope对应ServletContext
EL表达式在操作对象是,方式:切记:对象.对象的属性名。不用get方法之类的
得到Request的值
$<user.userName>
获取动态的环境值
applicationScope可以访问JSP的隐式对象application,Request,Response,Session,Out等
获取servletContext初始化环境值
${initParam.money}
获取session的值
req.getSession().setAttribute("user2", "u14");
${sessionScope.user.userName}
获取集合的值:Map,list,set集合
List<UserBean> users = new ArrayList<UserBean>();
users.add(user);
req.setAttribute("userList",users);
Map<String, UserBean> maps = new HashMap<String ,UserBean>();
maps.put("a1",user);
req.setAttribute("userMap",maps);
${requestScope.user[0].userName}
${requestScope.userMap[‘a1‘].userName}
JSP自定义标记库和标准标记库JSTL
在需要的界面导进去,一般这两个包:jstl.jar standard.jar
<c:catch var="exception"/>
<% int x = 3/0; %>
<c:set var="unm" value="S{4*2}"/>
<c:out value="${num}">
</c:catch>
<c:if test="${exception != null}">
<p>这是一个异常:${excption}</p>
</c:if>
set
<c:set var="unm" value="S{4*2}"/>
<c:set var="unm" value="8"/>
或者
<c:set var="num">
${4*2}
</c:set>
我们可以操作后台返回的对象,对对象进行设值
<c:set gerget="${user }" property="age" value="38"/>
<c:out value="$user.age"/>
通过remove标记,删除某一个指定作用域内的属性
<c:remove var="userName" scope="request">
流程控制:
choose when相当于swith case
<c:choose>
<c:when test="${num < 5}">
不约
<c:when>
<c:when test="${num > 10}">
约
<c:when>
<c:otherwise>
gun
</c:otherwise>
</c:choose>
forEach:循环,就是Java的foreach
<c:forEach items="${user }" var="u1">
${u1.userName},
${u1.password},.
${u1.age},
</c:forEach>
可以放在表格里边
<table border=1>
<tr>
<th>姓名</th>
<th>年龄</th>
<th></th>
<th></th>
<th></th>
</tr>
<c:forEach items="${user }" var="u1">
<tr>
<td>${u1.userName}</td>
<td>${u1.password}</td>
<td>${u1.age}</td>
<td></td>
<td></td>
</tr>
</c:forEach>
<table>