JSTL详解

jstl标签详细讲解 jstl标签详细讲解 jstl标签详细讲解 jstl标签详细讲解 jstl标签详细讲解 jstl标签详细讲解 立即下载
概述 在JSP页面中,使用标签库代替传统的java代码片段来实现页面的显示逻辑,于是出现了JSTL(JavaServer Pages Standard Tag Library),为大多数页面逻辑提供了实现的JSTL技术,该技术本身就是一个标签库。 Sun公司Java规范标准的JSTL由apache jakarta组织负责维护。作为开源的标准技术,它一直在不断地完善。JSTL的发布包有两个版本:Standard-1.0 Taglib、Standard-1.1 Taglib,它们在使用时是不同的。q Standard-1.0 Taglib(JSTL1.0)支持Servlet2.3和JSP1.2规范,Web应用服务器Tomcat4支持这些规范,而它的发布也在Tomcat 4.1.24测试通过了。q Standard-1.1 Taglib(JSTL1.1)支持Servlet2.4和JSP2.0规范,Web应用服务器Tomcat5支持这些规范,它的发布在Tomcat 5.0.3测试通过了。 在本章的介绍中,将以由Sun发布的Standard-1.1 Taglib标签库为主,而apache jakarta组织发布的开源标签库,可以从http://jakarta.apache.org/taglibs/找到所需要的帮助。Sun发布的标准JSTL1.1标签库有以下几个标签: 核心标签库:包含Web应用的常用功能,比如:循环、表达式赋值、基本输入输出等。 国际化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。 数据库标签库:可以做访问数据库的工作。 XML标签库:用来访问XML文件的工作,这是JSTL标签库的一个特点。 函数标签库:用来读取已经定义的某个函数。此外,jstl还提供了EL表达式(Expression Language)来进行辅助的工作。JSTL标签库由jstl标签和EL表达式两个部分组成,EL是在JSTL 1.0规范中被引入,当时用来作为java表达式来工作,而该表达式必须配合JSTL标签库才能得到需要的结果。说明:在JSTL 1.1规范中,JSP 2.0容器已经能够独立的理解任何EL表达式,EL可以独立出现在JSP页面的任何位置。 EL表达式简介 EL是从JavaScript脚本语言得到启发的一种表达式语言,它借鉴了JavaScript多类型转换无关性的特点,在使用EL表达式从scope中得到参数时可以自动转换类型,因此对于类型的限制更加宽松,Web服务器对于request请求参数通常会以String类型来发送,在得到时使用的java语言脚本就应该是request.getParameter("XXX"),这样的话,对于实际应用还必须进行强制类型转换。而EL表达式就将用户从这种类型转换的繁琐工作中脱离出来,用户直接通过EL表达式取值,不用关心类型。 下面是一个示例:一个简单的EL表达式 <%@ page contentType="text/html; charset=UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> ${sampleValue + 1} <br> </body></html>这个示例在jsp页面上显示为“1” ,EL表达式必须以“${XXX}”来表示,其中“XXX”部分就是具体表达式内容,"${}"将这个EL表达式内容在其中作为EL表达式定义。El表达式的默认变量 一个EL表达式包含变量和操作符两个内容,任何存在于JSP作用范围的JavaBean都可以转化为EL表达式来使用,它所包含的默认变量如下: 1.默认变量:pageScope、requestScope、sessionScope、applicationScope 这四个默认变量包含Scope作用范围的参数集合,相当于被保存在java.util.Map中的某个参数,下面看简单示例: 使用sessionScope变量的EL表达式 <%request.getSession().setAttribute("sampleValue", new Integer(10));%>${sessionScope.sampleValue} 取得保存在Session中参数的sessionScope变量的EL表达式,“.”是property访问操作符,在这里表示从Session中取得“键”为“sampleValue”的参数,并显示出来。显示结果为“10”。 2.默认变量:param、paramValues 这两个默认变量包含请求参数的集合,param表明请求包含的参数为单一控件,paramValues表明请求包含的参数为控件数组。下面看一个简单示例:提交请求的页面和接受的页面 <%@ page contentType="text/html; charset=UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> <form action="SampleJsp.jsp"> <input type="text" name="sampleValue" value="10"> <input type="text" name="sampleValue" value="11"> <input type="text" name="sampleValue" value="12"> <input type="text" name="sampleSingleValue" value="SingleValue"> <input type="submit" value="Submit"> </form> </body></html>在这个页面中定义了两组控件,控件名为“sampleValue”的是一套控件数组,控件名为“sampleSingleValue”的是单一控件,通过递交将请求参数传送到SampleJsp.jsp。<%@ page contentType="text/html; charset=UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> ${paramValues.sampleValue[2]} <br> ${param.sampleSingleValue} <br> </body></html> 这是请求转发到的页面,通过EL表达式的paramValues变量得到控件数组中最后一个控件的递交参数,通过EL表达式的param变量得到单一控件的递交参数。控件数组参数的EL表达式使用“[]”来指定数组下标。本示例将显示控件数组中最后一个控件的值“12”和单一控件的值“SingleValue”。 3.默认变量header、headerValues这两个默认变量包含请求参数头部信息的集合,header变量表示单一头部信息,headerValues则表示数组型的头部信息。 4.默认变量cookie包含所有请求的cookie集合,集合中的每个对象对应javax.servlet.http.Cookie。 5.默认变量initParam包含所有应用程序初始化参数的集合。 6.默认变量pageContext等价于page环境类javax.servlet.jsp.PageContext的实例,用来提供访问不同的请求参数。11个默认变量几乎包含了Web应用的所有基本操作,若一个表达式不使用这些变量而直接使用参数名,那么就采用就近原则。该表达式将使用最近取得的参数值。 标签库介绍 表达式的操作符 EL表达式中还有许多操作符可以帮助完成各种所需的操作,之前的示例中“.”、“[]”就是其中的两个,下面将用表9.1来展示所有操作符及它们各自的功能。 .访问一个bean属性或者Map entry[]访问一个数组或者链表元素()对子表达式分组,用来改变赋值顺序? :条件语句,比如:条件?ifTrue:ifFalse如果条件为真,表达式值为前者,反之为后者+数学运算符,加操作-数学运算符,减操作或者对一个值取反*数学运算符,乘操作/ 或div数学运算符,除操作% 或mod数学运算符,模操作(取余)== 或eq逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false!= 或ne逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false< 或lt逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false> 或gt逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false<= 或le逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false>= 或ge逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false&& 或and逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false|| 或or逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false! 或not逻辑运算符,非操作赋。如果对true取运算返回false,否则返回trueempty用来对一个空变量值进行判断: null、一个空String、空数组、空Map、没有条目的Collection集合func(args)调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开这些操作符都是极其有用的,下面通过几个示例来演示它们的使用方法:例:几组操作符的示例 ${pageScope.sampleValue + 12} <br> //显示12${(pageScope.sampleValue + 12)/3} <br> //显示4.0${(pageScope.sampleValue + 12) /3==4} <br> //显示true${(pageScope.sampleValue + 12) /3>=5} <br> //显示false<input type="text" name="sample1" value="${pageScope.sampleValue + 10}"> //显示值为10的Text控件 可以看到,对于这些示例,程序设计者完全无需管理它们的类型转换,在表达式内部都已经处理了。有了EL表达式,在JSP页面的编程变得更灵活,也更容易。 标签库介绍 在JSTL1.1中有以下这些标签库是被支持的:Core标签库、XML processing标签库、I18N formatting标签库、Database access标签库、Functions标签库。对应的标识符如下所示: Corehttp://java.sun.com/jsp/jstl/corecXML processinghttp://java.sun.com/jsp/jstl/xmlxI18N formattinghttp://java.sun.com/jsp/jstl/fmtfmtDatabase accesshttp://java.sun.com/jsp/jstl/sqlsqlFunctionshttp://java.sun.com/jsp/jstl/functionsfn下面看例,简单使用标签库的示例。例:简单JSTL标签库示例 <%@ page contentType="text/html; charset=UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <body> <c:forEach var="i" begin="1" end="10" step="1"> ${i} <br /> </c:forEach> </body></html> 在该示例的JSP页面中声明了将使用Core标签库,它的URI为“http://java.sun.com/jsp/jstl/core”,前缀为“c”。之后,页面中<c:forEach>标签就是使用了JSTL的标签进行了工作。 标签库 Core标签库,又被称为核心标签库,该标签库的工作是对于JSP页面一般处理的封装。在该标签库中的标签一共有14个,被分为了四类,分别是: 多用途核心标签:<c:out>、<c:set>、<c:remove>、<c:catch>。 条件控制标签:<c:if>、<c:choose>、<c:when>、<c:otherwise>。 循环控制标签:<c:forEach>、<c:forTokens>。 URL相关标签:<c:import>、<c:url>、<c:redirect>、<c:param>。用于显示的 <c:out> 标签<c:out>标签是一个最常用的标签,用于在JSP中显示数据。属性描述value输出到页面的数据,可以是EL表达式或常量(必须)default当value为null时显示的数据(可选)escapeXml当设置为true时会主动更换特殊字符,比如“&lt;,&gt;,&amp;”(可选,默认为true)在JSTL1.0的时候,在页面显示数据必须使用<c:out>来进行。然而,在JSTL1.1中,由于JSP2.0规范已经默认支持了EL表达式,因此可以直接在JSP页面使用表达式。下面看一个示例。 <c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>该示例将从Session查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“no value”。<c: > 标签用于赋值的<c:set>标签<c:set>标签用于为变量或JavaBean中的变量属性赋值的工作。 <c:set>标签属性和说明 属性描述value值的信息,可以是EL表达式或常量target被赋值的JavaBean实例的名称,若存在该属性则必须存在property属性(可选)propertyJavaBean实例的变量属性名称(可选)var被赋值的变量名(可选)scope变量的作用范围,若没有指定,默认为page(可选)当不存在value的属性时,将以包含在标签内的实体数据作为赋值的内容。下面看一个示例:<c:set value="this is andy" var="oneString"/>${oneString} <br>该示例将为名为“oneString”的变量赋值为“this is andy”,其作用范围为page。用于删除的 <c:remove> 标签 <c:remove>标签用于删除存在于scope中的变量。  <c:remove>标签属性和说明var需要被删除的变量名scope变量的作用范围,若没有指定,默认为全部查找(可选)下面看一个示例:<c:remove var="sampleValue" scope="session"/>${sessionScope.sampleValue} <br>该示例将存在于Session中名为“sampleValue”的变量删除。下一句EL表达式显示该变量时,该变量已经不存在了。用于异常捕获的 <c:catch> 标签 <c:catch>标签允许在JSP页面中捕捉异常。它包含一个var属性,是一个描述异常的变量,改变量可选。若没有var属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了var属性,则可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。看一个示例。<c:catch var="err"> ${param.sampleSingleValue[9] == 3}</c:catch>${err}当“${param.sampleSingleValue[9] == 3}”表达式有异常时,可以从var属性“err”得到异常的内容,通常判断“err”是否为null来决定错误信息的提示。用于判断的 <c:if> 标签 <c:if>标签用于简单的条件语句。  <c:if>标签属性和说明  属性描述test需要判断的条件var保存判断结果true或false的变量名,该变量可供之后的工作使用(可选)scope变量的作用范围,若没有指定,默认为保存于page范围中的变量(可选)下面看一个示例:<c:if test="${paramValues.sampleValue[2] == 12}" var="visits"> It is 12</c:if><br>${visits} <br>该示例将判断request请求提交的传入控件数组参数中,下标为“2”的控件内容是否为“12”,若为12则显示“It is 12”。判断结果被保存在page范围中的“visits”变量中。用于复杂判断的 <c:choose> 、 <c:when> 、 <c:otherwise> 标签 这三个标签用于实现复杂条件判断语句,类似“if,elseif”的条件语句。 <c:choose>标签没有属性,可以被认为是父标签,<c:when>、<c:otherwise>将作为其子标签来使用。 <c:when>标签等价于“if”语句,它包含一个test属性,该属性表示需要判断的条件。 <c:otherwise>标签没有属性,它等价于“else”语句。 下面看一个复杂条件语句的示例。 <c:choose> <c:when test="${paramValues.sampleValue[2] == 11}"> not 12 not 13,it is 11 </c:when> <c:when test="${paramValues.sampleValue[2] == 12}"> not 11 not 13,it is 12 </c:when> <c:when test="${paramValues.sampleValue[2] == 13}"> not 11 not 12,it is 13 </c:when> <c:otherwise> not 11 、12、13 </c:otherwise></c:choose>该示例将判断request请求提交的传入控件数组参数中,下标为“2”控件内容是否为“11”或“12”或“13”,并根据判断结果显示各自的语句,若都不是则显示“not 11 、12、13”。用于循环的 <c:forEach> 标签 <c:forEach>为循环控制标签。  <c:forEach>标签属性和说明  属性描述items进行循环的集合(可选)begin开始条件(可选)end结束条件(可选)step循环的步长,默认为1(可选)var做循环的对象变量名,若存在items属性,则表示循环集合中对象的变量名(可选)varStatus显示循环状态的变量(可选)下面看一个集合循环的示例。<%ArrayList arrayList = new ArrayList(); arrayList.add("aa"); arrayList.add("bb"); arrayList.add("cc");%><%request.getSession().setAttribute("arrayList", arrayList);%><c:forEach items="${sessionScope.arrayList}" var="arrayListI"> ${arrayListI}</c:forEach>该示例将保存在Session中的名为“arrayList”的ArrayList类型集合参数中的对象依次读取出来,items属性指向了ArrayList类型集合参数,var属性定义了一个新的变量来接收集合中的对象。最后直接通过EL表达式显示在页面上。下面看一个简单循环的示例。<c:forEach var="i" begin="1" end="10" step="1"> ${i}<br /></c:forEach>该示例从“1”循环到“10”,并将循环中变量“i”显示在页面上。用于分隔字符的 <c:forTokens> 标签 <c:forTokens>标签可以根据某个分隔符分隔指定字符串,相当于java.util.StringTokenizer类。 <c:forTokens>标签 属性和说明 属性描述items进行分隔的EL表达式或常量delims分隔符begin开始条件(可选)end结束条件(可选)step循环的步长,默认为1(可选)var做循环的对象变量名(可选)varStatus显示循环状态的变量(可选)下面看一个示例。<c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step="2" delims="," var="aValue"> ${aValue}</c:forTokens>需要分隔的字符串为“aa,bb,cc,dd”,分隔符为“,”。begin属性指定从第一个“,”开始分隔,end属性指定分隔到第三个“,”,并将做循环的变量名指定为“aValue”。由于步长为“2”,使用EL表达式${aValue}只能显示"aa,bb,cc".<x: > 标签用于包含页面的<c:import> <c:import>标签允许包含另一个JSP页面到本页面来。 <c:import>标签属性和说明 属性描述rl需要导入页面的URLcontextWeb Context该属性用于在不同的Context下导入页面,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)charEncoding导入页面的字符集(可选)var可以定义导入文本的变量名(可选)scope导入文本的变量名作用范围(可选)varReader接受文本的java.io.Reader类变量名(可选)下面看一个示例。<c:import url="/MyHtml.html" var="thisPage" /><c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/><c:import url="www.sample.com/MyHtml.html" var="thisPage"/>该示例演示了三种不同的导入方法,第一种是在同一 Context 下的导入,第二种是在不同的 Context 下导入,第三种是导入任意一个 URL 。用于得到URL地址的<c:url>标签 <c:url> 标签用于得到一个 URL 地址。 <c:url>标签属性和说明 属性描述value页面的URL地址contextWeb Context该属性用于得到不同Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)charEncodingURL的字符集(可选)var存储URL的变量名(可选)scope变量名作用范围(可选)下面看一个示例:<c:url value="/MyHtml.html" var="urlPage" /><a href="${urlPage}">link</a>得到了一个 URL 后,以 EL 表达式放入 <a> 标签的 href 属性,达到链接的目的。用于页面重定向的<c:redirect>标签 <c:redirect> 用于页面的重定向,该标签的作用相当于 response.setRedirect 方法的工作。它包含 url 和 context 两个属性,属性含义和 <C:url> 标签相同。下面看一个示例。<c:redirect url="/MyHtml.html"/>该示例若出现在 JSP 中,则将重定向到当前 Web Context 下的“ MyHtml.html ”页面,一般会与 <c:if> 等标签一起使用。用于包含传递参数的<c:param>标签 <c:param> 用来为包含或重定向的页面传递参数。  <c:param>标签属性和说明属性描述name传递的参数名value传递的参数值(可选)下面是一个示例:<c:redirect url="/MyHtml.jsp"><c:param name="userName" value=”RW” /></c:redirect>该示例将为重定向的“ MyHtml.jsp ”传递指定参数“ userName=’RW’ ”。 9.4 JSTL XML processing标签库在企业级应用越来越依赖 XML 的今天, XML 格式的数据被作为信息交换的优先选择。 XML processing 标签库为程序设计者提供了基本的对 XML 格式文件的操作。在该标签库中的标签一共有 10 个,被分为了三类,分别是 XML核心标签:<x:parse>、<x:out>、<x:set>。 XML流控制标签:<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>。 XML转换标签:<x:transform>、<x:param>。用于解析XML文件的<x:parse>标签 <x:parse> 标签是该组标签库的核心,从其标签名就可以知道,它是作为解析 XML 文件而存在的。它的属性和描述如表 9.12 所示: <x:parse>标签属性和说明 属性描述doc源XML的内容,该属性的内容应该为String类型或者java.io.Reader的实例,可以用xml属性来替代,但是不被推荐var将解析后的XML保存在该属性所指定的变量中,之后XML processing标签库中的其他标签若要取XML中的内容就可以从该变量中得到(可选)scope变量的作用范围(可选)varDom指定保存的变量为org.w3c.dom.Document接口类型(可选)scopeDomorg.w3c.dom.Document的接口类型变量作用范围(可选)systemId定义一个URI,该URI将被使用到XML文件中以接入其他资源文件(可选)filter该属性必须为org.xml.sax.XMLFilter类的一个实例,可以使用EL表达式传入,将对XML文件做过滤得到自身需要的部分(可选)其中, var 、 scope 和 varDom 、 scopeDom 不应该同时出现,而应该被视为两个版本来使用,二者的变量都可以被 XML processing 标签库的其他标签来使用。<x:parse> 标签单独使用的情况很少,一般会结合 XML processing 标签库中的其他标签来一起工作。下面看一个示例。首先给出一个简单的 XML 文件,将对该 XML 文件做解析,该 XML 文件名为 SampleXml.xml 。<?xml version="1.0" encoding="UTF-8"?><xml-body> <name>RW</name> <passWord>123456</passWord> <age>28</age> <books> <book>book1</book> <book>book2</book> <book>book3</book> </books></xml-body>标签库的工作:<c:import var="xmlFile" url="http://localhost:8080/booksamplejstl/SampleXml.xml"/><x:parse var="xmlFileValue" doc="${xmlFile}"/><fmt: > 标签国际化核心标签:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>。 格式化标签:<fmt:timeZone>、<fmt:setTimeZone>、<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>。下面只选择其中常见的一些标签和属性进行介绍。用于设置本地化环境的<fmt:setLocale>标签 <fmt:setLocale>标签用于设置Locale环境。它的属性和描述如表9.17所示: <fmt:setLocale>标签属性和说明属性描述valueLocale环境的指定,可以是java.util.Locale或String类型的实例scopeLocale环境变量的作用范围(可选)下面看一个示例:<fmt:setLocale value="zh_TW"/>表示设置本地环境为繁体中文。用于显示资源配置文件信息的<fmt:message>标签 用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表9.19所示: <fmt:message>标签属性和说明 属性描述key资源配置文件的“键”指定bundle若使用<fmt:setBundle>保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找var将显示信息保存为一个变量scope变量的作用范围下面看一个示例:<fmt:setBundle basename="applicationMessage" var="applicationBundle"/><fmt:bundle basename="applicationAllMessage"> <fmt:message key="userName" /> <p> <fmt:message key="passWord" bundle="${applicationBundle}" /></fmt:bundle>该示例使用了两种资源配置文件的绑定的做法,“ applicationMessage ”资源配置文件利用<fmt:setBundle>标签被赋于了变量“ applicationBundle ”,而作为<fmt:bundle>标签定义的“ applicationAllMessage ”资源配置文件作用于其标签体内的显示。 第一个<fmt:message>标签将使用“ applicationAllMessage ”资源配置文件中“键”为“ userName ”的信息显示。 用于参数传递的<fmt:param>标签 <fmt:param>标签应该位于<fmt:message>标签内,将为该消息标签提供参数值。它只有一个属性value。 <fmt:param>标签有两种使用版本,一种是直接将参数值写在value属性中,另一种是将参数值写在标签体内。用于为请求设置字符编码的<fmt:requestEncoding>标签 <fmt:requestEncoding>标签用于为请求设置字符编码。它只有一个属性value,在该属性中可以定义字符编码。用于设定时区的<fmt:timeZone>、<fmt:setTimeZone>标签 这两组标签都用于设定一个时区。唯一不同的是<fmt:timeZone>标签将使得在其标签体内的工作可以使用该时区设置,<fmt:setBundle>标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表9.20所示: <fmt:timeZone>、<fmt:setTimeZone>标签属性和说明属性描述value时区的设置var<fmt:setTimeZone>独有的属性,用于保存时区为一个变量scope变量的作用范围用于格式化数字的<fmt:formatNumber>标签<fmt: formatNumber > 标签用于格式化数字。它的属性和描述如表9.21所示:<fmt:formatNumber>标签属性和说明属性描述value格式化的数字,该数值可以是String类型或java.lang.Number类型的实例type格式化的类型pattern格式化模式var结果保存变量scope变量的作用范围maxIntegerDigits指定格式化结果的最大值minIntegerDigits指定格式化结果的最小值maxFractionDigits指定格式化结果的最大值,带小数minFractionDigits指定格式化结果的最小值,带小数<fmt:formatNumber>标签实际是对应java.util.NumberFormat类,type属性的可能值包括currency(货币)、number(数字)和percent(百分比)。下面看一个示例。<fmt:formatNumber value="1000.888" type="currency" var="money"/>该结果将被保存在“ money ”变量中,将根据Locale环境显示当地的货币格式。用于解析数字的<fmt:parseNumber>标签 <fmt:parseNumber>标签用于解析一个数字,并将结果作为java.lang.Number类的实例返回。<fmt:parseNumber>标签看起来和<fmt:formatNumber>标签的作用正好相反。 <fmt:parseNumber>标签属性和说明属性描述value将被解析的字符串type解析格式化的类型pattern解析格式化模式var结果保存变量,类型为java.lang.Numberscope变量的作用范围parseLocale以本地化的形式来解析字符串,该属性的内容应为String或java.util.Locale类型的实例 下面看一个示例。<fmt:parseNumber value="15%" type="percent" var="num"/>解析之后的结果为“ 0.15 ”。用于格式化日期的<fmt:formatDate>标签 <fmt:formatDate>标签用于格式化日期。 <fmt:formatDate>标签属性和说明属性描述value格式化的日期,该属性的内容应该是java.util.Date类型的实例type格式化的类型pattern格式化模式var结果保存变量scope变量的作用范围timeZone指定格式化日期的时区<fmt:formatDate>标签与<fmt:timeZone>、<fmt:setTimeZone>两组标签的关系密切。若没有指定 timeZone属性,也可以通过<fmt:timeZone>、<fmt:setTimeZone>两组标签设定的时区来格式化最后的结果。用于解析日期的<fmt:parseDate>标签<fmt:parseDate>标签用于解析一个日期,并将结果作为java.lang.Date类型的实例返回。<fmt:parseDate>标签看起来和<fmt:formatDate>标签的作用正好相反。<fmt:parseDate>标签属性和说明属性描述value将被解析的字符串type解析格式化的类型pattern解析格式化模式var结果保存变量,类型为java.lang.Datescope变量的作用范围parseLocale以本地化的形式来解析字符串,该属性的内容为String或java.util.Locale类型的实例timeZone指定解析格式化日期的时区<fmt:parseNumber>和<fmt:parseDate>两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对var属性的字符串参数要求非常严格。就JSP页面的表示层前段来说,处理这种解析本不属于份内之事,因此<fmt:parseNumber>和<fmt:parseDate>两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在Servlet中。Database access 标签库(<sql:> 标签) Database access标签库中的标签用来提供在JSP页面中可以与数据库进行交互的功能,虽然它的存在对于早期纯JSP开发的应用以及小型的开发有着意义重大的贡献,但是对于MVC模型来说,它却是违反规范的。因为与数据库交互的工作本身就属于业务逻辑层的工作,所以不应该在JSP页面中出现,而是应该在模型层中进行。 对于Database access标签库本书不作重点介绍,只给出几个简单示例让读者略微了解它们的功能。Database access标签库有以下6组标签来进行工作:<sql:setDataSource>、<sql:query>、<sql:update>、<sql:transaction>、<sql:setDataSource>、<sql:param> 用于设置数据源的 <sql:setDataSource> 标签<sql:setDataSource>标签用于设置数据源,下面看一个示例:<sql:setDataSource var="dataSrc" url="jdbc:postgresql://localhost:5432/myDB" driver="org.postgresql.Driver" user="admin" password="1111"/>该示例定义一个数据源并保存在“ dataSrc ”变量内。用于查询的 <sql:query> 标签 <sql:query>标签用于查询数据库,它标签体内可以是一句查询SQL。下面看一个示例:<sql:query var="queryResults" dataSource="${dataSrc}"> select * from table1</sql:query>该示例将返回查询的结果到变量“ queryResults ”中,保存的结果是javax.servlet.jsp.jstl.sql.Result类型的实例。要取得结果集中的数据可以使用<c:forEach>循环来进行。下面看一个示例。<c:forEach var="row" items="${queryResults.rows}"> <tr> <td>${row.userName}</td> <td>${row.passWord}</td> </tr></c:forEach>“ rows ”是javax.servlet.jsp.jstl.sql.Result实例的变量属性之一,用来表示数据库表中的“列”集合,循环时,通过“ ${row.XXX} ”表达式可以取得每一列的数据,“ XXX ”是表中的列名。用于更新的 <sql:update> 标签 <sql:update>标签用于更新数据库,它的标签体内可以是一句更新的SQL语句。其使用和<sql:query>标签没有什么不同。用于事务处理的 <sql:transaction> 标签 <sql:transaction>标签用于数据库的事务处理,在该标签体内可以使用<sql:update>标签和<sql:query>标签,而<sql:transaction>标签的事务管理将作用于它们之上。<sql:transaction>标签对于事务处理定义了read_committed、read_uncommitted、repeatable_read、serializable4个隔离级用于事务处理的 <sql:param> 、 <sql:dateParam> 标签 这两个标签用于向SQL语句提供参数,就好像程序中预处理SQL的“ ? ”一样。<sql:param>标签传递除java.util.Date类型以外的所有相融参数,<sql:dateParam>标签则指定必须传递java.util.Date类型的参数。 Functions 标签库 -- <fn:> 标签称呼Functions标签库为标签库,倒不如称呼其为函数库来得更容易理解些。因为Functions标签库并没有提供传统的标签来为JSP页面的工作服务,而是被用于EL表达式语句中。在JSP2.0规范下出现的Functions标签库为EL表达式语句提供了许多更为有用的功能。Functions标签库分为两大类,共16个函数。长度函数:fn:length 字符串处理函数:fn:contains、fn:containsIgnoreCase、fn:endsWith、fn:escapeXml、fn:indexOf、fn:join、fn:replace、fn:split、fn:startsWith、fn:substring、fn:substringAfter、fn:substringBefore、fn:toLowerCase、fn:toUpperCase、fn:trim以下是各个函数的用途和属性以及简单示例。长度函数 fn:length 函数 长度函数fn:length的出现有重要的意义。在JSTL1.0中,有一个功能被忽略了,那就是对集合的长度取值。虽然java.util.Collection接口定义了size方法,但是该方法不是一个标准的JavaBean属性方法(没有get,set方法),因此,无法通过EL表达式“ ${collection.size} ”来轻松取得。fn:length函数正是为了解决这个问题而被设计出来的。它的参数为input,将计算通过该属性传入的对象长度。该对象应该为集合类型或String类型。其返回结果是一个int类型的值。下面看一个示例。<%ArrayList arrayList1 = new ArrayList(); arrayList1.add("aa"); arrayList1.add("bb"); arrayList1.add("cc");%><%request.getSession().setAttribute("arrayList1", arrayList1);%>${fn:length(sessionScope.arrayList1)}假设一个ArrayList类型的实例“ arrayList1 ”,并为其添加三个字符串对象,使用fn:length函数后就可以取得返回结果为“ 3 ”。判断函数 fn:contains 函数fn:contains函数用来判断源字符串是否包含子字符串。它包括string和substring两个参数,它们都是String类型,分布表示源字符串和子字符串。其返回结果为一个boolean类型的值。下面看一个示例。${fn:contains("ABC", "a")}<br>${fn:contains("ABC", "A")}<br>前者返回“ false ”,后者返回“ true ”。fn:containsIgnoreCase函数fn:containsIgnoreCase函数与fn:contains函数的功能差不多,唯一的区别是fn:containsIgnoreCase函数对于子字符串的包含比较将忽略大小写。它与fn:contains函数相同,包括string和substring两个参数,并返回一个boolean类型的值。下面看一个示例。${fn:containsIgnoreCase("ABC", "a")}<br>${fn:containsIgnoreCase("ABC", "A")}<br>前者和后者都会返回“ true ”。词头判断函数 fn:startsWith 函数fn:startsWith函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个string参数外,还包含一个subffx参数,表示词头字符串,同样是String类型。该函数返回一个boolean类型的值。下面看一个示例。${fn:startsWith ("ABC", "ab")}<br>${fn:startsWith ("ABC", "AB")}<br>前者返回“ false ”,后者返回“ true ”。词尾判断函数 fn:endsWith 函数fn:endsWith函数用来判断源字符串是否符合一连串的特定词尾。它与fn:startsWith函数相同,包括string和subffx两个参数,并返回一个boolean类型的值。下面看一个示例。${fn:endsWith("ABC", "bc")}<br>${fn:endsWith("ABC", "BC")}<br>前者返回“ false ”,后者返回“ true ”。字符实体转换函数 fn:escapeXml 函数fn:escapeXml函数用于将所有特殊字符转化为字符实体码。它只包含一个string参数,返回一个String类型的值。字符匹配函数 fn:indexOf 函数fn:indexOf函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“ -1 ”。它包括string和substring两个参数,返回结果为int类型。下面看一个示例。${fn:indexOf("ABCD","aBC")}<br>${fn:indexOf("ABCD","BC")}<br>前者由于没有匹配成功,所以返回-1,后者匹配成功将返回位置的下标,为1。分隔符函数 fn:join 函数fn:join函数允许为一个字符串数组中的每一个字符串加上分隔符,并连接起来。它的参数、返回结果和描述。 fn:join函数 参数描述array字符串数组。其类型必须为String[]类型separator分隔符。其类型必须为String类型返回结果返回一个String类型的值下面看一个示例。<% String[] stringArray = {"a","b","c"}; %><%request.getSession().setAttribute("stringArray", stringArray);%>${fn:join(sessionScope.stringArray,";")}<br>定义数组并放置到Session中,然后通过Session得到该字符串数组,使用fn:join函数并传入分隔符“ ; ”,得到的结果为“ a;b;c ”。替换函数 fn:replace 函数fn:replace函数允许为源字符串做替换的工作。它的参数、返回结果和描述如表9.26所示:表9.26 fn:replace函数参数描述inputString源字符串。其类型必须为String类型beforeSubstring指定被替换字符串。其类型必须为String类型afterSubstring指定替换字符串。其类型必须为String类型返回结果返回一个String类型的值下面看一个示例。${fn:replace("ABC","A","B")}<br>将“ ABC ”字符串替换为“ BBC ”,在“ ABC ”字符串中用“ B ”替换了“ A ”。分隔符转换数组函数 fn:split 函数fn:split函数用于将一组由分隔符分隔的字符串转换成字符串数组。它的参数、返回结果和描述 fn:split函数参数描述string源字符串。其类型必须为String类型delimiters指定分隔符。其类型必须为String类型返回结果返回一个String[]类型的值下面看一个示例。${fn:split("A,B,C",",")}<br>将“ A,B,C ”字符串转换为数组{A,B,C}。字符串截取函数 fn:substring 函数fn:substring函数用于截取字符串。它的参数、返回结果和描述。 fn:substring函数参数描述string源字符串。其类型必须为String类型beginIndex指定起始下标(值从0开始)。其类型必须为int类型endIndex指定结束下标(值从0开始)。其类型必须为int类型返回结果返回一个String类型的值下面看一个示例。${fn:substring("ABC","1","2")}<br>截取结果为“ B ”。起始到定位截取字符串函数 fn:substringBefore 函数fn:substringBefore函数允许截取源字符从开始到某个字符串。它的参数和fn:substringAfter函数相同,不同的是substring表示的是结束字符串。下面看一个示例。${fn:substringBefore("ABCD","BC")}<br>截取的结果为“ A ”。小写转换函数 fn:toLowerCase 函数fn:toLowerCase函数允许将源字符串中的字符全部转换成小写字符。它只有一个表示源字符串的参数string,函数返回一个String类型的值。下面看一个示例。${fn:toLowerCase("ABCD")}<br>转换的结果为“ abcd ”。大写转换函数 fn:toUpperCase 函数fn:toUpperCase函数允许将源字符串中的字符全部转换成大写字符。它与fn:toLowerCase函数相同,也只有一个String参数,并返回一个String类型的值。下面看一个示例。${fn:toUpperCase("abcd")}<br>转换的结果为“ ABCD ”。空格删除函数 fn:trim 函数fn:trim函数将删除源字符串中结尾部分的“空格”以产生一个新的字符串。它与fn:toLowerCase函数相同,只有一个String参数,并返回一个String类型的值。下面看一个示例。${fn:trim("AB C ")}D<br>转换的结果为“ AB CD ”,注意,它将只删除词尾的空格而不是全部,因此“ B ”和“ C ”之间仍然留有一个空格。
Ethercat学习-从站源码生成 移植平台GD32F450,从站芯片AX58100 阅读详情

相关推荐

小波变换(Wavelet Transform)原理及介绍

小波变换是一种多分辨率时频分析工具,克服了傅里叶变换无法定位时间信息的缺陷。通过可伸缩平移的母小波,它能同时捕捉信号的高频细节(短时特征)和低频轮廓(整体趋势)。其核心原理是利用不同尺度的小波基与信号进行内积运算,生成时频域系数矩阵。小波变换具有动态分辨率特性,高频部分时间精度高,低频部分频率分辨率好。主要应用包括瞬态事件检测、信号降噪、数据压缩(如JPEG2000)和压缩感知(如快速MRI)。

qq_42758052的博客 5485

JSTL学习

JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的 JSP作用域 pageContext 当前页面 requestContext 一次请求 sessionContext 当前会话 applicationContext 全局,所有用户共享 变量的...

qq_31805885的博客 375

基于phpstudy搭建pikachu靶场

一、phpstudy下载安装配置 phpstudy介绍 简单介绍一下phpstudy,详细请参考百度解读。pikachu是基于PHP环境搭建的,需要数据库支持,所以装pikachu之前需要先安装它需要的环境,就像你养鱼需要给它提供水环境一样。安装phpstudy能满足pikachu的需求,所以先安装phpstudy。 phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是

ptxybird的博客 1万+

js的取反

js中的取反的用法

weixin_53596260的博客 6643

Linux安装Oracle sqlplus客户端工具

Linux安装Oracle sqlplus客户端工具

优快云_Nan_Jiang_Li的博客 2776

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

JSTL

简介 JSTL:JSP Standard Tag Library 标准标签库 JSTL 允许开人员可以像使用 HTML 标签那样在 JSP 中开发 Java 功能; JSTL 库有 core,i18n,fmt,sql 等等; i18n 和 sql 用的很少,core 和 fmt 在工作中会用到,所以我们主要是了解 core 和 fmt。 jar 包 为了能够在 JSP 中使用 JS...

小小阿萨姆的博客 1271

YOLOv8-COCO指标转换

本文介绍了将YOLO格式数据集转换为COCO格式并评估模型性能的完整流程。首先需将YOLO格式的标注数据转换为COCO格式,通过修改classes、image_path等参数适配不同数据集。然后使用YOLO模型对验证集进行预测并保存结果为JSON格式。最后通过比较预测结果和转换后的COCO标注文件,使用COCO官方评估指标和TIDE工具进行性能分析,生成包含AP、AR等指标的报告及错误分析图表。整个过程实现了从数据准备到模型评估的完整闭环,为计算机视觉任务提供标准化的性能评估方案。

FJN110的博客 402

JSTL-EL表达式 函数fn

JSTL-EL表达式 一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page、 request、session、application)的bean能被作为一个EL变量来使用。 另外,EL支持以下预定义的变量:变量名称  说明   pageScope 一个包含所有page scope范围的变量集合 (a java.util.Map)   requestScope 一

w__yi的专栏 2286

国科大人工智能原理与算法-2024-第一次作业-雷震老师

1. 反射行动(比如从热炉子上缩回你的手)是理性的吗?它们是智能的吗? 2. 以下的计算机系统在何种程度上是人工智能的实例: - 超市条码扫描器 - 网络搜索引擎 - 语音激活的电话菜单 - 对网络状态动态响应的网络路由算法 3. 为什么进化会倾向于导致行为合理的系统?设计这样的系统想达到的目标是什么?

MatsumotoChrikk 2928

《Zephyr OS 入门与实战》第3章:第一个 Zephyr 程序 - Blinky 实战

解决方法:确认设备树overlay文件已正确加载。返回值,确认驱动初始化状态。

2301_79143213的博客 540

Javaweb之jstl详解

Javaweb之jstl详解 1. JSTL标签库概述 1.1. 什么是JSTL标签库 JSTL全称为JSP Standard Tag Library,即JSP标准标签库。JSTL最初是一套Java官方的标签库解决方案,自从JavaEE 5之后被定义为标准的标签库。JSTL规范由Sun公司定制,Apache的Jakarta小组负责实现,目前的版本是JSTL1.2。 EL最初定义在JSTL1.0规范中,在JSP2.0之后,EL已经正式成为JSP规范的一部分。在JSTL1.1规范中,已经没有了EL的内容,不过在

qq_47897078的博客 2092

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建(附获奖论文和MATLAB代码实现)

映了汽车道路行驶的运动学特征。准差、加速度标准差这九个特征参数用于后续的数据分析,建立了合理的汽车运动特征评。特征参数与所属类特征参数的特征值的相关性大小替代误差进行排序的,计算得到汽车行。对于问题一,我们首先对原始数据进行了时间变量转换,将原本的年月日时分秒的计。紧接着进行了运动学片段的划分,引入九个特征参数,通过主成分分析、本文研究的是汽车行驶工况构建,汽车行驶工况是描述汽车行驶的速度。的合理性评价标准,对两种方法都进行了合理性评价,得到的。进行了合理性评价,得到了最优的汽车行驶工况曲线。

getusushu的博客 1000

jsp的JSTL详解

文章目录一、什么是JSTL1.1 JSTL简介1.2 JSTL的五个标签库1.3 JSTL的使用步骤二、JSTL库的使用2.1 core核心库使用c:set标签c:if标签c:choose、c:when、c:otherwise标签c:forEach标签补充forEach标签的知识点三、JSTL标签库jar包下载 一、什么是JSTL 1.1 JSTL简介 JSTL全称:JSP Standard Tag Library(JSP标准标签库),是一个一段完善的开源的JSP标签库。 作用:替代jsp的代码脚本。 优点

越努力越幸运的博客 3603

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JSTL : 标签库详解

JSTL 简介 JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个JSP标签集合,封装了JSP应用的通用核心功能。 JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。

Lifereunion的博客 2318

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JSTL 标签大全详解

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/53311722 冷血之心的博客) 关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~ 目录 一、JSTL标签介绍 1、什么是JSTL? 2、JSTL标签库: 3、使用taglib指令导入标签库: 4、core标签库常用标签:...

冷血之心的博客 12万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Jstl详解[转]

JSTL详解 9.2概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现。鉴于此,出现了 JSTL ( JSP Standard Tag Library )。大多数 JSP 页面逻辑提供了实现的 JSTL 技术,该技术本身就是一个标签库。 Sun 公司 Java 规范标准的 JSTL 由...

CurrentJ 222

jstl详解

JSTL 文章目录JSTL1.条件动作标签1.1 if 标签1.2 choose、when 和 otherwise 标签2.迭代标签2.1 forEach 标签3.格式化标签3.1 formatNumber 标签3.2 formatDate 标签3.3 parseNumber 标签3.4 parseDate 标签 1.条件动作标签 1.1 if 标签 无主体内容 <!-- &lt...

qq_36154377的博客 558

JSTL 基础详解

1.JSTL简介 > JSP2.0以后,不再推荐在页面中使用脚本片段和表达式 > 使用EL表达式去替换JSP表达式 > 使用标签来替换脚本片段 > 所谓的标签就是指以标签的形式去调用Java代码。 > JSTL是JSP的标准标签库 > JSTL的标准由sun公司定义,而由Apache公司实现 > 我们如果想在项目中使用JSTL,需要导入两个jar包: taglibs-standard-impl-1.2.1.jar tag

程序员学习圈 762
上一篇: 美团外卖小程序
下一篇: Java基础之重写(覆写)与重载区别
CapsLockWY
博客等级 码龄9年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值