精华内容
下载资源
问答
  • jsp标签库
    千次阅读
    2019-04-23 14:49:33

    1. Spring通用标签库 JSP的标签库 除了JSTL(JSP 标准标签库),Spring提供了两个标签库 用来帮助定义Spring MVC Web的视图。  Spring的 表单绑定 JSP标签库Spring通用标签库

         PS:JSTL 和 Spring的JSP标签库 互为补充或者互为替代吧。都是为了JSP添加功能

    2.要使用Spring通用标签库 在页面上声明如下

    <%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>

    3.通用标签库包含的10个JSP标签

        <s:bind>  <s:escapeBody>  <s:hasBindErrors> <s:htmlEscape> <s:message>标签

        <s:nestedPath>  <s:theme>  <s:escapeBody>标签  <s:transform>  <s:eval>

    4.<s:message>标签 展现国际化信息

        它可以解决的问题是:1.将JSP中硬编码的信息抽取到了属性文件中,一站式地修改应用中的所有文本信息 2.根据用户的语言设置国际化这些文本

        1.<s:message>标签将JSP中硬编码的信息抽取到了属性文件中,一站式地修改应用中的所有信息: 原来如果要修改首页中的欢迎信息,<h1>welcom you</h1>  需要打开home.jsp 对其修改。但是应用中的文本散步到多个模板,如果大规模修改应用信息,需要修改大量的JSP文件。现在只要修改属性所属的属性文件即可。   

         步骤1:配置信息源 

            Spring有多个信息源的类,它们都实现了MessageSource接口。常用的有ResourceBundleMessageSource和ReloadableResourceBundleMessageSource。它们会从一个属性文件中加载信息

            ResourceBundleMessageSource 在类路径的属性文件中解析信息 basename属性。如果要重新加载信息属性,需要重新编译或重启应用

            ReloadableResourceBundleMessageSource。它的basename属性可以设置为在类路径下(以“classpath:”作为前缀)、文件系统中(以“file:”作为前缀)或Web应用的根路径下。它能够重新加载信息属性,而不必重新编译或重启应用
    (没有前缀)查找属性

            JavaConfig中配置ResourceBundleMessageSource类

    @Bean
    public MessageSource messageSource() {
    	ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    	messageSource.setBasename("messages");
    	return messageSource;
    }

         JavaConfig中配置ReloadableResourceBundleMessageSource类

    @Bean
    public MessageSource messageSource() {
      ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
      messageSource.setBasename("message");
      messageSource.setCacheSeconds(10);
      return messageSource;
    }

         步骤2:创建属性文件

              在类路径下 (Project\target\classes) 创建属性文件message.properties,内容如下

    spittr.welcome = welcome you stranger

          步骤3:在jsp文件中使用属性  <s:message>将会根据key为spittr.welcome的信息源来渲染文本

    <%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
    <html>
    <body>
    <h2><s:message code="spittr.welcome"/></h2>
    </body>
    </html>

      2.<s:message>标签 根据用户的语言设置国际化这些文本   比如为语言设置为中文的用户展现中文的欢迎信息   存疑????

    5.<s:url>标签  创建URL 

       具体待补充  参考 Spring实战(第4版)书

    6.<s:escapeBody>标签 转义内容

         首先要了解一下,在HTML中,某些字符是预留的,比如<>。如果在html代码中写<h1>Hello</h1> ,浏览器会把它渲染成一级标题并显示 Hello。如果想在浏览器中显示<h1>Hello</h1> ,也就是让浏览器正常显示<>,需要使用<>的转义字符&lt,&gt。但是<s:escapeBody>标签中 可以直接写<> 并且在浏览器中显示<>。以下代码功能是等同的。浏览器中会显示二级标题 <h2>

    <%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
    <html>
    <body>
    <h2><s:message code="spittr.welcome1"/></h2>
    	<!--使用<s:escapeBody>标签-->
    	<h2> <s:escapeBody htmlEscape="true"><h2></s:escapeBody> </h2>
    	<!--手动写转义字符,可读性差-->
    	<h2>&lt;h2&gt</h2>	
    </body>
    </html>
    
    

     

    更多相关内容
  • JSP 标签库

    2018-02-06 10:02:35
    JSP标签库,很好的文档,值得下载和参考。文档里有具体的描述。
  • JSP标签库和JSTL

    2018-12-30 17:50:38
    JSP标签库和JSTL ppt学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • jsp标签库jar

    2017-06-26 10:36:57
    jsp页面使用jstl所依赖的jar
  • Google地图JSP标签库源码示例
  • Google地图JSP标签库

    2022-06-02 14:52:01
    Google地图JSP标签库
  • Google地图JSP标签库.7z

    2022-07-06 10:16:15
    Google地图JSP标签库.7z
  • 课程Jsp标签库.pdf

    2021-10-06 01:31:04
    课程Jsp标签库.pdf
  • 01-31.JSP标签库开发.doc

    2020-02-24 12:26:11
    JSP标签库开发
  • Jsp标签库知识点.pdf

    2021-09-30 16:06:27
    Jsp标签库知识点.pdf
  • 这个 JSP 标记提供了一种使用 Java 和 JSP 创建数据网格的简单方法。 它提供了与 Spring 框架和 Java Persistence API (JPA) 的轻松集成。 也可以选择将一些 Ajax 功能附加到网格。 有很多不同的 JSP 网格实现。 ...
  • jsp标签库常用架包

    2018-09-07 09:18:26
    jsp标签库常用架包.zip,jsp标签库常用架包,standard-1.1.2.jar,jstl-1.2.jar
  • NULL 博文链接:https://x-nam.iteye.com/blog/556046
  • TaglibProject.rar,TaglibProject,src,org,lxh,demo01,Hello.java,.project,WebRoot,META-INF,MANIFEST.MF,WEB-INF,hello.tld,web.xml,classes,org,lxh,demo01,Hello.class,lib,Hello.jsp,Hello2.jsp,.mymetadata,....
  • sqlserver的jdbc以及jsp标签库.zip,tld,scriptfree.tld,c.tld,permittedTaglibs.tld,fmt.tld,sql-1_0.tld,sql-1_0-rt.tld,x.tld,fn.tld,fmt-1_0-rt.tld,c-1_0-rt.tld,c-1_0.tld,x-1_0-rt.tld,sql.tld,fmt-1_0.tld,x-...
  • Jsp标签库帮助文档

    2014-02-15 15:32:21
    关于JavaWeb技术的jsp标签库帮助文档,非常全面、清晰,而且带目录,说明很详细,便于查找。
  • jsp 标准标签库简析

    2021-01-08 18:59:59
    进一步将应用程序的显示层和业务层完全分离,更加有利于应用程序的分工协作,jsp开发者指定了 JSTL ,提供了一组统一的通用的自定义标签文件,并将这些文件组合在一起,形成了jsp标准标签库,即JSTL。 1) 定义:包含...
  • jsp标签库的使用

    2019-03-28 02:04:44
    NULL 博文链接:https://liyx985.iteye.com/blog/1236794
  • JSP标准标签库

    2015-09-14 20:54:15
    JSP标准标签库,提供了JSP中基本的标签的用法,JSP网站开发必备工具!
  • jsp标签库简介

    2013-05-17 11:20:31
    JSP标准标签库(JSTL)是由Sun公司最新发布的JSP编程元件。
  • JSP标准标签库(jstl)

    2017-09-04 10:51:29
    JSTL 1.0 发布于 2002 年 6 月,由四个定制标记(core、...它还支持使用本地化资源束进行 JSP 页面的国际化。xml 包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 定义了用来查询关系数据库的操作。
  • jsp标签库(详细)

    2012-09-26 11:22:09
    强大的jsp标签库,让每个人都能够共享到。支持下载。
  • JSTL(JSP标准标签库) C 标签 下载到本地资源 不用通过网络
  • (JSTL)jsp标签库

    2012-04-27 22:40:02
    很全面地介绍了JSP常用的标签以及用法以及简单的举例,适合开发参考。
  • 标签库下载标签库下载地址为:官网地址 各个版本之间的兼容性不是太好,而且版本更新近年来也是几乎没有,该项目组后期成为tomcat小组一...request标签库使用标签先在jsp页面头引入该标签库,由于jar文件已经放入到l

    标签库下载

    标签库下载地址为:官网地址
    各个版本之间的兼容性不是太好,而且版本更新近年来也是几乎没有,该项目组后期成为tomcat小组一部分,具体查看文章: JSTL标签库的版本变迁及最近发展

    这里下载了request的标签库,解压,将解压后里面的jar文件放入lib文件夹下。

    request标签库使用

    <request:parameters>标签

    先在jsp页面头引入该标签库,由于jar文件已经放入到lib文件夹中,ecli会自动提示uri。

    <%@taglib uri="http://jakarta.apache.org/taglibs/request-1.0" prefix="request" %>

    如上,prefix就是标签用的时候的标签头了。

    <request:parameters  id="param">
        <jsp:getProperty property="name" name="param"/>
        <jsp:getProperty property="value" name="param"/>
    </request:parameters>

    如上就是获取当前request的所有数据,property取值可以是name或者value,分别代表request的属性和属性值。
    相关的参数及用法可以在下载的文件中文件名带doc的文件解压后文件里面找到参考。

    实验

    建立一个jsp用来提交数据:

    <form action="dispose.jsp">
        <br>
        喜欢玩的游戏是:<input type = "text" name="gameName">
        <input type ="submit" value="提交">
    </form>

    建立处理该数据的页面:

    所以你最喜欢的游戏是
     <request:parameters  id="param">
         <jsp:getProperty property="name" name="param"/>为
         <jsp:getProperty property="value" name="param"/>
     </request:parameters>

    上边这个意思是,遍历所有的parameters,对每个parameter获取其name和value,这个jsp:getProperty标签就是jsp标签,获取bean的属性,这里的获取的bean是request标签库对应的bean的属性。这个对应的bean在哪呢?先看看实验结果:
    这里写图片描述

    标签库组成的三个属性

    标签处理程序类
    标签处理一定功能,像上边的得到request的所有parameters,这个由对应标签的处理程序类完成,而且标签处理程序只服务于一个特定标签。这是区别与javaBean的,javaBean是公共功能的集合,在自定义标签的时候会详细解析该类。

    标签库描述符(TLD)
      上边说标签处理程序只服务与一个特定标签,那么具体是哪个标签呢,这就需要标签描述符来进行关联。标签库描述符文件是一个以“.tld”结尾的标准XML文档,来记录标签库包含的标签和属性。

    标签库指示
      指的是JSP文件开头用来标记使用该标签库的,uri的地址并不会被系统真正得去访问,而是用来标记其唯一性。也可以是文件路径,系统会自动在改路径下找这个TLD文件,如果没有会在其他路径找。prefix可以随便起名,当然不能用保留标签名:jsp、jspx、servlet、sun等。


    其他

    中文显示问题:JSP中文乱码怎么解决?
    jsp第一行提示servlet包没有,在class path里面导入library,选择runtime,选tomcat即可。


    参考:
    JSP WEB 编程指南 Jayson Falkner ,Ben Galbraith,Romin Irani 等著.电子工业出版社
    标签描述符

    展开全文
  • 使用tld文件自定义jsp标签库

    千次阅读 2018-12-14 14:39:19
    一,标签库描述文件(tld文件) 二,标签处理类 三,在JSP页面中使用自定义的标签 四,举个例子 通过Java的TagSupport类或者BodyTagSupport类,和配套的tld文件,可以定义自己的jsp标签。 TagSupport类和...

    目录

    一,标签库描述文件(tld文件)

    二,标签处理类

    三,在JSP页面中使用自定义的标签

    四,举个例子


    通过Java的TagSupport类或者BodyTagSupport类,和配套的tld文件,可以定义自己的jsp标签。

    TagSupport类和BodyTagSupport类在jsp-api.jar中,这个jar包在tomcat的lib目录下有,maven里面也有。

     

    一,标签库描述文件(tld文件)

    tld的全名:Tag Library Descriptor

    tld文件是一个XML文件,是自定义标签库的配置文件。

    这个文件应该放在web项目的WEB-INF目录下,或其子目录下,如果放在其他位置,需要在web.xml文件中做配置。

     

    下面是一个简单的标签库描述文件的例子:

    myFirstTag.tld

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                            "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
        <tlib-version>1.0</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>testTagLib</short-name>
        <uri>/test-tags</uri>
        <display-name>"自定义标签"</display-name>
        <tag>
            <name>TagA</name>
            <tag-class>com.mytest.TagA</tag-class>
            <body-content>jsp</body-content>
            <description>这个一个标签</description>
            <attribute>
                <name>attributeA</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
                <description>属性A</description>
            </attribute>
        </tag>
        <tag>
            <name>TagB</name>
            <tag-class>com.mytest.TagB</tag-class>
            <body-content>jsp</body-content>
            <description>这个一个标签</description>
            <attribute>
                <name>attributeA</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
                <description>属性A</description>
            </attribute>
        </tag>
    </taglib>

    文件的主体是<tablib>元素,其中的元素有:

    <tlib-version>,taglib版本

    <jsp-version>,jsp版本

    <short-name>,标签库名字

    <uri>,标签库地址,在页面使用标签库时会用到

    <display-name>,描述

    <tag>,具体的标签列表,可以配置多个

     

    其中的<tag>元素,每个元素代表一个自定义的标签,可以有这些子元素:

    <name>,标签名字,在页面使用标签时会用到

    <tag-class>,标签处理类

    <body-content>,empty、scriptless、JSP、tagdependent

    <description>,标签描述,可以配置多个

    <attribute>,标签参数列表,可以配置多个

     

    其中的<attribute>元素,每个元素代表一个属性,可以有这些子元素:

    <name>,属性名字,在页面使用标签时会用到

    <required>,是否必填,只能是true或false

    <rtexprvalue>,全称Run-time Expression Value,是否支持EL表达式,只能是true或false。如果设置为true,在页面可以用这种写法:attributeA="<%=name>"

    <description>,属性描述

     

    二,标签处理类

    标签处理类是在描述文件中用<tag-class>元素标识出的java类,这个类可以选择继承javax.servlet.jsp.tagext.TagSupport类或javax.servlet.jsp.tagext.BodyTagSupport类,其中BodyTagSupport是TagSupport的子类。

    如果选择继承TagSupport类,可以重写以下方法:

    public int doStartTag()

    public int doEndTag()

    public int doAfterBody()

    如果选择继承BodyTagSupport类,可以额外重写以下方法:

    public void setBodyContent(BodyContent b)

    public void doInitBody()

     

    下面分别介绍这几个方法:

    doStartTag()

    这是在java开始处理头标签时执行的方法,可以在这里构造将要输出到页面的代码,或者做其他的处理。

    这个方法的返回值是int,有以下选择:

    1,EVAL_BODY_INCLUDE。

    这个静态变量在javax.servlet.jsp.tagext.Tag接口中,实际值是1。

    这个返回值表示正常加载标签的body(也就是标签的innerHTML)。

    2,SKIP_BODY。

    这个静态变量在javax.servlet.jsp.tagext.Tag接口中,实际值是0。

    这个返回值表示不会加载标签的body。一般情况下doStargTag()方法返回这个值后将执行doEndTag()方法。

    3,EVAL_BODY_BUFFERED。

    这个静态变量在javax.servlet.jsp.tagext.BodyTag接口中,实际值是2。

    只有处理类继承了BodyTagSupport时可以使用(详见下面的类继承关系图)。

    这个返回值用来在后面的代码中处理标签的body。当使用这个返回值时,Java会构造一个BodyContent对象,并把标签的body载入这个对象。

    另外,BodyContent对象内部也有一个JspWriter,可以用BodyContent对对象的body进行处理。是否可以修改body是BodyTagSupport和TagSupport最大的区别。

    注意:如果使用了这个返回值并重写了相关方法,需要在代码中显式写明body部分的加载,否则body只会写入BodyContent对象而不会加载到页面。

     

    doEndTag()

    这是在java开始处理尾标签时执行的方法,这个方法中也可以构造将要输出到页面的代码,或者其他处理。

    这个方法的返回值是int,有以下选择:

    1,EVAL_PAGE。

    这个静态变量在javax.servlet.jsp.tagext.Tag接口中,实际值是6。

    这个返回值表示继续加载此标签之后的页面代码。

    2,SKIP_PAGE。

    这个静态变量在javax.servlet.jsp.tagext.Tag接口中,实际值是5。

    这个返回值表示不再继续加载此标签之后的页面代码,直接将jsp现有已经处理完的页面代码发送给客户端。

    没有想到什么情况下用得着这个返回值。

     

    doAfterBody()

    这个方法在doStartTag()方法返回EVAL_BODY_INCLUDE并且加载完标签的body后加载。

    这个方法的返回值是int,有以下选择:

    1,EVAL_BODY_AGAIN。

    这个静态变量在javax.servlet.jsp.tagext.IterationTag接口中,实际值是5。

    这个返回值表示再次加载标签的body。

    按照执行顺序,再次加载一次body之后会再次执行这个方法,注意不要写成死循环。

    2,SKIP_BODY。

    同doStartTag()方法的同名返回值。

    java不会再加载标签的body,向后执行。一般情况下后面将执行doEndTag()方法。

     

    setBodyContent(BodyContent b)

    这个方法是在调用doStartTag()方法,并返回EVAL_BODY_BUFFERED之后调用的。BodyTagSupport子类专用。

    Java构造了BodyContent对象之后调用这个方法把BodyContent对象传给处理类,BodyTagSupport类中这个方法里面只有一行:

    this.bodyContent = b;

    如果重写了这个方法,至少也要把这行加上,否则无法使用BodyContent对象。

    该方法没有返回值。

     

    doInitBody()

    该方法在调用setBodyContent(BodyContent b)方法后执行,可以对body进行一些初始化工作。BodyTagSupport子类专用。

    BodyTagSupport类中这个方法里面没有代码。

    这个方法没有返回值。

     

    上述类和接口的关系图大概是这样的:

     

    当java处理标签时,根据返回值的不同,方法的调用顺序大概是这样的:

     

    三,在JSP页面中使用自定义的标签

    1,在JSP页面中,首先要引用标签库:

    <%@ taglib prefix="t" uri="/test-tags"%>

    prefix是标签前缀,和标签库中的<short-name>不一定相同。

    uri参数和标签库中的<uri>必须相同。

    2,引用了标签库之后,就可以使用自定义的标签了:

    <testTagLib:TagA attributeA="extra">

             number2:<input id='number2' name='number2' value='222' />

    </testTagLib:TagA>

    上面的例子就是有body的标签,body就是

    number2:<input id='number2' name='number2' value='222' />

    这一部分,通过调整方法的返回值可以控制该部分是否显示。

     

    四,举个例子

    1,首先是tld标签描述文件

    myFirstTag.tld

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                            "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
        <tlib-version>1.0</tlib-version>
        <jsp-version>1.2</jsp-version>
        <short-name>testTagLib</short-name>
        <uri>/test-tags</uri>
        <display-name>"自定义标签"</display-name>
        <tag>
            <name>TagA</name>
            <tag-class>com.mytest.TagA</tag-class>
            <body-content>jsp</body-content>
            <description>这是一个标签</description>
            <attribute>
                <name>attributeA</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
                <description>属性A</description>
            </attribute>
        </tag>
        <tag>
            <name>TagB</name>
            <tag-class>com.mytest.TagB</tag-class>
            <body-content>jsp</body-content>
            <description>这是一个标签</description>
            <attribute>
                <name>attributeA</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
                <description>属性A</description>
            </attribute>
        </tag>
    </taglib>

    在这个描述文件中定义了两个标签,TagA和TagB

     

    2,标签TagA的处理类TagA.java

    TagA.java

    package com.mytest;
    
    import java.io.IOException;
    
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.tagext.BodyContent;
    import javax.servlet.jsp.tagext.BodyTagSupport;
    import javax.servlet.jsp.tagext.TagSupport;
    
    public class TagA extends BodyTagSupport{
    	
    	private static final long serialVersionUID = 1L;
    	
    	protected String attributeA;
    
    	public String getAttributeA() {
    		return attributeA;
    	}
    
    	public void setAttributeA(String attributeA) {
    		this.attributeA = attributeA;
    	}
    	
    	@Override
    	public int doStartTag(){
    		JspWriter w=this.pageContext.getOut();
    		StringBuffer sb = new StringBuffer();
    		sb.append("<form id='aform' action='");
    		sb.append(attributeA);
    		sb.append(".do' method='post'>");
    		sb.append("number1:<input id='number1' name='number1' value='111' /><br/>");
    		
    		try {
    			w.print(sb.toString());
    			w.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		if("extra".equals(attributeA)){
    			return EVAL_BODY_INCLUDE;
    //			return EVAL_BODY_BUFFERED;
    		}else{
    			return SKIP_BODY;
    		}
    	}
    	
    	@Override
    	public void setBodyContent(BodyContent bodyContent) {  
            System.out.println("setBodyContent...");  
            this.bodyContent = bodyContent;  
            
        } 
    	
    	@Override
    	public void doInitBody() throws javax.servlet.jsp.JspException {
    		
    	};
    	
    	
    	@Override
    	public int doAfterBody() throws javax.servlet.jsp.JspException {
    		String a="";
    		if(this.bodyContent!=null&&a.equals("")){
    			String html=this.bodyContent.getString();
    			System.out.println(html);
    			
    			return SKIP_BODY;
    		}else{
    			return SKIP_BODY;
    		}
    	}
    	
    	@Override
    	public int doEndTag(){
    		JspWriter w=this.pageContext.getOut();
    		StringBuffer sb = new StringBuffer();
    		sb.append("<br/><button type='submit'>提交</button>");
    		sb.append("</form>");
    		
    		try {
    			w.print(sb.toString());
    			w.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		if("extra".equals(attributeA)){
    			return EVAL_PAGE;
    		}else{
    			return SKIP_PAGE;
    		}
    	}
    }
    

    这个类重写了doStartTag(),doEndTag()和doAfterBody()等方法,其中doAfterBody()方法里面没写什么东西,和父类的原方法保持一致。

    这个处理类的功能是把自定义的标签写成了一个form表单,并添加了名为number1的文本框,当属性attributeA等于extra时显示number2文本框,并且正常加载标签后面的网页内容,否则不会显示number2文本框,并且立即结束页面加载,发送给客户端。

     

    3,JSP页面

    testTagPage.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="testTagLib" uri="/test-tags"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>TestTagPage</title>
    </head>
    <body>
    extra
    <testTagLib:TagA attributeA="extra">
    	number2:<input id='number2' name='number2' value='222' />
    </testTagLib:TagA>
    number3:<input id='number3' name='number2' value='333' />
    
    <hr/>
    
    no extra
    <testTagLib:TagA attributeA="noextra">
    	number2:<input id='number2' name='number2' value='222' />
    </testTagLib:TagA>
    number3:<input id='number3' name='number2' value='333' />
    
    </body>
    </html>

    这个页面显示出来是这样的:

    分析一下:

    当java第一次加载TagA标签时(分隔线上面部分),属性attributeA等于extra,

    doStartTag()方法返回值是EVAL_BODY_INCLUDE,表示正常加载body部分的页面代码,

    doEndTag()方法返回值是EVAL_PAGE,表示正常加载标签后面的内容,所以第二个TagA标签才得以加载。

    当java第二次加载TagA标签时(分隔线下面部分),属性attributeA等于noextra,

    doStartTag()方法返回值是SKIP_BODY,表示不会加载body部分的页面代码,

    doEndTag()方法返回值是SKIP_PAGE,表示不会加载标签后面的内容,所以第二个TagA标签后面的number3标签和</body></html>标签都没有加载。

    浏览器实际收到的页面代码是这样的:

    <html>
    
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <title>TestTagPage</title>
    
    </head>
    
    <body>
    
    extra
    
    <form id='aform' action='extra.do' method='post'>number1:<input id='number1' name='number1' value='111' /><br/>
    
             number2:<input id='number2' name='number2' value='222' />
    
    <br/><button type='submit'>提交</button></form>
    
    number3:<input id='number3' name='number2' value='333' />
    
    <hr/>
    
    no extra
    
    <form id='aform' action='noextra.do' method='post'>number1:<input id='number1' name='number1' value='111' /><br/><br/><button type='submit'>提交</button></form>

     

    以上就是自定义JSP标签的介绍,通过此功能可以组建自己更强大更高效的标签库。

    展开全文
  • JSTL标签库-tomcat10-简化JSP中java代码
  • JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。 JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,066
精华内容 34,426
关键字:

jsp标签库