zoukankan      html  css  js  c++  java
  • JSTL详解

    一.理论准备

            JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记,主要是为了方便页面的编写。

            JSTL包括,core(c),format(fmt),sql(sql),xml(xml),functions(fn)。

           使用包括两个 JAR 文件, jstl.jar 和 standard.jar 。

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
    
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

     

    二.Core 标签库

            Core 标签库主要包括了一般用途的标签,如条件标签、迭代标签和 URL 相关的标签。

           一般用途的标签有 <c:out> 、 <c:set> 、 <c:remove> 、 <c:cath>

             1.<c:out>

             用于计算一个表达式并将结果输出。类似于 JSP 中 <%=%> 表达式,或者是 EL 中 ${el-expression} 。

    //escapeXml默认true,对><空格等转换为对应的html
    
    <c:out value="欢迎访问" /><br>
    
    <c:out value="${session.username}" default="anonymous" /><br>
    
    <c:out value="${username}" default="anonymous" /><br>	
    
    //下面这个必须指定为false,因为有<>
    
    <c:out value="<h1>欢迎访问</h1>" escapeXml="false" />
    
    <c:out value="<h1>欢迎访问</h1>" /><br>

           2.<c:set>用于设置范围变量的值或者 javabean 对象的属性。

    <c:set var="username" value="SunWukong" scope="session" />
    
    <c:set var="username" scope="session">
    
          SunWukong
    
    </c:set>		

            3.<c:remove>

            相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>

    //不带范围的话在四个范围中一次查找
    
    <c:remove var="username" scope="session"/>	

            4.<c:catch>

             用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

    <c:catch var="ex">
    
    <%
    
         String number = "none";
    
         int i = Integer.parseInt(number);
    
    %>
    
    </c:catch>
    
    ${ex}
    

             条件标签包括 <c:if><c:choose><c:when><c:otherwise>

              1.<c:if>

              用于实现 java 中的 if 语句功能。

    <c:if test="${session.username=='system'}">
    
    欢迎系统管理员!
    
    </c:if>

              2.<c:choose>

              <c:choose> 和 <c:when> 、 <c:otherwise> 类似switch、case、default。

    <c:choose>
    
    <c:when test="${param.age>70}">
    
     欢迎老人
    
     </c:when>
    
    <c:when test="${param.age<=70 and param.age>=35}">
    
     欢迎中年人
    
     </c:when>
    
    <c:when test="${param.age<=35 and param.age>=0}">
    
     欢迎年轻人
    
     </c:when>
    
    <c:otherwise>
    
     可能你还没有出生呢
    
     </c:otherwise>
    
    </c:choose>

                迭代标签 迭代标签有 <c:forEach> 和 </c:forEach>

    <%
    
    	String names[] = new String[4];
    
    	names[0] = "孙悟空";
    
    	names[1] = "猪八戒";
    
    	names[2] = "沙僧";
    
    	names[3] = "唐僧";
    
    	pageContext.setAttribute("names", names);
    
    %>
    
     <c:forEach items="${names}" var="name">
    
     	${name}<br>
    
     </c:forEach>
    
     
    
     <c:forEach items="${names}" var="name" begin="0" end="3" step="1"> 
    
     	${name}<br>
    
     </c:forEach>
    
     <c:forEach items="${names}" var="name" varStatus="i"> 
    
     ${name}<br>
    
     index: ${i.index}<br>
    
     count: ${i.count}<br>
    
     first: ${i.first}<br>
    
     last: ${i.last}<br>
    
    </c:forEach> 

     

           其他

    //生成带参数的url:http://www.v512.com?param=value
    
    <c:url var="website" value="http://www.v512.com" >
    
        <c:param name="param" value="value" />
    
    </c:url>
    
    <a href="${website}">v512工作室</a>

     

    //类似<jsp:include >不同的是可以包含其他web工程下的内容
    
    <c:import url="http://www.v512.com/html/news.html" />
    c:forTokens items="a:b:c:d" delims=":" var="token">
    
    <c:out value="${token}"/><br>
    
    </c:forTokens>

     

    三. sql 标签

    1 设置数据源

                 使用<sql:setDataSource>标签可以实现对数据源的配置。

    【语法1】:直接使用已经存在的数据源。

    <sql:setDataSource dataSource=”dataSource”[var=”name”]

                               [scope=”page|request|session|application”]/>

    【语法2】:使用JDBC方式建立数据库连接。

    <sql:setDataSource driver=”driverClass” url=”jdbcURL”

                                                  user=”username”

                                                  password=”pwd”               

                                                  [var=”name”]

                                                  [scope=”page|request|session|application”]/>

    其中database是javax.sql。DataSource(接口)

    2 SQL操作标签

             JSTL提供了<sql:query>、<sql:update>、<sql:param>、<sql:dateParam>和<sql:transaction>这5个标签,通过使用SQL语言操作数据库,实现增加、删除、修改等操作。下面将介绍这5个标签的功能和使用方式。

    1.<sql:query>标签

    <sql:query>标签用来查询数据。

    <sql:setDataSource dataSource="jdbc/oracleds" var="ds"/>  
    
    <sql:query   var="result"    dataSource="${ds}"  sql="select * from guestbook order by id desc" />   
    
     
    
    <table border="1">  
    
      <c:forEach   var="row"  items="${result.rows}" >  
    
     <tr> 
    
        <td> <c:out value="${row.id}" /></td>    
    
        <td> <c:out value="${row.name}" /></td>
    
        <td> <c:out value="${row.email}" /></td>   
    
     </tr>  
    
     </c:forEach>  

     

    rows Java.util.Map 字段为索引的查询结果
    rowCount int 总记录数
    rowsByIndex object[] 数字索引结果

    其他的需要时候自己查。

    四. xml标签

                解析如下的xml文件。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <softwares>
    
    	<software>
    
    		<name>Windows XP</name>
    
    		<producer>Microsoft</producer>
    
    	</software>
    
    	<software>
    
    		<name>Oracle 11g</name>
    
    		<producer>Oracle</producer>
    
    	</software>
    
    	<software>
    
    		<name>Eclipse</name>
    
    		<producer>Eclipse.org</producer>
    
    	</software>
    
    </softwares>
    

     

    XSL. 可扩展样式表语言(Extensible Stylesheet Language)。
    <%@ page language="java" pageEncoding="utf-8"%>
    
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
    <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
    
    <html>
    
    	<body>
    
    		<c:import url="softwares.xml" var="url" />
    
    		//有人用doc表示要解析的文档
    
    		<x:parse xml="${url}" var="doc" />
    
    		<table border=1>
    
    			<tr>
    
    				<td>软件	</td>
    
    				<td>生产公司</td>
    
    			</tr>
    
    			<x:forEach var="n" select="$doc/softwares/software">
    
    				<tr>
    
    				<td>
    
    					<x:out select="$n/name" />
    
    				</td>
    
    				<td>
    
    					<x:out select="$n/producer" />
    
    				</td>
    
    				</tr>
    
    			</x:forEach>
    
    		</table>
    
    	</body>
    
    </html>
    

     

             这个不知道什么用。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    
    	version="1.0">
    
    <xsl:template match="/">
    
    <html>
    
    <body>
    
    <table border="1">
    
    	<tr>
    
    	<td>软件</td>
    
    	<td>生产公司</td>
    
    	</tr>
    
    	<xsl:for-each select="softwares/software">
    
    		<tr>
    
    			<td><xsl:value-of select="name" /></td>
    
    			<td><xsl:value-of select="producer" /></td>							
    
    		</tr>
    
    	</xsl:for-each>
    
    </table>
    
    </body>
    
    </html>
    
    </xsl:template>
    
    </xsl:stylesheet>
    

     

    五.结束语

            剩下的两个和不会的遇到的时候自己查就是了。

  • 相关阅读:
    程序员修炼之道:从小工到专家
    2020.12.16收获
    2020.12.15收获
    2020.12.14收获
    2020.12.13收获
    Android学习第二天——对Android的简单了解
    Java学习12.18
    考试加分项
    Java学习12.17
    Java建议
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3440423.html
Copyright © 2011-2022 走看看