jstl

在页面中使用JSTL标签需完成以下2个步骤:
  1、导入jstl.jar和standerd.jar这两个JSTL的jar文件。
  2、在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。
JSTL标签库中常用标签:
<c:foreach var=“” items=“”>
<c:if test=“”>

package cn.lcp.domain;

public class Person {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}

 

<%@page import="cn.lcp.domain.Person"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--导入jstl的标签库。在standard.jar下面的META-INF的c.tid文件里面的: uri="http://java.sun.com/jsp/jstl/core" -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>jstl+el表达式示例代码</title>
  </head>
  
  <body>
    
    
    <!-- 使用jstl+el表达式可以迭代list集合 -->
    <% 
        Person p1 = new Person();
        p1.setName("aa111");
        
        Person p2 = new Person();
        p2.setName("bb");
        
        List list = new ArrayList();
        list.add(p1);
        list.add(p2);
        
        request.setAttribute("list",list);
    %>
    
    <c:forEach var="person" items="${list}">
        ${person.name }<br/>
    </c:forEach>
    
    
    <!-- 使用jstl+el表达式可以迭代map集合 -->
    <% 
        Map map = new HashMap();
        map.put("a","aaaaxxx");
        map.put("b","bbbb");
        map.put("c","cccc");
        map.put("1","aaaa1111");
        
        request.setAttribute("map",map);
    %>
    
    <br/>
    
       <%-- Set<Map.Entry> set = map.entrySet()--%>
    <c:forEach var="me" items="${map}">  
        ${me.key } = ${me.value }<br/>
    </c:forEach>
    
    
    <br/><br/>
    
    <c:if test="${user!=null}">
        欢迎您:${user.uesrname }
    </c:if>
    
     <c:if test="${user==null}">
        用户名:<input type="text" name="username">
        密码:<input type="password" name="password">
        <input type="submit" value="登陆">
    </c:if>
  </body>
</html>

JSTL标签库

<c:out> 标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。
<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
<c:remove>标签用于删除各种Web域中的属性。<c:remove var="varName" [scope="{page|request|session|application}"] />
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
  var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
<c:redirect>标签用于实现请求重定向

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="cn.lcp.domain.Person"  %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    
    <title>测试jstl</title>

  </head>
  
  <body>
  <br>-----------c:out输出--------------------<br>
  <%
    request.setAttribute("aaaa", "bbbb");
  %>
  <c:out value="${data }" default="aaaa" escapeXml="true"></c:out>
  
  <br>-----------c:set输出--------先从page域里面找,再从request里面找--------------------------------------------------------------------------<br>
  <c:set var="data" value="xxx" scope="page" />
    ${data }
  
  <!-- 往map里面存值 -->
  <%
    Map map = new HashMap();
    request.setAttribute("map", map);
   %>
  <c:set property="dd" value="xxx" target="${map }" />
  ${map.dd }
  
  <!-- 操作javabean -->
  <%
    Person p = new Person();
    request.setAttribute("p", p);
   %>
  <c:set property="name" value="uuu" target="${p }" />
  ${p.name }
  
  <br>-------------c:catch异常处理------------------------------------------------------------------------------------------<br>
  <c:catch var="myex">
    <%
        int x = 1/0;
     %>
  </c:catch> 
  ${myex.message }
  
  
  <br>-------------c:if-------看到var就要想到把标签里面的执行结果以var里面的值为关键字把值存在了某个与里面了,用scope指定存放的域-----------------<br>
  <c:if var="aaa" test="${user==null }" scope="page">
  啊啊啊啊
  </c:if>
  ${aaaa }    <!-- 是true和false -->
  
  <br>-------------c:foreach----------------------------------------------------------------------------------------------------------<br>
  <%
    List list = new ArrayList();
    list.add("aaaa");
    list.add("bbbb");
    list.add("cccc");
    list.add("dddd");
    request.setAttribute("list", list);
  %>
  <c:forEach var="str" items="${list}">
    ${str }
  </c:forEach>
  
  <br>-------------c:foreach实现表格间色显示----------------------------------------------------------------------------------------------------<br>
   <%
    List list1 = new ArrayList();
    list1.add("aaaa");
    list1.add("bbbb");
    list1.add("cccc");
    list1.add("dddd");
    list1.add("aaaa1");
    list1.add("bbbb1");
    list1.add("cccc1");
    list1.add("dddd1");
    request.setAttribute("list", list1);
  %>

<style > .odd{background-color: #ff99ff;} .even{background-color: #ff6633;} tr:hover{background-color: #0000ff} </style> <table border="1" width="20%"> <c:forEach var="str" items="${list}" varStatus="status"> <tr class="${status.count%2==0?'even':'odd'}"> <!--${stauts} 获取了一个对象,这个对象记住了当前是第几次迭代 --> <td>${str}</td> </tr> </c:forEach> </table> <br>--------------c:url重写,第一次加载页面,不知道有没有禁用cookie,第二次载入的时候就直接带cookie----------------------<br/> <c:url var="URL" value="/index.jsp"> <c:param name="name" value="中国"></c:param> </c:url> <a href="${URL }" >购买</a> <br>----------------c:forTokens--------------------------------------------------------------------------------<br/> <% pageContext.setAttribute("data1", "aa,bb,cc,dd"); %> <c:forTokens items="${data1 }" delims="," var="ss"> ${ss } </c:forTokens> </body> </html>

 

posted @ 2015-03-31 15:34  肉球  阅读(201)  评论(0编辑  收藏  举报