Tag文件与Tag标记

目录

一、概述

二、Tag文件

三、Tag标记

四、解析单词

五、总结


主要内容

Tag 文件的结构
Tag 标记
Tag 文件中的常用指令

难点

Tag 文件中的 attribute 指令
Tag 文件中的 variable 指令

关键实践

           解释单词

一、概述

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标记,来提高代码的可读性和可维护性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值