自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面就来看一下自定义标签的简介:
自定义标签主要用于移除Jsp页面中的java代码。
移除jsp页面中的java代码,只需要完成两个步骤:
编写一个实现Tag接口的Java类继承SimpleTagSupport,并覆盖doTag方法,把jsp页面中的java代码写到doTag方法中,目的是使用该方法来控制标签页面。
编写标签库描述符(tld)文件,在tld文件中对自定义标签进行描述。
完成以上操作,即可在JSP页面中导入和使用自定义标签。
JAVA部分代码:
public class TestTaglib extends SimpleTagSupport{
private Long columnSize;
private String titles;
@Override
public void doTag() throws JspException, IOException {
JspFragment bodyContent = getJspBody();
//bodyContent.invoke(null);
//1、利用StringWriter得到标签体的内容
StringWriter sw = new StringWriter();
bodyContent.invoke(sw);
//2、把标签体的内容全部变成大写
String context = sw.toString().toUpperCase();
//3、获取jsp的隐含对象out,将内容输出到页面上
getJspContext().getOut().println(context);
}
public Long getColumnSize() {
return columnSize;
}
public void setColumnSize(Long columnSize) {
this.columnSize = columnSize;
}
public String getTitles() {
return titles;
}
public void setTitles(String titles) {
this.titles = titles;
}
}
tld文件:
web.xml部分配置
jsp部分的使用:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="www.sjcj.com/taglib/core" prefix="sj" %>
注意事项:名称需要对应好,标签中如果存在属性,那么java文件必须中必须配置相应属性的set()和get()
属性存在的必须性是在xxxx.tld中进行控制的。