Dev_Nick

导航

jsp--EL表达式&&标签库

EL表达式是为了替代jsp表达式,标签是为了替代jsp脚本。有了这两个技术就能避免在jsp页面中尽量不写java代码,减轻了jsp的复杂度,增加了代码的整洁程度。

EL表达式

语法:${变量或表达式}

作用:向浏览器输出域对象中的变量值或者表达式计算的结果。

代码示例:

1)基本数据类型输出

 1 <body>
 2     <%-- 基本类型输出  --%>
 3     <%
 4         pageContext.setAttribute("name", 12, PageContext.PAGE_SCOPE);
 5         pageContext.setAttribute("name", true, PageContext.REQUEST_SCOPE);
 6         pageContext.setAttribute("name","session域", PageContext.SESSION_SCOPE); 
 7         pageContext.setAttribute("name", "context域", PageContext.APPLICATION_SCOPE); 
 8     %>
 9     ${name }<br/><%-- 默认在pageScope、requestScope和sessionScope中搜索 --%>
10     <%--在指定域中搜索 --%>
11     ${pageScope.name}<br/>
12     ${requestScope.name}<br/>
13     ${sessionScope.name}<br/>
14     ${applicationScope.name}<br/>
15 
16 </body>

注意:单独${name}会默认在pageScope、requestScope和sessionScope中搜索。

2)对象类型输出

1 <%--对象类型输出  --%>
2 <%
3     Student student = new Student("小名",12);
4     pageContext.setAttribute("student", student);
5 %>
6 ${student.name }

3)list对象输出

 1 <%--list类型输出  --%>
 2 <%
 3     List<Student> list = new ArrayList<Student>();
 4     list.add(new Student("小明",10));
 5     list.add(new Student("小红",20));
 6     list.add(new Student("小王",30));
 7     pageContext.setAttribute("list", list);
 8 %>
 9 list类型输出:
10 ${list[0].name }
11 ${list[1].name }
12 ${list[2].name }

4)map对象输出

 1 <%--Map类型输出  --%>
 2  <%
 3   Map<String,Student> map = new HashMap<String,Student>();
 4   map.put("100", new Student("校长",60));
 5   map.put("101", new Student("老师",30));
 6   map.put("102", new Student("学生",20));
 7   pageContext.setAttribute("map", map);
 8  %>
 9  Map类型输出:
10  ${map['100'].name }
11  ${map["101"].name }
12  ${map["102"].name }

注意:EL表达式输出的变量一定是在域对象中存在的。

5)EL输出表达式

 1 <body>
 2     <%--
 3         1)算术表达式
 4           +  -  *  /
 5      --%>
 6      ${10+5 }<br/>
 7      ${10*5 }
 8      <hr/>
 9      <%--
10         2)比较运算
11         >  <  >=  <=  ==   !=
12      --%>
13      ${10>5 }<br/>
14      ${10<5 }<br/>
15      ${10!=10 }
16      <hr/>
17      <%--
18         3)逻辑运算
19          &&  ||  !
20      --%>
21      ${true && false }<br/>
22      ${true || false }<br/>
23      ${!false }<br/>
24      <hr/>
25       <%--
26         4)判空
27         null 或 空字符串:  empty
28      --%>
29      <%
30          //String name = "eric";
31          //String name = null;
32          String name = "";
33          pageContext.setAttribute("name",name);
34       %>
35       判断null: ${name==null }<br/>
36       判断空字符: ${name=="" }<br/>
37      判空:  ${name==null || name=="" }
38      另一种判空写法: ${empty name }
39      
40          
41   </body>

标签库

作用:替换java脚本。

分类:

  1)内置标签(动作标签):不需要在jsp页面中导入标签。

  2)jstl标签:需要在jsp页面中导入标签。

  3)自定义标签:开发者自行定义,需要在jsp页面导入标签。

(1)内置标签(动作标签)

转发标签

<jsp:forward page="library2.jsp"></jsp:forward>

参数标签

<jsp:param value="dev" name="name"/>

包含标签

<jsp:include page="header.jsp"></jsp:include>

注意:此处的包含为动态包含,即包含和被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。

静态包含和动态包含的区别:

1)语法不同

  静态包含:<%@ include file="被包含的页面"%>

  动态包含:<jsp:include page="被包含的页面">

2)参数传递不同

  静态包含:不能向被包含的页面传递参数

  动态包含:可以向被包含的页面传递参数

3)原理不同

  静态包含:先合并在翻译。

  动态包含:先翻译再合并。

传递参数的案例:

主页面

<body>
    <jsp:include page="header.jsp">
        <jsp:param value="nick" name="name"/>
        <jsp:param value="123" name="pwd"/>
    </jsp:include>
    <hr>
    <font color="blue">正文</font>
    <jsp:forward page="library2.jsp">
        <jsp:param value="dev" name="name"/>
    </jsp:forward>
    
</body>

被包含页面

<font size='12' color='red'>头文件</font><br/>
名字:<%= request.getParameter("name") %>
密码:<%= request.getParameter("pwd") %>

被转发页面

<body>
    用户名:<%=request.getParameter("name") %>
</body>

(2)jstl标签

1)核心标签库的重点标签

<1>设置属性标签

<%--设置属性 --%>
<c:set var="name" value="nick" scope="request"></c:set>

常用标签属性:

  var:设置变量名。

  value:设置变量值。

  scope:设置变量的保存域。

注意:--c:set标签默认保存到page域中。

<2>获取属性标签

<%--获取属性 --%>
<c:out value="${requestScope.name }" ></c:out>
<% 
    String age = null;
    pageContext.setAttribute("age", age);
%>
<br>
<c:out value="${age }" default="<font>默认值</font>" escapeXml="true"></c:out>

常用标签属性:

  value:获取标签的值。

  default:当标签值value为null时,可使用默认值default。

  escapeXml:是否对value进行转义,false不转义,true转义。

<3>单条件判断标签

<%--if单条件标签 --%>
<c:if test="${empty age}">
    条件成立
</c:if>

常用标签属性:

   test:判断条件

<4>多条件选择标签

<%--多条件标签 --%>
<c:set var="score" value="68"></c:set>
<c:choose>
    <c:when test="${score>=90 }">
        优秀
    </c:when>
    <c:when test="${score>=80 && score<90}">
        良好
    </c:when>
    <c:when test="${score>=70 && score<80 }">
        一般
    </c:when>
    <c:when test="${score>=60 && score<70 }">
        及格
    </c:when>
    <c:otherwise>
        啥也不是
    </c:otherwise>
</c:choose>

<5>forEarch循环语句

<%-- for-earch循环语句 --%>
<%
    //list存储
    List<Student> list = new ArrayList<Student>();
    list.add(new Student("张三",10));
    list.add(new Student("李四",20));
    list.add(new Student("王五",30));
    pageContext.setAttribute("list", list);
    //map存储
    Map<String,Student> map = new HashMap<String,Student>();
    map.put("100",new Student("小张",10));
    map.put("101",new Student("小李",10));
    map.put("102",new Student("小王",10));
    pageContext.setAttribute("map", map);
%>
<c:forEach items="${list }" var="student" varStatus="status" >
    用户id:${status.count }--用户名:${student.name }--年龄:${student.age }
    <br/>
</c:forEach>
<hr>
<c:forEach items="${map }" var="entry">
    用户id:${entry.key }--名字:${entry.value.name }--年龄:${entry.value.age }<br>
</c:forEach>

常用标签属性:

  begin:开始遍历的位置

  end:结束遍历的位置

  step:遍历步长

  items:遍历目标对象

  var:遍历出的对象

  varStatus:遍历状态,其中的count属性可以获得索引值。

(6)forTokens循环语句

<%-- forTokens循环语句 --%>
<%
    String str = "哈哈哈-呵呵呵-嘿嘿嘿";
    pageContext.setAttribute("str", str);
%>
<c:forTokens items="${str }" delims="-" var="s">
    ${s }--
</c:forTokens>

常用标签属性:

  forEarch有的属性forTokens都有。

  delims:分隔符

<7>重定向标签

<%-- 重定向标签 --%>
<c:redirect url="http://www.baidu.com"></c:redirect>

 

 2)eclipse中使用jstl标签库

  <1>导入jstl.jar、standard.jar2个jar包;

    此处提供两个下载地址:

      CSDN:http://download.csdn.net/detail/czxt0605/7671781

      百度云盘:https://pan.baidu.com/s/1qYnVbAG

  <2>把c.tld文件拷贝到WEB-INF目录下;

  <3>web.xml加上如下配置

<jsp-config>
      <taglib>
          <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
          <taglib-location>/WEB-INF/c.tld</taglib-location>
      </taglib>
  </jsp-config>

 

posted on 2017-03-23 18:43  Dev_Nick  阅读(2200)  评论(0编辑  收藏  举报