• JSTL基础


    是java中的一个定制标记库集

    实现了jsp页面中的代码复用,基于标签库原理,重复率较高的代码块支持复用,提高效率

    书写jsp页面时可读性更强

    http://archive.apache.org/dist/

    http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

    <!—

     

    EL表达式(Expression Language)经常与JSTL配合使用,使得JSP页面更直观,写法更简单

    格式:${表达式}

    ".","[]"运算符:

    1.通常情况下是通用的${user.name} 、${user["name"]}

    2."[]"还可以用来进行集合元素中的定位${list[0].name、list[1].name}

    3.包含特殊字符时必须用"[]",${user["first-name"]}是对的,而${user.first-name}是错误的

    4.通过变量动态取值时必须用"[]",${user[param]},"."的写法是${user.name}无法动态取值

     

     

    JSP内置对象(Page,Request,Session,Application)

    EL(PageScope,RequestScope,SessionScope,ApplicationScope)

     -->

    <!-- EL自动类型转换

    如把String转换为int,

    String str_num = request.getParameter("num");

    int num = Integer.parseInt(str_num);

    num+=10;

     

    EL会进行自动类型转换,只需要这样写${param.num + 10}

    -->

    <!--

    EL运算符

    算术运算符:+,-,*,/(div),%(mod)

    关系运算符:==(eq),!=(ne),<(lt),>(gt),<=(le),>=(ge)

    逻辑运算符:&&(and),||(or),!(not)

    验证运算符:empty(验证数据是否为空,空返回true,非空返回false)

     -->

     

    <%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
      
    <!-- JSTL -->    
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    <jsp:useBean id="person" class="com.wzy.bean.Person"></jsp:useBean>
    <!-- JSTL -->
      
    <!DOCTYPE html 
    PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>first</title>
    </head>
    <body>
    
    <c:out value="输出的值(常量)"></c:out>
    <c:out value="${username}" default="默认值"></c:out><!-- 输出变量,如果为空,则什么都不输出 --><br />
    <c:out value="1+2=${1+2}"></c:out>
    <% 	
    String name1 = "xiaoming";
    request.setAttribute("username", name1);
    %>
    <br />
    <c:out value="${empty username }"></c:out><!-- false -->
    
    <br />
    <% 
    session.setAttribute("value1", "计算结果:"); 
    session.setAttribute("value2", 100);
    %>
    
    <c:out value="&lt${value1}" default="默认" escapeXml="false"></c:out>
    <c:out value="${value2}*5="></c:out>
    <c:out value="${value2*5}&gt" escapeXml=""></c:out>
    <!--escapeXml=""或escapeXml="false"都可以进行转义字符操作
    escapeXml="true"转义字符失效-->
    <br>
    <!-- 
    set标签
    1.存值到scope中,可将值以变量形式存放在指定的范围中 
    -->
    <br>
    <c:set var="today" value="12.16" scope="session"></c:set>
    <c:out value="${today}"></c:out>
    <br>
    <c:set var="age" scope="application">20</c:set>
    <c:out value="${age}"></c:out>
    <!--
    2.存值到javabean的属性中,需要配合target属性指定对象并且通过property属性指定要赋值给对象中的哪个属性
    -->
    <br>
    <c:set target="${person}" property="pid" value="01"></c:set>
    <c:set target="${person}" property="pname">小明</c:set>
    <c:set target="${person}" property="page" value="21"></c:set>
    <c:out value="${person.pid}"></c:out>
    <c:out value="${person.pname}"></c:out>
    <c:out value="${person.page}"></c:out>
    
    <!-- remove标签 , 移除掉某个数据-->
    <c:set var="removevalue" value="hahahha"></c:set>
    <c:remove var="removevalue"/>
    <c:out value="${removevalue}"></c:out><br>
    
    <!-- catch标签 ,包含那些容易出错的JSTL标签,相当于javaz中的异常处理try{}catch(){}-->
    <c:catch var="error">
    <c:set target="aa" property="aa"></c:set>
    </c:catch>
    <c:out value="${error}"></c:out>
    <br>
    <!--if标签
    同程序中的if作用相同
    test属性用于存放判断的条件,一般使用EL表达式编写
    var指定名称用来存放判断的结果类型为true或false
    scope用来存放var属性存放的范围,不指定为默认的范围
     -->
    <form action="firstDemo.jsp" method="post">
    	<input type="text" name="score" value="${param.score001}">
    	<input type="submit" value="提交">
    </form>
    <c:if test="${param.score>=80}" var="result">
    	<c:out value="您的分数很好"></c:out>
    </c:if>
    <c:out value="${result}"></c:out>
    
    <br>
    <!-- choose,when,otherwise
    通常这三个标签放在一起配合使用
    c:choose嵌套在c:when和c:otherwise外面作为他们的父标签来使用
    其中choose和when也可以一起使用
    -->
     
    <form action="firstDemo.jsp" method="post">
    	<input type="text" name="score02" value="输入分数">
    	<input type="submit" value="提交">
    </form>
    
    <!-- 相当于switch语法 -->
    <c:choose>
    	<c:when test="${param.score02>=90 && param.score02<=100}">
    		<c:out value="优秀"></c:out>
    	</c:when>
    	<c:when test="${param.score02>=80 && param.score02<=90}">
    		<c:out value="良好"></c:out>
    	</c:when>
    	<c:when test="${param.score02>=60 && param.score02<=80}">
    		<c:out value="及格"></c:out>
    	</c:when>
    	<c:when test="${param.score02>=0 && param.score02<=60}">
    		<c:out value="不及格"></c:out>
    	</c:when>
    	<c:otherwise>
    		<c:out value="不符合所有的要求"></c:out>
    	</c:otherwise>
    </c:choose>
    
    <br>
    <!-- forEach
    根据循环条件遍历集合(Collection)中的元素
    var设定变量名用于存储从集合中取出的元素(必须无默认值)
    items指定要遍历的集合(必须无默认值)
    begin、end用于指定遍历的起始位置和终止位置(有默认)
    step指定循环的步长(有默认)
    varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态
     -->
    
    <%
    	List<String> fruits = new ArrayList<String>();
    	fruits.add("apple00");
    	fruits.add("pear01");
    	fruits.add("orange02");
    	fruits.add("banana03");
    	fruits.add("apple04");
    	fruits.add("pear05");
    	fruits.add("orange06");
    	fruits.add("banana07");
    	request.setAttribute("fruits", fruits);
    //	for (Object f : fruits) {
    //		System.out.print(f);
    //	}
    	
    %>
    <!-- 1.全部遍历 -->
    <c:forEach var="f" items="${fruits }"> 
    	<c:out value="${f}"></c:out>
    </c:forEach>
    <br>
    <!-- 2.部分遍历 ,取出第2个到第6个-->
    <c:forEach var="f" items="${fruits}" begin="1" end="5"> 
    	<c:out value="${f}"></c:out>
    </c:forEach>
    <br>
    <!-- 3.部分遍历 ,取出第2个到第6个,指定步长,隔一个输出一个-->
    <c:forEach var="f" items="${fruits}" begin="1" end="5" step="2"> 
    	<c:out value="${f}"></c:out>
    </c:forEach>
    <br>
    <!-- 4.部分遍历 ,取出第3个到第6个,输出元素状态-->
    <c:forEach var="f" items="${fruits}" begin="2" end="5" varStatus="fru"> 
    	<c:out value="${f}的4个属性:"></c:out>
    	<c:out value="index属性(在列表的位置)${fru.index}"></c:out>
    	<c:out value="count属性(输出的位置)${fru.count}"></c:out>
    	<c:out value="first属性(输出的如果的第一个,为true,否则false)${fru.first}"></c:out>
    	<c:out value="last属性(输出的如果的最后一个,为true,否则false)${fru.last}"></c:out>
    	<br>
    </c:forEach>
    <br>
    <!-- forTokens标签,截取字符串
    用于浏览字符串,并根据指定的字符串将字符串截取
    items指定被迭代的字符串
    delims指定使用的分隔符
    var指定用来存放遍历到的成员
    begin指定变量的开始位置(int型,从取值0开始)
    end指定遍历结束的位置(int型,默认集合中最后一个元素)
    step遍历的步长(大于0的整型)
    varStatus通过index,count,first,last几个状态值,描述begin和end子集中的元素的状态
     -->
    <c:forTokens items="1534-4564-48" delims="-" var="num" >
    	<c:out value="${num}"></c:out><br>
    </c:forTokens>
    
    <br>
    <!-- import标签
    可以把其他静态或动态文件包含到本jsp页面
    同jsp:include的区别为:只能包含同一个web应用中的文件。
    而c:import可以包含其他web应用的文件,甚至的网络上的资源
    
    url被导入资源的url路径
    context相同服务器下其他的web工程,必须以“/”开头
    var以String类型存入被包含文件的内容
    Scope var变量的jsp范围
    charEncoding 被导入文件的编码格式
    varReader以Reader类型存储被包含文件内容
    -->
    <!--导入绝对路径-->
    <c:catch var="err09">
    	<c:import url="http://www.baidu.co"></c:import>
    </c:catch> 
    <c:out value="${err09}"></c:out>
    
    <!-- 导入相对路径文件 -->
    <c:catch var="err08">
    	<c:import url="a.txt" charEncoding="utf-8"></c:import>
    </c:catch> 
    <c:out value="${err08}"></c:out>
    <br>
    <!-- var ,Scope属性 -->
    <c:catch var="err07">
    	<c:import url="a.txt" var="a" scope="session" charEncoding="utf-8"></c:import>
    </c:catch> 
    <c:out value="import标签存储的a字符串变量值为:${sessionScope.a}"></c:out>
    <c:out value="${err07}"></c:out>
    <br>
    <!-- context属性 ,把另一个web下的文件导入到本页面-->
    <c:catch var="err06">
    	<c:import url="/err.jsp" context="/StrutsTest" charEncoding="utf-8"></c:import>
    </c:catch> 
    <c:out value="${err06}"></c:out>
    
    <!-- redirect标签,用来实现请求的重定向
    同时可以在url中加入指定的参数
    url指定重定向页面的地址,可以是一个String类型的绝对地址或相对地址
    context用于导入其他web应用中的页面
     -->
     <c:catch var="redirtErr">
     <c:redirect url="second.jsp" >
    	<c:param name="username">name</c:param>
    	<c:param name="usepasswd">passwd</c:param>
     </c:redirect>
     </c:catch>
     <c:out value="${redirtErr}"></c:out>
    <br>
    
    <!-- url标签
    用于动态生成一个String类型的url,可以同c:param标签共同使用
    也可以使用html的a标签实现超链接
    value表示url路径值
    var将url路径存储在的变量中
    scope var变量的范围
    -->
    <c:if test="${1<3 }">
    	<c:set var="parturl">aa</c:set>
    </c:if> 
    <c:url value="http://127.0.0.1:8080/${parturl}" var="newurl" scope="session"></c:url>
    <a href="${ newurl}">动态生成url.....</a> 
     
     
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
        <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    this is .....
    
    <c:out value="${param.username}"></c:out>
    <c:out value="${param.usepasswd}"></c:out>
    
    <c:if test="${1<3}">
    	<c:set var="parturl">aa</c:set>
    </c:if> 
    <c:url value="http://127.0.0.1:8080/${parturl}" var="newurl" scope="session"></c:url>
    <a href="${newurl}">url..</a> 
    
    <br>
    <c:out value="你好。hello world字符串
    是否包含hello:${fn:contains('你好。hello world','hello') }"></c:out><br>
    <c:out value="你好。hello world字符串
    是否包含aa:${fn:contains('你好。hello world','aa') }"></c:out><br>
    
    <c:out value="你好。HELLO world字符串
    是否包含hello:${fn:containsIgnoreCase('你好。hello world','hello') }"></c:out><br>
    
    <c:out value="你好。HELLO world字符串ld是否在字符串结尾:
    ${fn:endsWith('你好。hello world','ld') }"></c:out><br>
    <c:out value="你好。HELLO world字符串你是否在字符串开头:
    ${fn:startsWith('你好。hello world','你') }"></c:out>
    
    <book>escapeXML</book><br>
    <c:out value="${fn:escapeXml('<book>escapeXML</book>')}"></c:out><br>
    <c:out value="<book>escapeXML</book>"></c:out><br>
    
    <c:out value="hello world中,rl出现的index值:
    ${fn:indexOf('hello world中','rl')}"></c:out>
    
    </body>
    </html>
    

      

  • 相关阅读:
    一致性hash算法
    运算符的重载
    HTTP协议详解
    SOA 新业务语言 新系统架构——什么是SOA
    js中几种实用的跨域方法原理详解
    Linq基于两个属性的分组
    BackBone结合ASP.NET MVC实现页面路由操作
    CSS学习总结
    单页应用 WebApp SPA 骨架 框架 路由 页面切换 转场
    2016年最值得学习的五大开源项目
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5054843.html
Copyright © 2020-2023  润新知