目录
主要内容
难点
关键实践
解释单词
一、概述
JSP(JavaServer Pages)是一种动态网页开发技术,它可以将Java代码嵌入到HTML页面中,实现动态内容的生成。在JSP中,Tag文件和Tag标记是两个非常重要的概念,它们可以帮助我们更好地组织和管理JSP页面的代码。
二、Tag文件
Tag文件是一种特殊的JSP文件,它的扩展名为“.tag”。Tag文件可以包含一些自定义的标签(Tag),这些标签可以在JSP页面中使用。Tag文件的作用类似于Java中的函数库,可以将一些常用的代码封装起来,方便在多个JSP页面中复用。
Tag文件的语法和普通的JSP文件类似,不同之处在于它需要使用“taglib”指令来声明标签库。例如:
<%@ taglib prefix="mytag" uri="http://www.example.com/mytag" %>
这个指令声明了一个名为“mytag”的标签库,它的URI为“http://www.example.com/mytag”。在JSP页面中使用这个标签库时,需要先导入它:
<%@ taglib prefix="mytag" uri="http://www.example.com/mytag" %>
...
<mytag:mytagname />
其中,“mytagname”是在Tag文件中定义的一个标签名。
Tag文件中定义的标签可以有多个属性,例如:
<tag>
<name>mytagname</name>
<tag-class>com.example.MyTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>attr1</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>attr2</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
这个Tag文件中定义了一个名为“mytagname”的标签,它有两个属性“attr1”和“attr2”。其中,“attr1”是必须的属性,它的值必须是一个表达式;“attr2”是可选的属性,它的值也必须是一个表达式。
在JSP页面中使用这个标签时,可以像这样传递属性值:
<mytag:mytagname attr1="${value1}" attr2="${value2}" />
Tag文件中还可以定义一些脚本,这些脚本会在标签被执行时运行。例如:
<tag>
<name>mytagname</name>
<tag-class>com.example.MyTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>attr1</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>attr2</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<scripting>
<script><![CDATA[
out.print("Hello, world!");
]]></script>
</scripting>
</tag>
这个Tag文件中定义了一个名为“mytagname”的标签,它有两个属性“attr1”和“attr2”,以及一个脚本,它会输出“Hello, world!”。
三、Tag标记
Tag标记是一种在JSP页面中使用的特殊标记,它的作用类似于HTML中的标记。Tag标记可以在JSP页面中嵌入Java代码,实现动态内容的生成。
Tag标记的语法和HTML标记类似,它以“<%”开头,以“%>”结尾。例如:
<%
out.print("Hello, world!");
%>
这个Tag标记会输出“Hello, world!”。
Tag标记中可以使用各种Java语句和表达式,例如:
<%
int x = 1;
int y = 2;
int z = x + y;
out.print("x + y = " + z);
%>
这个Tag标记会输出“x + y = 3”。
Tag标记还可以嵌套使用,例如:
<%
for (int i = 1; i <= 10; i++) {
%>
<li><%= i %></li>
<%
}
%>
这个Tag标记会输出一个有序列表,其中包含数字1到10。、
四、解析单词
<%@ tag import="java.util.HashSet" %>
<%@ tag import="java.util.regex.Pattern" %>
<%@ tag import="java.util.regex.Matcher" %>
<%@ attribute name="okString" required="true" type="java.lang.String" %>
<%@ variable name-given="words" variable-class="java.util.HashSet "
scope="AT_BEGIN" %>
<%
HashSet<String> set = new HashSet<String>(); //集合不允许有相同的元素
Pattern pattern; //模式对象
Matcher matcher; //匹配对象
String regex="[a-zA-Z]+" ;//匹配英文单词
pattern = Pattern.compile(regex); //初试化模式对象
matcher = pattern.matcher(okString); //初始化匹配对象,用于检索mess
while(matcher.find()) {
String str = matcher.group();
set.add(str);
}
//将返回的arrayList对象放在jspContext中:
jspContext.setAttribute("words",set);
%>
<%@ page contentType = "text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.util.Iterator" %>
<%@ taglib tagdir = "/WEB-INF/tags/prictice1" prefix = "getWords"%>
<HTML><body bgcolor = #CCCCFF>
<% String str = "How are you,are you student? where are you from? ";
%>
<getWords:backWords okString ="<%= str %>" /> <%-- 使用Tag标记 --%>
<p style="font-family:宋体;font-size:26">
<%= str %><br>
<%
Iterator<String> ite = words.iterator(); //使用Tag标记返回的Double对象words
out.print("使用了"+ words.size()+"个单词:<br>");
while(ite.hasNext()) { //遍历集合
out.print(" "+ite.next());
}
%>
</p></body></HTML>
五、总结
Tag文件和Tag标记是JSP中非常重要的概念,它们可以帮助我们更好地组织和管理JSP页面的代码。Tag文件可以将常用的代码封装起来,方便在多个JSP页面中复用;Tag标记可以在JSP页面中嵌入Java代码,实现动态内容的生成。在实际的JSP开发中,我们可以根据需要选择使用Tag文件或Tag标记,来提高代码的可读性和可维护性。