小试牛刀(编写定制标签)

前言

  今天有点迷茫。是身体累了,还是心累了。有种觉得想大哭而无力的感觉(可能心还没成熟,或是昨天羽毛球打累了)。加油,Jeff Li. 活在当下,坚持打好基础,坚持刷ACM,坚持coding。

  今天下午的小故事,其实我今天想回家。但不知道住哪里?买了动车票,等车的时候,我在候车室看着书。渐渐地,回去,家?爸妈在远地工作。家,仿佛还是实验室是我的家。渐渐地,收拾书本。我退了票,做上了回来的公交,返回终点站的学校。

  路途中,发现了一位老者,还是莫莫的扫着往前看没有尽头,往后看扫过的地也是没有尽头的马路。抬了下头,用自己暗色的工作服擦去额上的汗水。“他是用生命在work,用生命在路上。”想想自己,迷茫,何必迷茫?用生命看书,获取知识,用生命去coding。我的理想[传送门]会靠近。

                                                                                   “I can do it !”

言归正传

  定制标签概述

    利用JSP标准动作指令访问和操作JavaBeans,是首次尝试将表现代码(html)和业务逻辑(java 代码)实现分离。JSP
2.0添加了两项新特性,第一个特性是一个新的接口,称作Simple Tag. 第二项特性是一种使编写定制标签一样编写标签文件机制。[go]

 

  简单工作原理和小范例

 

                  

                      A simple pic of its principle

 

  简单的标签处理器中的主体用一个JspFragment类实例表示其生命周期。

 

    1.JSP容器创建简单标签处理器实例

    2.JSP→setJspContext 传递一个JspContext对象,其对象返回一个JspWriter,用于响应到客户端


1

public void setJspContext(JspContext jspContext)

    3.JSP 调用setParent方法。将JspTag进来。


1

public void setParent(JspTag parent)

    4.JSP为每个标签定义的属性设置方法(Setter)

    5.若标签有主体内容,则JSP调用SimpleTag接口的setJspBody方法,将主体作为JspFragment传递。

    6.Jsp调用doTag方法(SimpleTag只有这个接口),所有变量该方法同步。

 

    mum said, “I learned a little . so i use my hand to earn money by the hard work.”

 

  SimpleTag 小例子

    结构

      

 

    MyFirstTag类

package sedion.jeffli.tag;

import java.io.IOException;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.SimpleTag;

public class MyFirstTag implements SimpleTag{

    JspContext jspContext;    //传递的对象

    @Override
    public void doTag() throws JspException, IOException {
        System.out.println("doTag");
        jspContext.getOut().print("This is my first tag");
    }

    @Override
    public JspTag getParent() {
        System.out.println("getParent");
        return null;
    }

    @Override
    public void setJspBody(JspFragment arg0) {
        System.out.println("setJspBody");
    }

    @Override
    public void setJspContext(JspContext arg0) {
        System.out.println("setJspContext");
        this.jspContext = arg0;
    }

    @Override
    public void setParent(JspTag arg0) {
        System.out.println("setParent");
    }

}

  

   注册标签-mytags.tld

<?xml version="1.0" encoding="UTF-8"?>
<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/j2eeweb-jsptaglibraty_2_1.xsd"
    version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>mt</short-name>
    <tag>
        <name>firstTag</name>
        <tag-class>sedion.jeffli.tag.MyFirstTag</tag-class>
        <body-content>empty</body-content>
    </tag>

</taglib>

 

  显示的jsp-index.jsp

<%@taglib uri="/WEB-INF/classes/mytags.tld" prefix="easy"%>
<html>
    <head>
        <title>this is my first tag</title>
    </head>
    <body>
        hello! tags
        <br/>
        <easy:firstTag></easy:firstTag>
    </body>
</html>

   效果图

    

    自然,控制台打印也是调用流程... 自己看吧,亲们

  小结:

    

    JSP→setJspContext 传递一个JspContext对象,其对象返回一个JspWriter,用于响应到客户端。

 

编写EL函数

  EL(JSP Expression Language),忘了就[传送门]

  编写两个步骤(这里我们还是用上面的项目add 进去):

    ①写静态public类

    ②将function元素注册标签库

    

    在sedion.jeffli.tag包下 -- MyFunctions类

package sedion.jeffli.tag;

public class MyFunctions {
    public static String reverseString(String s){
        return new StringBuffer(s).reverse().toString();
    }
}

   mytags.tld 内<taglib></taglib>之间添加

<function>
        <name>reverseString</name>
        <function-classe>sedion.jeffli.tag.MyFunctions</function-classe>
        <function-signature>
            java.lang.String reverseString(java.lang.String)
        </function-signature>
    </function>

  

   页面添加

    ${easy:reverseString("hello EL functions")}

 

    此时,我在听天籁。一个好的耳机,让我很陶醉,不累. 想起阿公一句话:“书法,坚持练。肯定比我好了。有些字我还要向你学习呢。”

                  

                        小朽作品一张,做比说难。贵在坚持!

    

发布定制标签(我很看好,以后这样做)

  简单来说,打个jar以便其他人使用。

  123,轻松搞定(上面function为例)

 

    ①结构

 

      

 

    ②在tld文件<taglib></taglib>之间添加uri

<uri>http://examp.com/taglib/function</uri>

    

    ③改。去页面

<%@taglib uri="http://examp.com/taglib/function" prefix="easy"%>

 

    这,懵懵懂懂那些java.lang.String形成。我以后也要开源写出来hlep others

 

去总结

   对于,分离表现逻辑和业务逻辑来说,用定制标签必用javabean好很多。还有 打包 jar,我马上要用起来。

时间: 2025-01-26 13:02:34

小试牛刀(编写定制标签)的相关文章

第六章_编写定制标签

6.1.定制标签概述 利用jsp标准动作指令访问和操作javaBeans,是首次尝试将表现代码和业务逻辑实现分离.但是,标准动作指令的功能不够强大,单独使用时,开发者经常要使用jsp页面中的Java代码.例如,标准动作指令无法像jstl的forEach标签那样迭代集合. 认识到了用javabean分离表现逻辑和业务逻辑的不足之处之后,jsp1.1就定义了定制标签.定制标签具有javaBeans所没有的优势.例如,定制标签可以访问jsp隐式对象,可以带有属性等.   6.2.简单的标签处理器 在j

J2EE平台WEB组件开发中如何使用定制标签

j2ee|web|组件开发 摘要: J2EE PLATFORM WEB组件开发涉及SERVLET 和JSP技术,SERVLET和JSP各有其优缺点.JVAVABEAN和定制标签对JSP的表示能力提供了很好的扩展,大大提高了JSP的表示能力,同时它们的引入使WEB开发可以很好的进行分工,提高开发效率,降低开发成本,同时提高了JSP页面的可读性.重用性.可维护性.本文将介绍J2EE平台WEB组件开发中如何使用定制标签,主要介绍开发定制标签的意义,原理.步骤.在TOMCAT上的发布并给出一个典型的标签

用定制标签库和配置文件实现对JSP页面元素的访问控制

js|访问|控制|页面        控制客户端访问是开发一个基于B/S的架构的系统的开发者必须考虑的问题.JSP或SERVLET规范的基于配置文件的安全策略对资源的控制是以文件为单位的,即只可以定义某个视图全部可以或全部不能被访问.一个比较复杂的系统往往要要求对视图的一部分(如JSP页面里的一个按钮)提供访问控制,只允许被某种角色的用户访问.如果采用可编程的安全策略,因为对用户角色和操作的定义在开发时不能定义,而且这种策略加大了程序员的工作量,它可能不是一种好的办法.        我采用定制

可以使用多个jsp定制标签在JSP中达到接近servelt的处理效果

原文jsp可以令菜鸟直接写简单的网页程序(网友言),而servlet却有jsp所不及的集成程度和易维护性.两者在JAVA/BS系统中无法简单取代,但同时并存却令开发者陷入近两年来最常见的陷阱中:必须在一个即使是相对简单的项目中维持多套程序模式的方案,显然,这是高成本的.本文考虑并初步实验了使用标签组件连续完成类似servlet的处理效果,从而达到鱼和熊掌兼得的目的,看来有一定的效果.    在完全使用servlet的环境中,可以使用servlet的继承获得上级servlet的设定属性:还可以使用

JSP中标签库的深入研究

js 标签库Taglib 标签被定义和分布在一个称为标签库的结构中,一个标签库是由元信息和类组成的集合:1.标签处理器:实现定制标签功能的Java类.2.标签附加信息(TEI):向JSP容器提供边辑以确认标签属性和创建变量的类.3.标签库描述器(TLD):描述单个标签和整个标签库属性的XML文档. 标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方.标签库描述器可在URL指定的符意位置.JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库.TLD必须是/MET

JSP标签库介绍 (1)转

js 作者: Casey Kochmer / 翻译:廖铮 日期: 2001年02月27日 <!-还不太了解Java Servlet Page的强大功能?那好,不妨跟我一道看看JSP最令人瞩目的强大工具之一:JSP标签库.--> 笔者使用JSP和ASP从事编程工作也有很长一段时间了,我越来越觉得,在这两种服务器端编程解决方案中,JSP的功能要比ASP强大得多.我为什么要把JSP选作自己主要的服务器端应用程序编写工具呢?当然,JSP迷人的特性和功能不少,但标签库是让我做出这一决定的最重要诱因之一.

JSP/Servlet/JSF--对标签库的深入研究

标签库Taglib 标签被定义和分布在一个称为标签库的结构中,一个标签库是由元信息和类组成的集合: 1.标签处理器:实现定制标签功能的Java类. 2.标签附加信息(TEI):向JSP容器提供边辑以确认标签属性和创建变量的类. 3.标签库描述器(TLD):描述单个标签和整个标签库属性的XML文档. 标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方.标签库描述器可在URL指定 的符意位置.JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库.TLD必须是/ME

JSP标签库解析

标签被定义和分布在一个称为标签库的结构中,一个标签库是由元信息和类组成的集合: 1.标签处理器:实现定制标签功能的Java类. 2.标签附加信息(TEI):向JSP容器提供边辑以确认标签属性和创建变量的类. 3.标签库描述器(TLD):描述单个标签和整个标签库属性的XML文档. 标签处理器和标签附加信息需要定位在JSP容器类载入器可以找到的地方.标签库描述器可在URL指定的符意位置.JSP1.1规范要求JSP容器接受一个打包成因定结构的JAR文件的标签库.TLD必须是/META-INF目录中名为

第七章_标签文件

7.2.第一个标签文件 下面是项目结构图: 下面是代码清单: 这是firstTag.tag文件 [html] view plain copy  print? <%@ tag import="java.util.Date" import="java.text.DateFormat" %>   <%       DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL) ;