Fork me on GitHub

JSTL&EL表达式

Session中的使用

//java代码将对象存入session
httpSession.setAttribute("CURR_USER",userinfoList.get(0));
//jsp中使用session中的对象
${sessionScope.CURR_USER.username}

JS中使用EL表达式

var str = '${str}' ;
var str = '${obj.属性名}'; 
只可以再jsp页面的<script></script>中使用,外部引入的js文件中不能使用。
但是事实情况呢有时候需要在某些插件中js使用,如果是开发时候可以用传参数之类,用隐藏域之类的.

当开发完毕的时候(比如项目分离),之前js文件中写死的配置就会出问题,为了简单可以使用这个方法支持EL表达式
将.js文件改为.jsp,这样可以让容器解析里面的el表达式
然后引用再用 <script src="/${appName}/commons/jq22.jsp"></script> 告诉引入的文件是个script.

但是把.js文件改成.jsp的话,长时间以后下一个维护人员会很困惑这是什么东东,所以可以采用这个方法
在一个公用的外部.js文件中配置一个全局变量.在插件中的.js文件中使用这个全局变量(当然.jsp文件要同时引入这两个文件)

EL与JSTL标签联用

引用

jsp文件引入

JSTL 1.0 声明:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
JSTL 1.1 之后声明:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c标签

使用c:标签

<!-- 设置值 -->
<c:set var="salary" scope="session" value="${2000*2}"/>

<!-- if语句 -->
<c:if test="${salary > 2000}">
   <p>工资: <c:out value="${salary}"/><p>
</c:if>

<!-- choose语句 -->
<c:choose>
    <c:when test="${salary <= 0}">
       太惨了。
    </c:when>
    <c:when test="${salary > 1000}">
       不错的薪水,还能生活。
    </c:when>
    <c:otherwise>
        啥都没有。
    </c:otherwise>
</c:choose>

if标签判断为空

<c:if test="${!empty user.name}">user的name属性不为空时显示</c:if>

<c:forEach>标签

集合中的对象

<c:forEach  items="${sessionScope.userList}"  var="userItem"  varStatus="userStatus"> 
    ${userItem.键名} 
</c:forEach>

c:forTokens标签

<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们

<c:forTokens items="google,baidu,biying" delims="," var="engine">
   <c:out value="${engine}"/><p>
</c:forTokens>

JSTL提供format标签

el表达式直接显示日期格式化问题.

<!--1.首先引入标签库-->
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>  
<!--2.在需要显示日期的地方调用fmt标签即可-->
<fmt:formatDate value="${order.submit_time}" pattern="yyyy-MM-dd HH:mm:ss"/>

 

posted @ 2017-10-25 11:56  秋夜雨巷  阅读(3709)  评论(0编辑  收藏  举报