Compare commits

..

3 Commits

Author SHA1 Message Date
zsy 2cbe7af36c test
1 year ago
zsy 0f2470694f test
1 year ago
zsy fcdb659453 test
1 year ago

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -1,17 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4"> <module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/wechat-master/web/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/wechat-master/web" relative="/" />
</webroots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">

@ -1,4 +1,18 @@
/*
* Copyright (c) 2019.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hyc.wechat.model.po; package com.hyc.wechat.model.po;

@ -29,55 +29,55 @@
<validator> <validator>
<validator-class> <validator-class>
org.apache.taglibs.standard.tlv.JstlCoreTLV org.apache.taglibs.standard.tlv.JstlCoreTLV
</validator-class><!-- JDBC??????? --> </validator-class>
<description> <description>
Provides core validation features for JSTL tags. Provides core validation features for JSTL tags.
</description><!-- ??JSTL????????? --> </description>
</validator> </validator>
<tag> <tag>
<name>catch</name><!-- ??????????? --> <name>catch</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Catches any Throwable that occurs in its body and optionally Catches any Throwable that occurs in its body and optionally
exposes it. exposes it.
</description><!-- ???????????? Throwable?????????? --> </description>
<attribute> <attribute>
<name>var</name> <!-- ????????????? --> <name>var</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>choose</name><!-- ??????????? --> <name>choose</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Simple conditional tag that establishes a context for Simple conditional tag that establishes a context for
mutually exclusive conditional operations, marked by mutually exclusive conditional operations, marked by
&lt;when&gt; and &lt;otherwise&gt;<!-- ?????????????????????? &lt;when&gt; ? &lt;otherwise&gt; ?? --> &lt;when&gt; and &lt;otherwise&gt;
</description> </description>
</tag> </tag>
<tag> <tag>
<name>if</name> <!-- ??????????? --> <name>if</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Simple conditional tag, which evalutes its body if the Simple conditional tag, which evalutes its body if the
supplied condition is true and optionally exposes a Boolean supplied condition is true and optionally exposes a Boolean
scripting variable representing the evaluation of this condition scripting variable representing the evaluation of this condition
</description><!-- ??????????????????????????????????????????????? --> </description>
<attribute> <attribute>
<name>test</name><!-- ????????? --> <name>test</name>
<required>true</required> <required>true</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>boolean</type><!-- ??????? --> <type>boolean</type>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name><!-- ???????????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -89,8 +89,8 @@
</tag> </tag>
<tag> <tag>
<name>import</name> <!-- ????????????? --> <name>import</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class> <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
@ -98,61 +98,61 @@
to either the maxPage, a String in 'var', or a Reader in 'varReader'. to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description> </description>
<attribute> <attribute>
<name>url</name><!-- ???????URL --> <name>url</name>
<required>true</required> <required>true</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name><!-- ???????????????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ????????????? --> <name>scope</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>varReader</name><!-- ??????????????Reader?? --> <name>varReader</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>context</name><!-- ???????????URL???? --> <name>context</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>charEncoding</name><!-- ??????????? --> <name>charEncoding</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>forEach</name> <!-- ???????????? --> <name>forEach</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class> <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
The basic iteration tag, accepting many different The basic iteration tag, accepting many different
collection types and supporting subsetting and other collection types and supporting subsetting and other
functionality functionality
</description><!-- ????????????????????????????? --> </description>
<attribute> <attribute>
<name>items</name><!-- ??????????? --> <name>items</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type><!-- ????????Java?? --> <type>java.lang.Object</type>
</attribute> </attribute>
<attribute> <attribute>
<name>begin</name> <!-- ?????????????0???? --> <name>begin</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- ?????????? --> <rtexprvalue>true</rtexprvalue>
<type>int</type> <!-- ???????? --> <type>int</type>
</attribute> </attribute>
<attribute> <attribute>
<name>end</name><!-- ?????????????????? --> <name>end</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>int</type> <type>int</type>
@ -164,8 +164,8 @@
<type>int</type> <type>int</type>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name><!-- ????????????????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
@ -176,7 +176,7 @@
</tag> </tag>
<tag> <tag>
<name>forTokens</name> <!-- ??????????????? --> <name>forTokens</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
@ -213,13 +213,13 @@
<type>int</type> <type>int</type>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name> <!-- ???????????token????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>varStatus</name> <!-- ???????????token????? --> <name>varStatus</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>

@ -19,7 +19,7 @@
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib> <taglib>
<tlib-version>1.0</tlib-version><!--o--> <tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version> <jsp-version>1.2</jsp-version>
<short-name>c</short-name> <short-name>c</short-name>
<uri>http://java.sun.com/jstl/core</uri> <uri>http://java.sun.com/jstl/core</uri>
@ -33,33 +33,33 @@
<init-param> <init-param>
<param-name>expressionAttributes</param-name> <param-name>expressionAttributes</param-name>
<param-value> <param-value>
out:value<!-- ?????? --> out:value
out:default<!-- ???????? --> out:default
out:escapeXml <!-- ?????XML?? --> out:escapeXml
if:test <!-- if??????? --> if:test
import:url <!-- import???URL --> import:url
import:context <!-- import?????? --> import:context
import:charEncoding <!-- import??????? --> import:charEncoding
forEach:items <!-- forEach????? --> forEach:items
forEach:begin <!-- forEach??????? --> forEach:begin
forEach:end <!-- forEach??????? --> forEach:end
forEach:step <!-- forEach????? --> forEach:step
forTokens:items <!-- forTokens????? --> forTokens:items
forTokens:begin <!-- forTokens??????? --> forTokens:begin
forTokens:end <!-- forTokens??????? --> forTokens:end
forTokens:step <!-- forTokens????? --> forTokens:step
param:encode <!-- param????? --> param:encode
param:name <!-- param????? --> param:name
param:value <!-- param???? --> param:value
redirect:context<!-- redirect?????? --> redirect:context
redirect:url<!-- redirect???URL --> redirect:url
set:property <!-- set????? --> set:property
set:target <!-- set??????? --> set:target
set:value <!-- set???? --> set:value
url:context <!-- url?????? --> url:context
url:value <!-- url???? --> url:value
when:test <!-- when??????? --> when:test
</param-value> </param-value>
<description> <description>
Whitespace-separated list of colon-separated token pairs Whitespace-separated list of colon-separated token pairs
describing tag:attribute combinations that accept expressions. describing tag:attribute combinations that accept expressions.
@ -78,9 +78,9 @@
exposes it. exposes it.
</description> </description>
<attribute> <attribute>
<name>var</name> <!-- ????????? --> <name>var</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
@ -103,25 +103,25 @@
Like &lt;%= ... &gt;, but for expressions. Like &lt;%= ... &gt;, but for expressions.
</description> </description>
<attribute> <attribute>
<name>value</name> <!-- ??????? --> <name>value</name>
<required>true</required> <!-- ??????? --> <required>true</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>default</name> <!-- ??? --> <name>default</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>escapeXml</name> <!-- ??????XML???? --> <name>escapeXml</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>if</name><!-- ?????? --> <name>if</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.IfTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Simple conditional tag, which evalutes its body if the Simple conditional tag, which evalutes its body if the
@ -129,9 +129,9 @@
scripting variable representing the evaluation of this condition scripting variable representing the evaluation of this condition
</description> </description>
<attribute> <attribute>
<name>test</name> <!-- ?????? --> <name>test</name>
<required>true</required> <!-- ??????? --> <required>true</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name> <name>var</name>
@ -139,14 +139,14 @@
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ????????????? --> <name>scope</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>import</name> <!-- ????????????? --> <name>import</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.ImportTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class> <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
@ -155,40 +155,40 @@
to either the maxPage, a String in 'var', or a Reader in 'varReader'. to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description> </description>
<attribute> <attribute>
<name>url</name> <!-- ????URL --> <name>url</name>
<required>true</required> <!-- ??????? --> <required>true</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name> <!-- ???????????????? --> <name>var</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ??????????? --> <name>scope</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>varReader</name> <!-- ???????Reader??????? --> <name>varReader</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>context</name> <!-- ?????????URL???? --> <name>context</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>charEncoding</name> <!-- ??????????? --> <name>charEncoding</name>
<required>false</required> <!-- ???????? --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>forEach</name> <!-- ???? --> <name>forEach</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.ForEachTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class> <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
@ -197,61 +197,61 @@
functionality functionality
</description> </description>
<attribute> <attribute>
<name>items</name><!-- ?????? --> <name>items</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>begin</name><!-- ??????? --> <name>begin</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>end</name><!-- ??????? --> <name>end</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>step</name><!-- ????? --> <name>step</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>var</name><!-- ?????????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>varStatus</name> <!-- ???????????????? --> <name>varStatus</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>forTokens</name> <!-- ???????token???? --> <name>forTokens</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.ForTokensTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.ForTokensTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Iterates over tokens, separated by the supplied delimeters Iterates over tokens, separated by the supplied delimeters
</description> </description>
<attribute> <attribute>
<name>items</name> <!-- ??????? --> <name>items</name>
<required>true</required> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>delims</name> <!-- ??? --> <name>delims</name>
<required>true</required> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>begin</name> <!-- ??????? --> <name>begin</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>end</name> <!-- ??????? --> <name>end</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -303,56 +303,56 @@
</tag> </tag>
<tag> <tag>
<name>redirect</name><!-- ????? --> <name>redirect</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.RedirectTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Redirects to a new URL. Redirects to a new URL.
</description> </description>
<attribute> <attribute>
<name>var</name><!-- ????????????????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ??????????? --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>url</name> <!-- ?????????URL --> <name>url</name>
<required>true</required> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>context</name><!-- ?????????URL???? --> <name>context</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>remove</name><!-- ?????????????????? --> <name>remove</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
<body-content>empty</body-content> <body-content>empty</body-content>
<description> <description>
Removes a scoped variable (from a particular scope, if specified). Removes a scoped variable (from a particular scope, if specified).
</description> </description>
<attribute> <attribute>
<name>var</name><!-- ??????????? --> <name>var</name>
<required>true</required> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ????????????? --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<name>set</name> <!-- ????????????scope????? --> <name>set</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.SetTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Sets the result of an expression evaluation in a 'scope' Sets the result of an expression evaluation in a 'scope'
@ -385,25 +385,25 @@
</tag> </tag>
<tag> <tag>
<name>url</name><!-- ??URL??? --> <name>url</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.UrlTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Prints or exposes a URL with optional query parameters Prints or exposes a URL with optional query parameters
(via the c:param tag). (via the c:param tag).
</description> </description>
<attribute> <attribute>
<name>var</name> <!-- ??????????URL????? --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>scope</name> <!-- ?????URL?????? --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<name>value</name> <!-- ???????URL --> <name>value</name>
<required>true</required> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -415,17 +415,17 @@
</tag> </tag>
<tag> <tag>
<name>when</name><!-- ????????????? --> <name>when</name>
<tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.el.core.WhenTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<description> <description>
Subtag of &lt;choose&gt; that includes its body if its Subtag of &lt;choose&gt; that includes its body if its
condition evalutes to 'true' condition evalutes to 'true'
</description> </description>
<attribute> <attribute>
<name>test</name> <!-- ????????? --> <name>test</name>
<required>true</required> <!-- ??????? --> <required>true</required>
<rtexprvalue>false</rtexprvalue> <!-- ??????????? --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!-- <!--
~ Copyright (c) 2019. 黄钰朝 ~ Copyright (c) 2019. 黄钰朝
~ ~
@ -22,31 +21,19 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0"> version="2.0">
<description>JSTL 1.1 core library</description><!-- 说明这是JSTL 1.1版本的核心库 --> <description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name><!-- 在显示中用作JSTL核心的名称 --> <display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version><!-- 标签库版本 --> <tlib-version>1.1</tlib-version>
<short-name>c</short-name><!-- 标签库的简短名称 --> <short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri><!-- 标签库的URI用于JSP中引用 --> <uri>http://java.sun.com/jsp/jstl/core</uri>
<validator>
<validator>
<description> <description>
Provides core validation features for JSTL tags. Provides core validation features for JSTL tags.
</description> </description>
<validator-class> <validator-class>
org.apache.taglibs.standard.tlv.JstlCoreTLV org.apache.taglibs.standard.tlv.JstlCoreTLV
</validator-class><!-- 验证器类名称 --> </validator-class>
</validator> </validator>
<tag> <tag>
@ -54,42 +41,30 @@
Catches any Throwable that occurs in its body and optionally Catches any Throwable that occurs in its body and optionally
exposes it. exposes it.
</description> </description>
<name>catch</name><!-- 标签名称 --> <name>catch</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
<body-content>JSP</body-content> <!-- 标签主体内容类型 --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Name of the exported scoped variable for the Name of the exported scoped variable for the
exception thrown from a nested action. The type of the exception thrown from a nested action. The type of the
scoped variable is the type of the exception thrown. scoped variable is the type of the exception thrown.
</description> </description>
<name>var</name><!-- 属性名称 --> <name>var</name>
<required>false</required><!-- 是否为必需属性 --> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 是否允许运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
Simple conditional tag that establishes a context for Simple conditional tag that establishes a context for
mutually exclusive conditional operations, marked by mutually exclusive conditional operations, marked by
&lt;when&gt; and &lt;otherwise&gt; &lt;when&gt; and &lt;otherwise&gt;
</description> </description>
<name>choose</name><!-- 标签名称 --> <name>choose</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class><!-- 标签类名 --> <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<body-content>JSP</body-content><!-- 标签主体内容类型 --> <body-content>JSP</body-content>
</tag> </tag>
<tag> <tag>
@ -98,31 +73,18 @@ scoped variable is the type of the exception thrown.
supplied condition is true and optionally exposes a Boolean supplied condition is true and optionally exposes a Boolean
scripting variable representing the evaluation of this condition scripting variable representing the evaluation of this condition
</description> </description>
<name>if</name><!-- 标签名称 --> <name>if</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class><!-- 标签类名 --> <tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class>
<body-content>JSP</body-content><!-- 标签主体内容类型 --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
The test condition that determines whether or The test condition that determines whether or
not the body content should be processed. not the body content should be processed.
</description> </description>
<name>test</name><!-- 属性名称 --> <name>test</name>
<required>true</required><!-- 必需属性 --> <required>true</required>
<rtexprvalue>true</rtexprvalue><!-- 允许运行时表达式 --> <rtexprvalue>true</rtexprvalue>
<type>boolean</type> <!-- 属性类型 --> <type>boolean</type>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -130,17 +92,17 @@ Name of the exported scoped variable for the
resulting value of the test condition. The type resulting value of the test condition. The type
of the scoped variable is Boolean. of the scoped variable is Boolean.
</description> </description>
<name>var</name><!-- 属性名称 --> <name>var</name>
<required>false</required><!-- 是否为必需属性 --> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 是否允许运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Scope for var. Scope for var.
</description> </description>
<name>scope</name><!-- 属性名称 --> <name>scope</name>
<required>false</required><!-- 是否为必需属性 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- 是否允许运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
@ -149,9 +111,9 @@ Scope for var.
Retrieves an absolute or relative URL and exposes its contents Retrieves an absolute or relative URL and exposes its contents
to either the maxPage, a String in 'var', or a Reader in 'varReader'. to either the maxPage, a String in 'var', or a Reader in 'varReader'.
</description> </description>
<name>import</name><!-- 标签名称 --> <name>import</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class>
<tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class><!-- TEI类 --> <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
@ -159,7 +121,7 @@ The URL of the resource to import.
</description> </description>
<name>url</name> <name>url</name>
<required>true</required> <required>true</required>
<rtexprvalue>true</rtexprvalue><!-- 允许运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -210,19 +172,6 @@ resource.
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
The basic iteration tag, accepting many different The basic iteration tag, accepting many different
@ -309,61 +258,35 @@ visibility.
<description> <description>
Iterates over tokens, separated by the supplied delimeters Iterates over tokens, separated by the supplied delimeters
</description> </description>
<name>forTokens</name><!-- 标签名称 --> <name>forTokens</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class>
<body-content>JSP</body-content><!-- 标签的主体内容类型 -->
<attribute> <attribute>
<description> <description>
String of tokens to iterate over. String of tokens to iterate over.
</description> </description>
<name>items</name><!-- 要迭代的令牌字符串 --> <name>items</name>
<required>true</required><!-- 此属性是必须的 --> <required>true</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type> <!-- 属性类型 --> <type>java.lang.String</type>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
The set of delimiters (the characters that The set of delimiters (the characters that
separate the tokens in the string). separate the tokens in the string).
</description> </description>
<name>delims</name><!-- 分隔符字符串 --> <name>delims</name>
<required>true</required><!-- 此属性是必须的 --> <required>true</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type><!-- 属性类型 --> <type>java.lang.String</type>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Iteration begins at the token located at the Iteration begins at the token located at the
specified index. First token has index 0. specified index. First token has index 0.
</description> </description>
<name>begin</name><!-- 起始索引 --> <name>begin</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>int</type> <type>int</type>
</attribute> </attribute>
@ -372,21 +295,8 @@ specified index. First token has index 0.
Iteration ends at the token located at the Iteration ends at the token located at the
specified index (inclusive). specified index (inclusive).
</description> </description>
<name>end</name><!-- 结束索引 --> <name>end</name>
<required>false</required>
<required>false</required><!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>int</type> <type>int</type>
</attribute> </attribute>
@ -395,10 +305,10 @@ specified index (inclusive).
Iteration will only process every step tokens Iteration will only process every step tokens
of the string, starting with the first one. of the string, starting with the first one.
</description> </description>
<name>step</name> <!-- 步长 --> <name>step</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
<type>int</type><!-- 属性类型 --> <type>int</type>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -406,9 +316,9 @@ Name of the exported scoped variable for the
current item of the iteration. This scoped current item of the iteration. This scoped
variable has nested visibility. variable has nested visibility.
</description> </description>
<name>var</name><!-- 当前项的作用域变量名称 --> <name>var</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -419,9 +329,9 @@ javax.servlet.jsp.jstl.core.LoopTag
Status. This scoped variable has nested Status. This scoped variable has nested
visibility. visibility.
</description> </description>
<name>varStatus</name><!-- 迭代状态的作用域变量名称 --> <name>varStatus</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
@ -430,8 +340,8 @@ visibility.
Like &lt;%= ... &gt;, but for expressions. Like &lt;%= ... &gt;, but for expressions.
</description> </description>
<name>out</name> <name>out</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class><!-- 标签实现类 --> <tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Expression to be evaluated. Expression to be evaluated.
@ -477,14 +387,14 @@ true.
<description> <description>
Adds a parameter to a containing 'import' tag's URL. Adds a parameter to a containing 'import' tag's URL.
</description> </description>
<name>param</name> <!-- 标签名称 --> <name>param</name>
<tag-class>org.apache.taglibs.standard.tag.rt.core.ParamTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.core.ParamTag</tag-class>
<body-content>JSP</body-content><!-- 标签主体内容类型 --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Name of the query string parameter. Name of the query string parameter.
</description> </description>
<name>name</name><!-- 查询参数名称 --> <name>name</name>
<required>true</required> <required>true</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -492,7 +402,7 @@ Name of the query string parameter.
<description> <description>
Value of the parameter. Value of the parameter.
</description> </description>
<name>value</name><!-- 查询参数的值 --> <name>value</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -509,7 +419,7 @@ Value of the parameter.
<description> <description>
The URL of the resource to redirect to. The URL of the resource to redirect to.
</description> </description>
<name>url</name><!-- 重定向的目标URL --> <name>url</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -518,7 +428,7 @@ The URL of the resource to redirect to.
Name of the context when redirecting to a relative URL Name of the context when redirecting to a relative URL
resource that belongs to a foreign context. resource that belongs to a foreign context.
</description> </description>
<name>context</name><!-- 上下文名称 --> <name>context</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -530,21 +440,21 @@ resource that belongs to a foreign context.
</description> </description>
<name>remove</name> <name>remove</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class>
<body-content>empty</body-content><!-- 标签主体内容类型为空 --> <body-content>empty</body-content>
<attribute> <attribute>
<description> <description>
Name of the scoped variable to be removed. Name of the scoped variable to be removed.
</description> </description>
<name>var</name><!-- 要移除的作用域变量名 --> <name>var</name>
<required>true</required><!-- 此属性是必须的 --> <required>true</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Scope for var. Scope for var.
</description> </description>
<name>scope</name><!-- 作用域名 --> <name>scope</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
@ -570,9 +480,9 @@ whatever type the value expression evaluates to.
<description> <description>
Expression to be evaluated. Expression to be evaluated.
</description> </description>
<name>value</name> <!-- 要评估的表达式 --> <name>value</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -580,7 +490,7 @@ Target object whose property will be set. Must evaluate to
a JavaBeans object with setter property property, or to a a JavaBeans object with setter property property, or to a
java.util.Map object. java.util.Map object.
</description> </description>
<name>target</name><!-- 目标对象 --> <name>target</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -588,7 +498,7 @@ java.util.Map object.
<description> <description>
Name of the property to be set in the target object. Name of the property to be set in the target object.
</description> </description>
<name>property</name><!-- 要设置的目标对象的属性名称 --> <name>property</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -596,7 +506,7 @@ Name of the property to be set in the target object.
<description> <description>
Scope for var. Scope for var.
</description> </description>
<name>scope</name> <!-- 作用域 --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -615,7 +525,7 @@ Name of the exported scoped variable for the
processed url. The type of the scoped variable is processed url. The type of the scoped variable is
String. String.
</description> </description>
<name>var</name><!-- 处理后的URL作用域变量名称 --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -623,7 +533,7 @@ String.
<description> <description>
Scope for var. Scope for var.
</description> </description>
<name>scope</name><!-- 作用域 --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -631,7 +541,7 @@ Scope for var.
<description> <description>
URL to be processed. URL to be processed.
</description> </description>
<name>value</name><!-- 要处理的URL --> <name>value</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -640,7 +550,7 @@ URL to be processed.
Name of the context when specifying a relative URL Name of the context when specifying a relative URL
resource that belongs to a foreign context. resource that belongs to a foreign context.
</description> </description>
<name>context</name><!-- 上下文名称 --> <name>context</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="ISO-8859-1" ?> <?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- <!--
~ Copyright (c) 2019. ??? ~ Copyright (c) 2019. ???
@ -418,181 +417,3 @@
</tag> </tag>
</taglib> </taglib>

@ -19,16 +19,14 @@
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib> <taglib>
<tlib-version>1.0</tlib-version> <tlib-version>1.0</tlib-version>
<!-- ??????--> <jsp-version>1.2</jsp-version>
<jsp-version>1.2</jsp-version> <short-name>fmt</short-name>
<short-name>fmt</short-name> <uri>http://java.sun.com/jstl/fmt</uri>
<uri>http://java.sun.com/jstl/fmt</uri> <display-name>JSTL fmt</display-name>
<display-name>JSTL fmt</display-name> <description>JSTL 1.0 i18n-capable formatting library</description>
<description>JSTL 1.0 i18n-capable formatting library</description>
<validator> <validator>
<validator-class> <validator-class>
org.apache.taglibs.standard.tlv.JstlFmtTLV org.apache.taglibs.standard.tlv.JstlFmtTLV
</validator-class> </validator-class>

@ -20,156 +20,148 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0"> version="2.0">
<description>JSTL 1.1 i18n-capable formatting library</description>
<display-name>JSTL fmt</display-name>
<tlib-version>1.1</tlib-version>
<short-name>fmt</short-name>
<uri>http://java.sun.com/jsp/jstl/fmt</uri>
<validator>
<description>
Provides core validation features for JSTL tags.
</description>
<validator-class>
org.apache.taglibs.standard.tlv.JstlFmtTLV
</validator-class>
</validator>
<description>JSTL 1.1 i18n-capable formatting library</description> <!-- 描述JSTL 1.1 国际化支持的格式化库 --> <tag>
<display-name>JSTL fmt</display-name> <!-- 标签库的显示名称 --> <description>
<tlib-version>1.1</tlib-version> <!-- 标签库的版本 --> Sets the request character encoding
<short-name>fmt</short-name> <!-- 标签库的简短名称 --> </description>
<uri>http://java.sun.com/jsp/jstl/fmt</uri> <!-- 标签库的URI --> <name>requestEncoding</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class>
<body-content>empty</body-content>
<attribute>
<validator>
<description> <description>
Provides core validation features for JSTL tags. <!-- 描述提供JSTL标签的核心验证功能 --> Name of character encoding to be applied when
decoding request parameters.
</description> </description>
<validator-class> <name>value</name>
org.apache.taglibs.standard.tlv.JstlFmtTLV <required>false</required>
</validator-class><!-- 验证器类 --> <rtexprvalue>true</rtexprvalue>
</validator> </attribute>
<tag>
<description>
Sets the request character encoding <!-- 描述:设置请求的字符编码 -->
</description>
<name>requestEncoding</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
Name of character encoding to be applied when decoding request parameters. <!-- 描述:在解码请求参数时应用的字符编码名称 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Stores the given locale in the locale configuration variable <!-- 描述:将给定的区域设置存储在区域配置变量中 -->
</description>
<name>setLocale</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
A String value is interpreted as the printable representation of a locale, which must contain a two-letter (lower-case) language code (as defined by ISO-639), and may contain a two-letter (upper-case) country code (as defined by ISO-3166). Language and country codes must be separated by hyphen (-) or underscore (_). <!-- 描述字符串值被解释为区域的可打印表示必须包含一个两位小写语言代码根据ISO-639定义并且可以包含一个两位大写国家代码根据ISO-3166定义。语言和国家代码必须用连字符-或下划线_分隔。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Vendor- or browser-specific variant. See the java.util.Locale javadocs for more information on variants. <!-- 描述供应商或浏览器特定的变体。有关变体的更多信息请参见java.util.Locale的Javadoc。 -->
</description>
<name>variant</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of the locale configuration variable. <!-- 描述:区域配置变量的作用域 -->
</description>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Specifies the time zone for any time formatting or parsing actions nested in its body <!-- 描述:指定其主体中嵌套的任何时间格式化或解析操作的时区 -->
</description>
<name>timeZone</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class> <!-- 标签实现类 -->
<body-content>JSP</body-content> <!-- 标签主体内容为JSP -->
<attribute>
<description>
The time zone. A String value is interpreted as a time zone ID. This may be one of the time zone IDs supported by the Java platform (such as "America/Los_Angeles") or a custom time zone ID (such as "GMT-8"). See java.util.TimeZone for more information on supported time zone formats. <!-- 描述时区。字符串值被解释为时区ID。这可以是Java平台支持的时区ID之一如“America/Los_Angeles”或自定义时区ID如“GMT-8”。有关支持的时区格式的更多信息请参见java.util.TimeZone。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
</tag>
<tag>
<description>
Stores the given time zone in the time zone configuration variable <!-- 描述:将给定的时区存储在时区配置变量中 -->
</description>
<name>setTimeZone</name> <!-- 标签名称 -->
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class> <!-- 标签实现类 -->
<body-content>empty</body-content> <!-- 标签主体内容为空 -->
<attribute>
<description>
The time zone. A String value is interpreted as a time zone ID. This may be one of the time zone IDs supported by the Java platform (such as "America/Los_Angeles") or a custom time zone ID (such as "GMT-8"). See java.util.TimeZone for more information on supported time zone formats. <!-- 描述时区。字符串值被解释为时区ID。这可以是Java平台支持的时区ID之一如“America/Los_Angeles”或自定义时区ID如“GMT-8”。有关支持的时区格式的更多信息请参见java.util.TimeZone。 -->
</description>
<name>value</name> <!-- 属性名称 -->
<required>true</required> <!-- 此属性是必须的 -->
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Name of the exported scoped variable which stores the time zone of type java.util.TimeZone. <!-- 描述存储java.util.TimeZone类型的时区的导出作用域变量的名称。 -->
</description>
<name>var</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
<attribute>
<description>
Scope of var or the time zone configuration variable. <!-- 描述var或时区配置变量的作用域。 -->
</description>
<name>scope</name> <!-- 属性名称 -->
<required>false</required> <!-- 此属性不是必须的 -->
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 -->
</attribute>
</tag> </tag>
<tag>
<description>
Stores the given locale in the locale configuration variable
</description>
<name>setLocale</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
A String value is interpreted as the
printable representation of a locale, which
must contain a two-letter (lower-case)
language code (as defined by ISO-639),
and may contain a two-letter (upper-case)
country code (as defined by ISO-3166).
Language and country codes must be
separated by hyphen (-) or underscore
(_).
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Vendor- or browser-specific variant.
See the java.util.Locale javadocs for
more information on variants.
</description>
<name>variant</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Scope of the locale configuration variable.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<description>
Specifies the time zone for any time formatting or parsing actions
nested in its body
</description>
<name>timeZone</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<description>
The time zone. A String value is interpreted as
a time zone ID. This may be one of the time zone
IDs supported by the Java platform (such as
"America/Los_Angeles") or a custom time zone
ID (such as "GMT-8"). See
java.util.TimeZone for more information on
supported time zone formats.
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<description>
Stores the given time zone in the time zone configuration variable
</description>
<name>setTimeZone</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
The time zone. A String value is interpreted as
a time zone ID. This may be one of the time zone
IDs supported by the Java platform (such as
"America/Los_Angeles") or a custom time zone
ID (such as "GMT-8"). See java.util.TimeZone for
more information on supported time zone
formats.
</description>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
Name of the exported scoped variable which
stores the time zone of type
java.util.TimeZone.
</description>
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<description>
Scope of var or the time zone configuration
variable.
</description>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag> <tag>
<description> <description>
@ -187,9 +179,9 @@ form as a fully-qualified class name, that is, it uses
have any file type (such as ".class" or ".properties") have any file type (such as ".class" or ".properties")
suffix. suffix.
</description> </description>
<name>basename</name> <!-- 属性名称 --> <name>basename</name>
<required>true</required> <!-- 此属性是必须的 --> <required>true</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -202,11 +194,6 @@ key of any nested &lt;fmt:message&gt; action.
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
Loads a resource bundle and stores it in the named scoped variable or Loads a resource bundle and stores it in the named scoped variable or
@ -224,9 +211,9 @@ form as a fully-qualified class name, that is, it uses
have any file type (such as ".class" or ".properties") have any file type (such as ".class" or ".properties")
suffix. suffix.
</description> </description>
<name>basename</name> <!-- 属性名称 --> <name>basename</name>
<required>true</required> <!-- 此属性是必须的 --> <required>true</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -235,129 +222,114 @@ the i18n localization context of type
javax.servlet.jsp.jstl.fmt.LocalizationC javax.servlet.jsp.jstl.fmt.LocalizationC
ontext. ontext.
</description> </description>
<name>var</name> <!-- 属性名称 --> <name>var</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute>
</attribute>
<attribute> <attribute>
<description> <description>
Scope of var or the localization context Scope of var or the localization context
configuration variable.<!-- 描述var或本地化上下文配置变量的作用域。 --> configuration variable.
</description> </description>
<name>scope</name> <!-- 属性名称 --> <name>scope</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
Maps key to localized message and performs parametric replacement<!-- 描述:将键映射到本地化消息,并进行参数替换 --> Maps key to localized message and performs parametric replacement
</description> </description>
<name>message</name> <!-- 标签名称 --> <name>message</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class> <!-- 标签实现类 --> <tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class>
<body-content>JSP</body-content> <!-- 标签主体内容为JSP --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Message key to be looked up.<!-- 描述:要查找的消息键。 --> Message key to be looked up.
</description> </description>
<name>key</name> <!-- 属性名称 --> <name>key</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Localization context in whose resource Localization context in whose resource
bundle the message key is looked up.<!-- 描述:在其资源包中查找消息键的本地化上下文。 --> bundle the message key is looked up.
</description> </description>
<name>bundle</name> <!-- 属性名称 --> <name>bundle</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute>
<attribute>
<description> <description>
Name of the exported scoped variable Name of the exported scoped variable
which stores the localized message.<!-- 描述:存储本地化消息的导出作用域变量的名称。 --> which stores the localized message.
</description> </description>
<name>var</name> <!-- 属性名称 --> <name>var</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Scope of var.<!-- 描述var的作用域。 --> Scope of var.
</description> </description>
<name>scope</name> <!-- 属性名称 --> <name>scope</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>false</rtexprvalue> <!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
Supplies an argument for parametric replacement to a containing Supplies an argument for parametric replacement to a containing
&lt;message&gt; tag<!-- 描述:为包含的<message>标签提供参数替换的参数 --> &lt;message&gt; tag
</description> </description>
<name>param</name> <!-- 标签名称 --> <name>param</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class> <!-- 标签实现类 --> <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class>
<body-content>JSP</body-content> <!-- 标签主体内容为JSP --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Argument used for parametric replacement.<!-- 描述:用于参数替换的参数。 --> Argument used for parametric replacement.
</description> </description>
<name>value</name> <!-- 属性名称 --> <name>value</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description> <description>
Formats a numeric value as a number, currency, or percentage<!-- 描述:将数字值格式化为数字、货币或百分比 --> Formats a numeric value as a number, currency, or percentage
</description> </description>
<name>formatNumber</name> <!-- 标签名称 --> <name>formatNumber</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class> <!-- 标签实现类 --> <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class>
<body-content>JSP</body-content> <!-- 标签主体内容为JSP --> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Numeric value to be formatted.<!-- 描述:要格式化的数字值。 --> Numeric value to be formatted.
</description> </description>
<name>value</name> <!-- 属性名称 --> <name>value</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Specifies whether the value is to be Specifies whether the value is to be
formatted as number, currency, or formatted as number, currency, or
percentage.<!-- 描述:指定值是否格式化为数字、货币或百分比。 --> percentage.
</description> </description>
<name>type</name> <!-- 属性名称 --> <name>type</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Custom formatting pattern.<!-- 描述:自定义格式化模式。 --> Custom formatting pattern.
</description> </description>
<name>pattern</name> <!-- 属性名称 --> <name>pattern</name>
<required>false</required> <!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -365,9 +337,9 @@ ISO 4217 currency code. Applied only
when formatting currencies (i.e. if type is when formatting currencies (i.e. if type is
equal to "currency"); ignored otherwise. equal to "currency"); ignored otherwise.
</description> </description>
<name>currencyCode</name><!-- 属性名称 --> <name>currencyCode</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -375,30 +347,25 @@ Currency symbol. Applied only when
formatting currencies (i.e. if type is equal formatting currencies (i.e. if type is equal
to "currency"); ignored otherwise. to "currency"); ignored otherwise.
</description> </description>
<name>currencySymbol</name><!-- 属性名称 --> <name>currencySymbol</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description>
<description>
Specifies whether the formatted output Specifies whether the formatted output
will contain any grouping separators. will contain any grouping separators.
</description> </description>
<name>groupingUsed</name><!-- 属性名称 --> <name>groupingUsed</name>
<required>false</required><!-- 此属性不是必须的 --> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Maximum number of digits in the integer Maximum number of digits in the integer
portion of the formatted output.<!-- 描述:自定义格式化模式。 --> portion of the formatted output.
</description> </description>
<name>maxIntegerDigits</name><!--max--> <name>maxIntegerDigits</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
@ -406,7 +373,7 @@ portion of the formatted output.<!-- 描述:自定义格式化模式。 -->
<description> <description>
Minimum number of digits in the integer Minimum number of digits in the integer
portion of the formatted output. portion of the formatted output.
</description><!--注释货币--> </description>
<name>minIntegerDigits</name> <name>minIntegerDigits</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
@ -414,16 +381,11 @@ portion of the formatted output.
<attribute> <attribute>
<description> <description>
Maximum number of digits in the Maximum number of digits in the
fractional portion of the formatted output.<!--货币最大值--> fractional portion of the formatted output.
</description> </description>
<name>maxFractionDigits</name> <name>maxFractionDigits</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue>
<rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
@ -440,22 +402,17 @@ Name of the exported scoped variable
which stores the formatted result as a which stores the formatted result as a
String. String.
</description> </description>
<name>var</name><!--属性明1--> <name>var</name>
<required>false</required><!----> <required>false</required>
<rtexprvalue>false</rtexprvalue>
<rtexprvalue>false</rtexprvalue><!---->
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Scope of var. Scope of var.
</description> </description>
<name>scope</name><!----> <name>scope</name>
<required>false</required><!----> <required>false</required>
<rtexprvalue>false</rtexprvalue><!----> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
</tag> </tag>
@ -471,37 +428,27 @@ Scope of var.
String to be parsed. String to be parsed.
</description> </description>
<name>value</name> <name>value</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Specifies whether the string in the value<!----> Specifies whether the string in the value
attribute should be parsed as a number, attribute should be parsed as a number,
currency, or percentage. currency, or percentage.
</description> </description>
<name>type</name> <name>type</name>
<required>false</required><!----> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
<!--Custom formatting pattern that determines Custom formatting pattern that determines
how the string in the value attribute is to be how the string in the value attribute is to be
parsed.--> parsed.
</description><!----> </description>
<name>pattern</name> <name>pattern</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
@ -513,29 +460,24 @@ operation, or to which the pattern specified
via the pattern attribute (if present) is via the pattern attribute (if present) is
applied. applied.
</description> </description>
<name>parseLocale</name><!----> <name>parseLocale</name>
<required>false</required><!----> <required>false</required>
<rtexprvalue>true</rtexprvalue><!----> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
<!--Specifies whether just the integer portion of Specifies whether just the integer portion of
the given value should be parsed.--> the given value should be parsed.
</description> </description>
<name>integerOnly</name> <name>integerOnly</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
<!--Name of the exported scoped variable which Name of the exported scoped variable which
stores the parsed result (of type stores the parsed result (of type
java.lang.Number).--> java.lang.Number).
</description> </description>
<name>var</name> <name>var</name>
<required>false</required> <required>false</required>
@ -545,7 +487,7 @@ java.lang.Number).-->
<description> <description>
Scope of var. Scope of var.
</description> </description>
<name>scope</name><!-- 不允许使用运行时表达式 --> <name>scope</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
@ -553,7 +495,7 @@ Scope of var.
<tag> <tag>
<description> <description>
<!--Formats a date and/or time using the supplied styles and pattern--> Formats a date and/or time using the supplied styles and pattern
</description> </description>
<name>formatDate</name> <name>formatDate</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
@ -563,14 +505,9 @@ Scope of var.
Date and/or time to be formatted. Date and/or time to be formatted.
</description> </description>
<name>value</name> <name>value</name>
<required>true</required><!-- 不允许使用运行时表达式 --> <required>true</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute>
</attribute>
<attribute> <attribute>
<description> <description>
Specifies whether the time, the date, or both Specifies whether the time, the date, or both
@ -578,7 +515,7 @@ the time and date components of the given
date are to be formatted. date are to be formatted.
</description> </description>
<name>type</name> <name>type</name>
<required>false</required><!-- 不允许使用运行时表达式 --> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
@ -591,12 +528,7 @@ time (i.e. if type is missing or is equal to
"date" or "both"); ignored otherwise. "date" or "both"); ignored otherwise.
</description> </description>
<name>dateStyle</name> <name>dateStyle</name>
<required>false</required>
<required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
@ -616,69 +548,64 @@ ignored otherwise.
<description> <description>
Custom formatting style for dates and times. Custom formatting style for dates and times.
</description> </description>
<name>pattern</name><!-- 属性名称 --> <name>pattern</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute><!-- 描述:自定义格式化模式。 --> </attribute>
<attribute> <attribute>
<description> <description>
Time zone in which to represent the formatted Time zone in which to represent the formatted
time. time.
</description> </description>
<name>timeZone</name> <name>timeZone</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 描述:自定义格式化模式。 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Name of the exported scoped variable which<!-- 描述:自定义格式化模式。 --> Name of the exported scoped variable which
stores the formatted result as a String. stores the formatted result as a String.
</description> </description>
<name>var</name><!-- 属性名称 --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Scope of var. Scope of var.
</description><!----> </description>
<name>scope</name><!-- 属性名称 --> <name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<required>false</required><!---->
<rtexprvalue>false</rtexprvalue><!-- 描述:自定义格式化模式。 -->
</attribute> </attribute>
</tag> </tag>
<tag> <tag>
<description><!-- 描述:自定义格式化模式。 --> <description>
Parses the string representation of a date and/or time Parses the string representation of a date and/or time
</description> </description>
<name>parseDate</name><!----> <name>parseDate</name>
<tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class> <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class>
<body-content>JSP</body-content> <body-content>JSP</body-content>
<attribute> <attribute>
<description> <description>
Date string to be parsed. Date string to be parsed.
</description> </description>
<name>value</name><!-- 描述:自定义格式化模式。 --> <name>value</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!----> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description> <description>
Specifies whether the date string in the Specifies whether the date string in the
value attribute is supposed to contain a value attribute is supposed to contain a
time, a date, or both. time, a date, or both.
</description><!-- 描述:自定义格式化模式。 --> </description>
<name>type</name><!-- 属性名称 --> <name>type</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute><!----> <attribute>
<description> <description>
Predefined formatting style for days Predefined formatting style for days
which determines how the date which determines how the date
@ -688,10 +615,10 @@ date or both a date and time (i.e. if type
is missing or is equal to "date" or "both"); is missing or is equal to "date" or "both");
ignored otherwise. ignored otherwise.
</description> </description>
<name>dateStyle</name><!-- 描述:自定义格式化模式。 --> <name>dateStyle</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute><!----> </attribute>
<attribute> <attribute>
<description> <description>
Predefined formatting styles for times Predefined formatting styles for times
@ -701,33 +628,28 @@ parsed. Applied only when formatting a
time or both a date and time (i.e. if type time or both a date and time (i.e. if type
is equal to "time" or "both"); ignored is equal to "time" or "both"); ignored
otherwise. otherwise.
</description><!----> </description>
<name>timeStyle</name><!-- 属性名称 --> <name>timeStyle</name>
<required>false</required><!-- 描述:自定义格式化模式。 --> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description><!----> <description>
Custom formatting pattern which Custom formatting pattern which
determines how the date string is to be determines how the date string is to be
parsed. parsed.
</description> </description>
<name>pattern</name><!-- 属性名称 --> <name>pattern</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description><!----> <description>
Time zone in which to interpret any time Time zone in which to interpret any time
information in the date string.<!-- 描述:自定义格式化模式。 --> information in the date string.
</description> </description>
<name>timeZone</name><!-- 属性名称 --> <name>timeZone</name>
<required>false</required>
<required>false</required><!-- 不允许使用运行时表达式 -->
<rtexprvalue>true</rtexprvalue> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
@ -738,33 +660,28 @@ the parse operation, or to which the
pattern specified via the pattern pattern specified via the pattern
attribute (if present) is applied. attribute (if present) is applied.
</description> </description>
<name>parseLocale</name><!-- 属性名称 --> <name>parseLocale</name>
<required>false</required> <required>false</required>
<rtexprvalue>true</rtexprvalue><!-- 允许使用运行时表达式 --> <rtexprvalue>true</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description><!-- 描述:自定义格式化模式。 --> <description>
Name of the exported scoped variable in Name of the exported scoped variable in
which the parsing result (of type which the parsing result (of type
java.util.Date) is stored. java.util.Date) is stored.
</description> </description>
<name>var</name><!-- 属性名称 --> <name>var</name>
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute> </attribute>
<attribute> <attribute>
<description><!-- 描述:自定义格式化模式。 --> <description>
Scope of var. Scope of var.
</description>
<name>scope</name>
</description>
<name>scope</name><!-- 属性名称 -->
<required>false</required> <required>false</required>
<rtexprvalue>false</rtexprvalue><!-- 不允许使用运行时表达式 --> <rtexprvalue>false</rtexprvalue>
</attribute><!-- 描述:自定义格式化模式。 --> </attribute>
</tag> </tag>
</taglib> </taglib>

@ -1,9 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!-- <!--
~ Copyright (c) 2019. 黄钰朝 ~ Copyright (c) 2019. 黄钰朝
~ ~
@ -20,81 +16,41 @@
~ limitations under the License. ~ limitations under the License.
--> -->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0"> version="2.0">
<!-- 描述JSTL 1.1函数库 -->
<description>JSTL 1.1 functions library</description> <description>JSTL 1.1 functions library</description>
<!-- 显示名称 -->
<display-name>JSTL functions</display-name> <display-name>JSTL functions</display-name>
<!-- JSTL版本 -->
<tlib-version>1.1</tlib-version> <tlib-version>1.1</tlib-version>
<!-- 短名称 -->
<short-name>fn</short-name> <short-name>fn</short-name>
<!-- URI -->
<uri>http://java.sun.com/jsp/jstl/functions</uri> <uri>http://java.sun.com/jsp/jstl/functions</uri>
<!-- 定义一个函数 -->
<function> <function>
<!-- 函数描述 -->
<description> <description>
Tests if an input string contains the specified substring. Tests if an input string contains the specified substring.
</description> </description>
<!-- 函数名称 -->
<name>contains</name> <name>contains</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class> <function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature> <function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example> <example>
&lt;c:if test="${fn:contains(name, searchString)}"> &lt;c:if test="${fn:contains(name, searchString)}">
</example> </example>
</function> </function>
<!-- 定义一个函数 -->
<function> <function>
<!-- 函数描述 -->
<description> <description>
Tests if an input string contains the specified substring in a case insensitive way. Tests if an input string contains the specified substring in a case insensitive way.
</description> </description>
<!-- 函数名称 -->
<name>containsIgnoreCase</name> <name>containsIgnoreCase</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class> <function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean containsIgnoreCase(java.lang.String, java.lang.String)</function-signature> <function-signature>boolean containsIgnoreCase(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example> <example>
&lt;c:if test="${fn:containsIgnoreCase(name, searchString)}"> &lt;c:if test="${fn:containsIgnoreCase(name, searchString)}">
</example> </example>
</function> </function>
<!-- 测试输入字符串是否以指定的后缀结尾 -->
<function> <function>
<description> <description>
Tests if an input string ends with the specified suffix. Tests if an input string ends with the specified suffix.
@ -107,8 +63,6 @@
</example> </example>
</function> </function>
<!-- 转义XML标记 -->
<function> <function>
<description> <description>
Escapes characters that could be interpreted as XML markup. Escapes characters that could be interpreted as XML markup.
@ -121,8 +75,6 @@
</example> </example>
</function> </function>
<!-- 返回字符串中指定子字符串第一次出现的索引 -->
<function> <function>
<description> <description>
Returns the index withing a string of the first occurrence of a specified substring. Returns the index withing a string of the first occurrence of a specified substring.
@ -135,10 +87,6 @@
</example> </example>
</function> </function>
<!-- 将数组的所有元素连接成一个字符串 -->
<!-- 将数组中的所有元素连接成一个字符串 -->
<function> <function>
<description> <description>
Joins all elements of an array into a string. Joins all elements of an array into a string.
@ -151,8 +99,6 @@
</example> </example>
</function> </function>
<!-- 返回集合中的项目数,或字符串中的字符数 -->
<function> <function>
<description> <description>
Returns the number of items in a collection, or the number of characters in a string. Returns the number of items in a collection, or the number of characters in a string.
@ -165,8 +111,6 @@
</example> </example>
</function> </function>
<!-- 返回一个字符串,该字符串是通过将输入字符串中的所有"before"字符串替换为"after"子字符串得到的 -->
<function> <function>
<description> <description>
Returns a string resulting from replacing in an input string all occurrences Returns a string resulting from replacing in an input string all occurrences
@ -180,10 +124,6 @@
</example> </example>
</function> </function>
<!-- 将字符串分割成一个子字符串数组 -->
<!-- 将字符串分割成子字符串数组 -->
<function> <function>
<description> <description>
Splits a string into an array of substrings. Splits a string into an array of substrings.
@ -196,8 +136,6 @@
</example> </example>
</function> </function>
<!-- 测试输入字符串是否以指定的前缀开头 -->
<function> <function>
<description> <description>
Tests if an input string starts with the specified prefix. Tests if an input string starts with the specified prefix.
@ -210,8 +148,6 @@
</example> </example>
</function> </function>
<!-- 返回字符串的子集 -->
<function> <function>
<description> <description>
Returns a subset of a string. Returns a subset of a string.
@ -224,8 +160,6 @@
</example> </example>
</function> </function>
<!-- 返回字符串在特定子字符串之后的子集 -->
<function> <function>
<description> <description>
Returns a subset of a string following a specific substring. Returns a subset of a string following a specific substring.
@ -238,8 +172,6 @@
</example> </example>
</function> </function>
<!-- 返回字符串在特定子字符串之前的子集 -->
<function> <function>
<description> <description>
Returns a subset of a string before a specific substring. Returns a subset of a string before a specific substring.
@ -252,8 +184,6 @@
</example> </example>
</function> </function>
<!-- 将字符串中的所有字符转换为小写 -->
<function> <function>
<description> <description>
Converts all of the characters of a string to lower case. Converts all of the characters of a string to lower case.
@ -266,8 +196,6 @@
</example> </example>
</function> </function>
<!-- 将字符串中的所有字符转换为大写 -->
<function> <function>
<description> <description>
Converts all of the characters of a string to upper case. Converts all of the characters of a string to upper case.
@ -280,8 +208,6 @@
</example> </example>
</function> </function>
<!-- 去除字符串两端的空白字符 -->
<function> <function>
<description> <description>
Removes white spaces from both ends of a string. Removes white spaces from both ends of a string.
@ -295,301 +221,3 @@
</function> </function>
</taglib> </taglib>
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Copyright (c) 2019. 黄钰朝
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 描述JSTL 1.1函数库 -->
<description>JSTL 1.1 functions library</description>
<!-- 显示名称 -->
<display-name>JSTL functions</display-name>
<!-- JSTL版本 -->
<tlib-version>1.1</tlib-version>
<!-- 短名称 -->
<short-name>fn</short-name>
<!-- URI -->
<uri>http://java.sun.com/jsp/jstl/functions</uri>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring.
</description>
<!-- 函数名称 -->
<name>contains</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:contains(name, searchString)}">
</example>
</function>
<!-- 定义一个函数 -->
<function>
<!-- 函数描述 -->
<description>
Tests if an input string contains the specified substring in a case insensitive way.
</description>
<!-- 函数名称 -->
<name>containsIgnoreCase</name>
<!-- 函数所属类 -->
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<!-- 函数签名 -->
<function-signature>boolean containsIgnoreCase(java.lang.String, java.lang.String)</function-signature>
<!-- 函数示例 -->
<example>
&lt;c:if test="${fn:containsIgnoreCase(name, searchString)}">
</example>
</function>
<!-- 测试输入字符串是否以指定的后缀结尾 -->
<function>
<description>
Tests if an input string ends with the specified suffix.
</description>
<name>endsWith</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>boolean endsWith(java.lang.String, java.lang.String)</function-signature>
<example>
&lt;c:if test="${fn:endsWith(filename, ".txt")}">
</example>
</function>
<!-- 转义XML标记 -->
<function>
<description>
Escapes characters that could be interpreted as XML markup.
</description>
<name>escapeXml</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String escapeXml(java.lang.String)</function-signature>
<example>
${fn:escapeXml(param:info)}
</example>
</function>
<!-- 返回字符串中指定子字符串第一次出现的索引 -->
<function>
<description>
Returns the index withing a string of the first occurrence of a specified substring.
</description>
<name>indexOf</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>int indexOf(java.lang.String, java.lang.String)</function-signature>
<example>
${fn:indexOf(name, "-")}
</example>
</function>
<!-- 将数组的所有元素连接成一个字符串 -->
<!-- 将数组中的所有元素连接成一个字符串 -->
<function>
<description>
Joins all elements of an array into a string.
</description>
<name>join</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String join(java.lang.String[], java.lang.String)</function-signature>
<example>
${fn:join(array, ";")}
</example>
</function>
<!-- 返回集合中的项目数,或字符串中的字符数 -->
<function>
<description>
Returns the number of items in a collection, or the number of characters in a string.
</description>
<name>length</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>int length(java.lang.Object)</function-signature>
<example>
You have ${fn:length(shoppingCart.products)} in your shopping cart.
</example>
</function>
<!-- 返回一个字符串,该字符串是通过将输入字符串中的所有"before"字符串替换为"after"子字符串得到的 -->
<function>
<description>
Returns a string resulting from replacing in an input string all occurrences
of a "before" string into an "after" substring.
</description>
<name>replace</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String replace(java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>
${fn:replace(text, "-", "&#149;")}
</example>
</function>
<!-- 将字符串分割成一个子字符串数组 -->
<!-- 将字符串分割成子字符串数组 -->
<function>
<description>
Splits a string into an array of substrings.
</description>
<name>split</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String[] split(java.lang.String, java.lang.String)</function-signature>
<example>
${fn:split(customerNames, ";")}
</example>
</function>
<!-- 测试输入字符串是否以指定的前缀开头 -->
<function>
<description>
Tests if an input string starts with the specified prefix.
</description>
<name>startsWith</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>boolean startsWith(java.lang.String, java.lang.String)</function-signature>
<example>
&lt;c:if test="${fn:startsWith(product.id, "100-")}">
</example>
</function>
<!-- 返回字符串的子集 -->
<function>
<description>
Returns a subset of a string.
</description>
<name>substring</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substring(java.lang.String, int, int)</function-signature>
<example>
P.O. Box: ${fn:substring(zip, 6, -1)}
</example>
</function>
<!-- 返回字符串在特定子字符串之后的子集 -->
<function>
<description>
Returns a subset of a string following a specific substring.
</description>
<name>substringAfter</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substringAfter(java.lang.String, java.lang.String)</function-signature>
<example>
P.O. Box: ${fn:substringAfter(zip, "-")}
</example>
</function>
<!-- 返回字符串在特定子字符串之前的子集 -->
<function>
<description>
Returns a subset of a string before a specific substring.
</description>
<name>substringBefore</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String substringBefore(java.lang.String, java.lang.String)</function-signature>
<example>
Zip (without P.O. Box): ${fn:substringBefore(zip, "-")}
</example>
</function>
<!-- 将字符串中的所有字符转换为小写 -->
<function>
<description>
Converts all of the characters of a string to lower case.
</description>
<name>toLowerCase</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String toLowerCase(java.lang.String)</function-signature>
<example>
Product name: ${fn.toLowerCase(product.name)}
</example>
</function>
<!-- 将字符串中的所有字符转换为大写 -->
<function>
<description>
Converts all of the characters of a string to upper case.
</description>
<name>toUpperCase</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String toUpperCase(java.lang.String)</function-signature>
<example>
Product name: ${fn.UpperCase(product.name)}
</example>
</function>
<!-- 去除字符串两端的空白字符 -->
<function>
<description>
Removes white spaces from both ends of a string.
</description>
<name>trim</name>
<function-class>org.apache.taglibs.standard.functions.Functions</function-class>
<function-signature>java.lang.String trim(java.lang.String)</function-signature>
<example>
Name: ${fn.trim(name)}
</example>
</function>
</taglib>

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!-- <!--
~ Copyright (c) 2019. 黄钰朝 ~ Copyright (c) 2019. 黄钰朝
~ ~
@ -19,58 +16,29 @@
~ limitations under the License. ~ limitations under the License.
--> -->
<!-- 定义一个标签库 -->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0"> version="2.0">
<!-- 标签库的描述 -->
<description> <description>
Restricts JSP pages to the JSTL tag libraries Restricts JSP pages to the JSTL tag libraries
</description> </description>
<!-- 标签库的显示名称 -->
<display-name>permittedTaglibs</display-name> <display-name>permittedTaglibs</display-name>
<!-- 标签库的版本号 -->
<tlib-version>1.1</tlib-version> <tlib-version>1.1</tlib-version>
<!-- 标签库的简称 -->
<short-name>permittedTaglibs</short-name> <short-name>permittedTaglibs</short-name>
<!-- 标签库的URI -->
<uri>http://jakarta.apache.org/taglibs/standard/permittedTaglibs</uri> <uri>http://jakarta.apache.org/taglibs/standard/permittedTaglibs</uri>
<!-- 验证器 -->
<validator> <validator>
<!-- 验证器的类 -->
<validator-class> <validator-class>
javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV
</validator-class> </validator-class>
<!-- 初始化参数 -->
<init-param> <init-param>
<!-- 参数的描述 -->
<description> <description>
Whitespace-separated list of taglib URIs to permit. This example Whitespace-separated list of taglib URIs to permit. This example
TLD for the Standard Taglib allows only JSTL 'el' taglibs to be TLD for the Standard Taglib allows only JSTL 'el' taglibs to be
imported. imported.
</description> </description>
<!-- 参数的名称 -->
<param-name>permittedTaglibs</param-name> <param-name>permittedTaglibs</param-name>
<!-- 参数的值 -->
<param-value> <param-value>
http://java.sun.com/jsp/jstl/core http://java.sun.com/jsp/jstl/core
http://java.sun.com/jsp/jstl/fmt http://java.sun.com/jsp/jstl/fmt

@ -24,12 +24,7 @@
Validates JSP pages to prohibit use of scripting elements. Validates JSP pages to prohibit use of scripting elements.
</description> </description>
<tlib-version>1.1</tlib-version> <tlib-version>1.1</tlib-version>
<!--版本序号-->
<short-name>scriptfree</short-name> <short-name>scriptfree</short-name>
<!--段字符-->
<uri>http://jakarta.apache.org/taglibs/standard/scriptfree</uri> <uri>http://jakarta.apache.org/taglibs/standard/scriptfree</uri>
<validator> <validator>
@ -45,11 +40,6 @@
</description> </description>
<param-name>allowDeclarations</param-name> <param-name>allowDeclarations</param-name>
<param-value>false</param-value> <param-value>false</param-value>
<!--类别方式-->
</init-param> </init-param>
<init-param> <init-param>
<description> <description>
@ -62,19 +52,10 @@
<description> <description>
Controls whether or not top-level expressions are considered valid. Controls whether or not top-level expressions are considered valid.
</description> </description>
<param-name>allowExpressions</param-name><!-- 属性类型 --> <param-name>allowExpressions</param-name>
<param-value>false</param-value> <param-value>false</param-value>
</init-param> </init-param>
<init-param><!-- 当前项的作用域变量名称 --> <init-param>
<description> <description>
Controls whether or not expressions used to supply request-time Controls whether or not expressions used to supply request-time
attribute values are considered valid. attribute values are considered valid.

File diff suppressed because it is too large Load Diff

@ -34,7 +34,7 @@
</br> </br>
<strong><p align="center">${message}</p></strong> <strong><p align="center">${message}</p></strong>
</br> </br>
</div><!--ok--> </div>
</div> </div>
<hr> <hr>
</body> </body>

File diff suppressed because it is too large Load Diff

@ -21,220 +21,132 @@
Time: 3:51 Time: 3:51
To change this template use File | Settings | File Templates. To change this template use File | Settings | File Templates.
--%> --%>
<%--
页面指令,设置页面的内容类型、字符集、脚本语言和页面编码。
contentType 指定了返回给客户端的内容类型为 HTML并使用 UTF-8 编码。
language 指定了页面中使用的脚本语言为 Java。
pageEncoding 明确指定了页面本身的编码为 UTF-8虽然通常与 contentType 中的 charset 相同,但在这里为了清晰起见还是单独设置了。
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%--
引入 JSTL 核心标签库,前缀为 c。
这允许我们在 JSP 页面中使用 JSTL 标签,如 <c:set>、<c:if> 等。
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
使用 <c:set> 标签设置一个名为 host 的变量,其值为 "localhost:8080/wechat"。
这个变量稍后在页面中用于构建 URL。
--%>
<c:set var="host" value="localhost:8080/wechat"/> <c:set var="host" value="localhost:8080/wechat"/>
<%--设置主机名--%> <%--设置主机名--%>
<!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <%-- 设置页面的字符集为 UTF-8 --%> <meta charset="utf-8">
<title>wechat</title> <%-- 页面标题 --%> <title>wechat</title>
<link rel="shortcut icon" type=image/x-icon href=https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico>
<%-- 引入微信图标 --%>
<link rel="shortcut icon" type="image/x-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico">
<%-- 引入 Bootstrap CSS 框架 --%>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<%-- 引入 jQuery 库 --%>
<script src="${pageContext.request.contextPath}/static/js/jquery-3.4.1.js"></script> <script src="${pageContext.request.contextPath}/static/js/jquery-3.4.1.js"></script>
<%--
发送请求脚本的占位符,目前为空。
可以在这里添加 JavaScript 代码来处理发送请求的逻辑。
--%>
<!--BEGIN——发送请求脚本--> <!--BEGIN——发送请求脚本-->
<!--END——发送请求脚本--> <!--END——发送请求脚本-->
</head> </head>
<body> <body>
<%-- 页面背景容器 --%>
<div class="background"> <div class="background">
<%-- 页面头部--%>
<%-- 页面头部 --%>
<div class="login-head" style="height: 100px"> <div class="login-head" style="height: 100px">
<%-- 使用 Bootstrap 的 jumbotron 类来创建一个醒目的容器 --%>
<div class="jumbotron" style="padding-bottom: 20px;padding-top:20px;margin:0px"> <div class="jumbotron" style="padding-bottom: 20px;padding-top:20px;margin:0px">
<%-- 包含微信 logo 和标语的区域 --%>
<div class="logo"> <div class="logo">
<a href="${pageContext.request.contextPath}/index.jsp" <a href="${pageContext.request.contextPath}/index.jsp"
style="color: #999;font-size: 44px;text-decoration: none"> style="color: #999;font-size: 44px;text-decoration: none"><img
<img src="${pageContext.request.contextPath}/static/img/logo.png" alt="logo" src="${pageContext.request.contextPath}/static/img/logo.png" alt="logo"
style="width: 100px;margin: 10px"> style="width: 100px;margin: 10px">微信,是一种生活方式</h2>
<%-- 注意:这里的 <h2> 标签被错误地关闭了,应该使用 </a> 来关闭 <a> 标签,而不是 </h2> --%> </a>
微信,是一种生活方式</a> <%-- 这里应该使用正确的 HTML 结构,但原代码有误,已按原样注释 --%>
</a> <%-- 这是一个多余的闭合标签,应该删除 --%>
</div> </div>
</div> </div>
</div> </div>
<%--
使用 <c:if> 标签检查 message 变量是否不为 null。
如果不为 null则使用 JavaScript 显示一个警告框。
--%>
<script> <script>
<c:if test="${message!=null}"> <c:if test="${message!=null}">
alert("系统提示:${message}"); alert("系统提示:${message}");
</c:if> </c:if>
</script> </script>
<%-- 输入框容器 --%>
<div class="input-box"> <div class="input-box">
<%-- 输入字段的容器,带有自定义样式 --%>
<div class="color-input-field"> <div class="color-input-field">
<form action="http://${host}/wechat/user?method=login.do" method="post">
<%--
表单,提交到 http://${host}/wechat/user?method=login.do。
使用 POST 方法提交。
--%>
<form action="http://${host}/wechat/user?method=login.do" method="post">
<%--
一个隐藏的提交按钮,可能用于触发某些 JavaScript 事件,但在这里被设置为不显示。
--%>
<input id="index" type="submit" style="display: none"> <input id="index" type="submit" style="display: none">
<h2 class="input-box-title">邮箱登陆</h2>
<%-- 输入框标题 --%> <input type="text" required="required" class="form-control" id="email"
<h2 class="input-box-title">邮箱登陆</h2> value="${param.email}" name="email" placeholder="请输入登陆邮箱" >
<br/>
<%-- 邮箱输入框,带有占位符和必填验证 --%> <input id="password" type="password" required="required" class="form-control" name="password"
<input type="text" required="required" class="form-control" id="email" placeholder="请输入密码">
value="${param.email}" name="email" placeholder="请输入登陆邮箱"> <div class="remember-me">
<br/> <input id="option" name="auto_login" type="checkbox" value="true">记住登陆
</div>
<%-- 密码输入框,带有占位符和必填验证 --%> <input type="submit" class="submit-button" value="登陆">
<input id="password" type="password" required="required" class="form-control" name="password" <br>
placeholder="请输入密码"> <div class="switch-button">
<a href="${pageContext.request.contextPath}/register.jsp">立即注册</a>
<%-- 记住登陆选项 --%> <a href="http://${host}/wechat/user?method=login.do&email=visitor" onclick="visitor()">| 游客模式</a>
<div class="remember-me"> </div>
<input id="option" name="auto_login" type="checkbox" value="true">记住登陆
</div>
<%-- 提交按钮 --%>
<input type="submit" class="submit-button" value="登陆">
<br>
<%-- 切换按钮,包含注册链接和游客模式链接 --%>
<div class="switch-button">
<a href="${pageContext.request.contextPath}/register.jsp">立即注册</a>
<%--
游客模式链接,带有 onclick 事件处理器(尽管这里没有定义 visitor() 函数,可能需要在 JavaScript 中定义)。
注意:这里的 URL 拼接方式可能会导致安全问题,建议使用更安全的参数传递方式。
--%>
<a href="http://${host}/wechat/user?method=login.do&email=visitor" onclick="visitor()">| 游客模式</a>
</div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</body>
</html>
<!-- 网页的结束body标签通常表示HTML文档的主体内容结束 -->
</body> </body>
<!-- 定义CSS样式 -->
<style type="text/css"> <style type="text/css">
/* 设置背景样式 */
.background { .background {
height: -webkit-fill-available; /* 高度填充可用空间针对webkit浏览器 */ height: -webkit-fill-available;
min-height: 750px; /* 最小高度 */ min-height: 750px;
text-align: center; /* 文本居中 */ text-align: center;
font-size: 14px; /* 字体大小 */ font-size: 14px;
background-color: #f1f1f1; /* 背景颜色 */ background-color: #f1f1f1;
z-index: -1; /* 堆叠顺序,设置为-1表示在其他元素之下 */ z-index: -1;
} }
/* 设置logo样式 */
.logo { .logo {
position: absolute; /* 绝对定位 */ position: absolute;
top: 56px; /* 距离顶部56px */ top: 56px;
margin-left: 50px; /* 距离左侧50px */ margin-left: 50px;
} }
/* 设置表单控件样式 */
.form-control { .form-control {
padding: 10px; /* 内边距 */ padding: 10px;
min-height: 55px; /* 最小高度 */ min-height: 55px;
max-height: 70px; /* 最大高度 */ max-height: 70px;
font-size: 22px; /* 字体大小 */ font-size: 22px;
} }
/* 设置输入框标题样式 */
.input-box-title { .input-box-title {
text-align: center; /* 文本居中 */ text-align: center;
margin: 0 auto 50px; /* 上下外边距自动底部外边距50px */ margin: 0 auto 50px;
padding: 10px; /* 内边距 */ padding: 10px;
font-weight: 400; /* 字体粗细 */ font-weight: 400;
color: #969696 /* 字体颜色 */ color: #969696
} }
/* 设置颜色输入框样式 */
.color-input-field { .color-input-field {
padding: 50px; /* 内边距 */ padding: 50px;
font-size: 22px; /* 字体大小 */ font-size: 22px;
height: 625px; /* 高度 */ height: 625px;
width: 500px /* 宽度 */ width: 500px
} }
/* 设置输入框容器样式 */
.input-box { .input-box {
width: fit-content; /* 宽度适应内容 */ width: fit-content;
margin: 104px auto; /* 上下外边距104px左右外边距自动 */ margin: 104px auto;
background-color: #fff; /* 背景颜色 */ background-color: #fff;
border-radius: 4px; /* 边框圆角 */ border-radius: 4px;
box-shadow: 0 0 8px rgba(0, 0, 0, .1); /* 盒子阴影 */ box-shadow: 0 0 8px rgba(0, 0, 0, .1);
vertical-align: middle; /* 垂直对齐方式 */ vertical-align: middle;
} }
/* 设置提交按钮样式 */
.submit-button { .submit-button {
margin-top: 20px; /* 上外边距 */ margin-top: 20px;
background-color: #1AAD19; /* 背景颜色 */ background-color: #1AAD19;
color: #FFFFFF; /* 字体颜色 */ color: #FFFFFF;
padding: 9px 18px; /* 内边距 */ padding: 9px 18px;
border-radius: 5px; /* 边框圆角 */ border-radius: 5px;
outline: none; /* 移除默认轮廓 */ outline: none;
border: none; /* 无边框 */ border: none;
width: 100%; /* 宽度100% */ width: 100%;
} }
/* 设置记住我选项样式 */
.remember-me { .remember-me {
float: left; /* 左浮动 */ float: left;
font-weight: 400; /* 字体粗细 */ font-weight: 400;
color: #969696; /* 字体颜色 */ color: #969696;
margin-top: 20px; /* 上外边距 */ margin-top: 20px;
} }
/* 设置切换按钮容器样式 */
.switch-button { .switch-button {
text-align: left; /* 文本左对齐 */ text-align: left;
} }
</style>
<!-- 网页的结束html标签表示HTML文档结束 --> </style>
</html> </html>

@ -21,69 +21,55 @@
Time: 21:23 Time: 21:23
To change this template use File | Settings | File Templates. To change this template use File | Settings | File Templates.
--%> --%>
<%-- 设置页面的内容类型为HTML并指定字符集和页面编码为UTF-8 --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%-- 引入JSTL核心标签库并设置前缀为c --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- 设置一个名为host的变量其值为localhost:8080/wechat --%>
<c:set var="host" value="localhost:8080/wechat"/> <c:set var="host" value="localhost:8080/wechat"/>
<%-- 注释:设置主机名 --%> <%--设置主机名--%>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>wechat</title> <title>wechat</title>
<%-- 设置网页的快捷图标favicon --%> <link rel="shortcut icon" type=image/x-icon href=https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico>
<link rel="shortcut icon" type="image/x-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico">
<%-- 引入Bootstrap的CSS样式 --%>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<%-- 引入jQuery库 --%>
<script src="${pageContext.request.contextPath}/static/js/jquery-3.4.1.js"></script> <script src="${pageContext.request.contextPath}/static/js/jquery-3.4.1.js"></script>
<script> <script>
// 定义注册函数
function register() { function register() {
// 获取邮箱和密码输入框的值
var email = document.getElementById("email").value; var email = document.getElementById("email").value;
var password = document.getElementById("password").value; var password = document.getElementById("password").value;
// 验证邮箱是否填写
if(email==null||email==''){ if(email==null||email==''){
alert("请填写邮箱"); alert("请填写邮箱");
return; return;
} }
// 验证密码是否填写
if(password==null||password===''){ if(password==null||password===''){
alert("请填写密码"); alert("请填写密码");
return; return;
} }
// 验证是否同意用户使用协议
if(!document.getElementById("agree").checked){ if(!document.getElementById("agree").checked){
alert("请先同意用户使用协议"); alert("请先同意用户使用协议");
return; return;
} }
// 触发表单提交
document.getElementById("submit").click(); document.getElementById("submit").click();
} }
</script> </script>
</head> </head>
<body> <body>
<%-- 如果message变量不为空则弹出系统提示 --%>
<script> <script>
<c:if test="${message!=null}"> <c:if test="${message!=null}">
alert("系统提示:${message}"); alert("系统提示:${message}");
</c:if> </c:if>
</script> </script>
<div class="background"> <div class="background">
<%-- 页面头部 --%> <%-- 页面头部--%>
<div class="login-head" style="height: 100px"> <div class="login-head" style="height: 100px">
<div class="jumbotron" style="padding-bottom: 20px;padding-top:20px;margin:0px"> <div class="jumbotron" style="padding-bottom: 20px;padding-top:20px;margin:0px">
<div class="logo"> <div class="logo">
<%-- 链接到首页并显示微信logo和标语 --%>
<a href="${pageContext.request.contextPath}/index.jsp" <a href="${pageContext.request.contextPath}/index.jsp"
style="color: #999;font-size: 44px;text-decoration: none"> style="color: #999;font-size: 44px;text-decoration: none"><img
<img src="${pageContext.request.contextPath}/static/img/logo.png" alt="logo" src="${pageContext.request.contextPath}/static/img/logo.png" alt="logo"
style="width: 100px;margin: 10px"> style="width: 100px;margin: 10px">微信,是一种生活方式</h2>
<h2>微信,是一种生活方式</h2>
</a> </a>
</div> </div>
</div> </div>
@ -91,119 +77,101 @@
<div class="input-box"> <div class="input-box">
<div class="color-input-field"> <div class="color-input-field">
<h2 class="input-box-title">注册账号</h2> <h2 class="input-box-title">注册账号</h2>
<%-- 表单提交到注册处理URL使用POST方法 --%> <form action="http://${host}/wechat/user?method=register.do" method="post">
<form action="http://${host}/wechat/user?method=register.do" method="post">
<%-- 隐藏一个提交按钮用于在JavaScript中触发提交 --%>
<input id="index" type="submit" style="display: none"> <input id="index" type="submit" style="display: none">
<%-- 邮箱输入框 --%> <input id="email" type="text" required="required" class="form-control" name="email"
<input id="email" type="text" required="required" class="form-control" name="email" value="${data.email}" placeholder="请输入邮箱号">
value="${data.email}" placeholder="请输入邮箱号"> <br/>
<br/> <input id="password" type="password" required="required" class="form-control" name="password"
<%-- 密码输入框 --%> value="${data.password}" placeholder="请输入密码(6-20位英文字母数字或下划线)">
<input id="password" type="password" required="required" class="form-control" name="password" <div class="remember-me">
value="${data.password}" placeholder="请输入密码(6-20位英文字母数字或下划线)"> <input id="agree" type="checkbox" name="agreement" value="true"
<div class="remember-me"> style="margin-bottom: 13px">我已阅读并同意<a href="agreement.html">《微信服务协议》</a>
<%-- 同意协议复选框 --%> </div>
<input id="agree" type="checkbox" name="agreement" value="true"
style="margin-bottom: 13px">
我已阅读并同意<a href="agreement.html">《微信服务协议》</a>
</div>
<%-- 隐藏的真实提交按钮 --%>
<input type="submit" id="submit" style="display: none"> <input type="submit" id="submit" style="display: none">
<%-- 注册按钮点击后调用JavaScript的register函数 --%> <input onclick="register()" type="button" class="submit-button" value="注册">
<input onclick="register()" type="button" class="submit-button" value="注册"> <br>
<br> <div class="switch-button">
<div class="switch-button"> 已有账号?<a href="${pageContext.request.contextPath}/login.jsp">请登陆</a>
<%-- 提供登录和游客模式的链接 --%> <a href="http://${host}/wechat/user?method=login.do&email=visitor" >| 游客模式</a>
已有账号?<a href="${pageContext.request.contextPath}/login.jsp">请登陆</a> </div>
<a href="http://${host}/wechat/user?method=login.do&email=visitor"> | 游客模式</a>
</div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</body>
</html>
<!-- 样式定义开始 --> </body>
<style type="text/css"> <style type="text/css">
/* 定义背景样式 */
.background { .background {
height: -webkit-fill-available; /* 在webkit浏览器中高度自动填充可用空间 */ height: -webkit-fill-available;
min-height: 750px; /* 最小高度为750px */ min-height: 750px;
text-align: center; /* 文本居中 */ text-align: center;
font-size: 14px; /* 字体大小为14px */ font-size: 14px;
background-color: #f1f1f1; /* 背景颜色为浅灰色 */ background-color: #f1f1f1;
z-index: -1; /* 元素的堆叠顺序为-1通常用于放在其他元素之后 */ z-index: -1;
} }
/* 定义logo样式 */
.logo { .logo {
position: absolute; /* 绝对定位 */ position: absolute;
top: 56px; /* 距离顶部56px */ top: 56px;
margin-left: 50px; /* 距离左侧50px */ margin-left: 50px;
} }
/* 定义表单控件样式 */
.form-control { .form-control {
padding: 10px; /* 内边距为10px */ padding: 10px;
min-height: 55px; /* 最小高度为55px */ min-height: 55px;
max-height: 70px; /* 最大高度为70px */ max-height: 70px;
font-size: 22px; /* 字体大小为22px */ font-size: 22px;
} }
/* 定义输入框标题样式 */
.input-box-title { .input-box-title {
text-align: center; /* 文本居中 */ text-align: center;
margin: 0 auto 50px; /* 上边距为0左右自动居中下边距为50px */ margin: 0 auto 50px;
padding: 10px; /* 内边距为10px */ padding: 10px;
font-weight: 400; /* 字体粗细为400 */ font-weight: 400;
color: #969696; /* 字体颜色为深灰色 */ color: #969696
} }
/* 定义颜色输入框样式 */
.color-input-field { .color-input-field {
padding: 50px; /* 内边距为50px */ padding: 50px;
font-size: 22px; /* 字体大小为22px */ font-size: 22px;
height: 625px; /* 高度为625px */ height: 625px;
width: 500px; /* 宽度为500px */ width: 500px
} }
/* 定义输入框容器样式 */
.input-box { .input-box {
width: fit-content; /* 宽度适应内容 */ width: fit-content;
margin: 104px auto; /* 上下边距为104px左右自动居中 */ margin: 104px auto;
background-color: #fff; /* 背景颜色为白色 */ background-color: #fff;
border-radius: 4px; /* 边框圆角为4px */ border-radius: 4px;
box-shadow: 0 0 8px rgba(0, 0, 0, .1); /* 盒子阴影效果 */ box-shadow: 0 0 8px rgba(0, 0, 0, .1);
vertical-align: middle; /* 垂直对齐方式为中间 */ vertical-align: middle;
} }
/* 定义提交按钮样式 */
.submit-button { .submit-button {
margin-top: 20px; /* 上边距为20px */ margin-top: 20px;
background-color: #1AAD19; /* 背景颜色为绿色 */ background-color: #1AAD19;
color: #FFFFFF; /* 字体颜色为白色 */ color: #FFFFFF;
padding: 9px 18px; /* 内边距为9px上下和18px左右 */ padding: 9px 18px;
border-radius: 5px; /* 边框圆角为5px */ border-radius: 5px;
outline: none; /* 去除默认轮廓线 */ outline: none;
border: none; /* 无边框 */ border: none;
width: 100%; /* 宽度为父容器的100% */ width: 100%;
} }
/* 定义记住我选项样式 */
.remember-me { .remember-me {
float: left; /* 左浮动 */ float: left;
font-weight: 400; /* 字体粗细为400 */ font-weight: 400;
color: #969696; /* 字体颜色为深灰色 */ color: #969696;
margin-top: 20px; /* 上边距为20px */ margin-top: 20px;
} }
/* 定义切换按钮样式 */
.switch-button { .switch-button {
text-align: left; /* 文本左对齐 */ text-align: left;
} }
</style> </style>
<!-- 样式定义结束 --> </html>

Loading…
Cancel
Save