java web的标签_java web标签

一:国庆结束了,回来上班,结果老大说过两天才出差,所以这两天就用来补自己不太懂的知识或者以前没有熟悉的知识,jsp的标签就是,因为在项目中自己封装了一些标签,但是我自己只是会用,真正的原理性的东西我还是不是很明白,所以今天一天的时间基本上都是在网上找资料来熟悉jsp标签的知识。

二:标签中tld中的属性rtexprvalue的用处

rtexprvalue的全称是 Run-time Expression Value,网上说是否可以利用jsp表达式。

rtexprvalue表示标签中的值是否可以直接指定或者可以动态(使用脚本或者el表达式)指定;

reruired表示是否是必须的;

下面说一说具体的用法,先给出tld中的定义如下:

instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">

my Tags

0.1

my

/mytag

wh

org.wh.gsh.web.tag.PersonTag

JSP

personbh

true

true

departmen

false

false

元素可以设置的内容有3种。

jsp页面的用法如下:元素主要的功能是指定标签体的类型,可能的取值有以下4种。

(1)empty:没有标签体

(2)JSP:标签体可以包含文本、EL、表达式或者JSP标签,但对于简单标签无效。

(3)scriptless:标签体可以包含文本、EL表达式、JSP标签,但不能包含JSP的脚本元素。

(4)tagdependent:表示标签体交由标签本身去解析处理。若指定tagdependent,在标签体中的所有代码都会原封不动的交给标签处理器,而不是将执行结果传递给标签处理器。

上面所说的标签体是这么个意思:如果标签写成这样---->表示没有标签体,如果写成这样则有标签体

个人信息页面

---->false

三:标签返回值的效果及意义:

在TagSupport类中,有如下4个方法最重要:doStartTag(),doEndTag(),doAfterTag(),release()

(1)doStartTag():此方法是开始执行标签,有如下两种返回值:

SKIP_BODY:表示忽略标签体的内容,而将执行权交给doEndTag()方法,

EVAL_BODY_INCLUDE:表示执行标签体的内容。

(2)doAfterTag():此方法是IterationTag接口与Tag接口的差别所在,用来重复执行标签体的内容,有如下两种返回值

SKIP_BODY:表示忽略标签体的内容,并且将执行权交给doEndTag()方法;

EVAL_BODY_AGAIN:表示重复执行标签体内容,会重复调用doAfterBody()方法,一直循环执行下去,直到doAfterBody()方法但会SKIP_BODY为止。

(3)doEndTag():此方法在标签结束时执行,有如下两种返回值

SKIP_PAGE:在JSP页面应该立刻停止执行(即是不执行下面的jsp代码),并将所有的输出立刻回传到浏览器上。

EVAL_PAGE:表示jsp正常的运行

四:TagSupport和BodyTagSupport的区别

TagSupport和BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的就用TagSupport,否则如果需要交互就用BodyTagSupport。

交互的意思大概可以理解成标签处理类是否要读取标签体的内容和改变标签体返回的内容。再说明白点就是如果要更改或者处理标签体中的内容则必须实现BodyTagSupport类。(标签里面都可以有内容,但是要更改内容或作其他处理就必须实现BodyTagSupport类);

下面说说BodyTagSupport新增了的方法

public static final int EVAL_BODY_BUFFERED :表示该标签体的内容应该被出俩,所有的处理都应该保存到BodyContent类中;

protected  BodyContent bodyContent  :存放处理结果

public JspWriter getPreviousOut() :取得JspWriter的输出流对象

比如下面的代码就是把标签体中的截取一部分进行显示,代码如下

MyTag.javapackageorg.wh.demo.Tag;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.tagext.BodyContent;importjavax.servlet.jsp.tagext.BodyTag;importjavax.servlet.jsp.tagext.BodyTagSupport;importjavax.servlet.jsp.tagext.Tag;public class MyTag extendsBodyTagSupport {/****/

private static final long serialVersionUID = 1L;public int doStartTag() throwsJspException{returnBodyTag.EVAL_BODY_BUFFERED;

}public int doEndTag() throwsJspException{

BodyContent bc=this.getBodyContent();//获取标签体的内容

String ct=bc.getString();//转换为字符串

String rt=ct.substring(5,10);try{this.pageContext.getOut().write(rt);

}catch(Exception e){throw newRuntimeException(e);

}returnTag.EVAL_PAGE;

}

}

mytag.tld<?xml version="1.0" encoding="UTF-8"?>

标签的测试

my tags

0.0

my

/mytags

wh

org.wh.demo.Tag.MyTag

scriptless

HelloTag.jsp:

Insert title here

Hello Tag!!!

自己定义的标签使用如下效果

这是我写的第一个标签

结果如下:

8e60e2e483a2271487c0d1c1500e2175.png

我现在就是知道怎么用了,以前自己只是只看不做的人,现在自己在边看边实践,即使是最简单的东西,只是还是极少成多的。现在就补下基础薄弱的地方。自己做一遍比看几百遍都强的。自己还是得花时间来学习下源码,最忌就再次温习下java和java web 和linux,好多东西要学,这几天没事情干就总结了这两个月实习学到的东西和补知识点。任重而道远啊。努力,今天看小说看到了一句话”匹夫而为百世师,一言二为天下法“,这气概,没得说啊,收到短信要交一篇3000字的论文,坑爹啊,我还得去找论文凑一篇交上去。努力吧,boys!!!

4011802.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值