自定义标签
今天讲的内容是我们在jsp中很重要的知识。我们这次好好介绍一下
首先我们要知道啊!在jsp页面中根据规定是不能出现脚本的!也就是说不能出现<%%>这样的符号的!而我们的sun公司就提供了我们这个自定义标签。下面让我们一起来学习一下自定义标签吧!
首先我们看看自定义标签在jsp中使用!首先我们用一个最简单的!我们创建一个输出客户端的ip的:
一共需要3 个步骤
1. 我们用Myeclipse创建一个jsp文件。在jsp想显示ip的地方写一个自定义的标签如:<csdn:TageDemo1>
2. 我们在看一下那个java类是怎么写的:在这样的类中我们是集成了TagSupport这个类。然后我们看一下jeeAPI。我们首先获取到request对象因为这个java中没有jsp的隐藏对象。我们获取out对象然后输出当前的ip就行了。
3. 我们在本web的项目的web—inf的文件夹下创建一个tld的文件如下图:
首先我们看<short-name><short-name>这个是在标签上相当于那个<csdn:TageDemo1>中的csdn,我们理解一下就行了
<uri> </uri>可以随便写一下。因为这是找到这个的路径tld文件
最后我们看一下<tag></tag>这个里面的那个name这个标签这个就是相当于<csdn:TageDemo1>中的TageDemo1。我们也是我们也解释一下
我们就这样创建一个这样的tld就行了。
注意在jsp文件中添加上<%@taglib uri="http://www.hbsi.edu.cn" prefix="hbsi"%>这样的一句话uri就是我们上面介绍的。prefix就是那个short-name。这样我们在body中写上:<csdn:TageDemo1>就能显示出来。
下面我们介绍一下难一点的:
我们怎么让body输出的内容不输出呢?
一、 是这样的我们在那个java文件中的那个dostartTag这个的方法中返回值是Tag.SKIP_BODY,那么我们就看不到那个在标签里面的内容了。Tag.EVAL_BODY_INCLUDE就能显示出来了
二、怎么省略这个页面不显示呢?是这样的我们在这个jsp的开始的文件标签上面添加上我们的自定义的标签,然后我们在对应得java中写上
public int doEndTag() throws JspException{
//TODO Auto-generated method stub
returnSKIP_PAGE;
三、 我们怎么在网页中重复显示内容呢?我们还是用自定义标签这次是 public int doAfterBody() throws JspException {
count--;
System.out.println(count);
if(count>0){
return IterationTag.EVAL_BODY_AGAIN ;
}else {
count=5;
return IterationTag.SKIP_BODY;
}
}
解释一下这个doAferbody()这个函数如是返回值是IterationTag.EVAL_BODY_AGAIN ;的那个我们继续进行输出。如果IterationTag.SKIP_BODY我们就返回下一步
四、我们怎么更改内容呢?是这样的我们在doEndTag()这个函数中写
public int doEndTag() throws JspException {
BodyContent bc=this.getBodyContent();
String string=bc.getString();
string=string.toLowerCase();
try {
pageContext.getOut().write(string);
} catch (IOException e) {
// TODO Auto-generatedcatch block
throw new RuntimeException();
}
return Tag.EVAL_PAGE;
}
public int doStartTag() throws JspException {
// TODO Auto-generatedmethod stub
return EVAL_BODY_BUFFERED;
}
就是说我们把说有的字符变成了小写。就是这样的。我们讲课不深大家好好理解一下就行了。