关于自定义标签的开发说明
自定义标签是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文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>myLib</shortname>
<uri>http://struts.apache.org/tags-html</uri>
<tag>
<name>testJspFragment</name> <!-- 标签对应的名称 -->
<tagclass>com.umsdc.tag.TestTaglib</tagclass> <!-- 标签对应的类 -->
<bodycontent>scriptless</bodycontent>
<!-- 三个属性 -->
<attribute>
<name>columnSize</name> <!-- columnSize属性 -->
<required>true</required> <!-- 是否必须项 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>titles</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>data</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
web.xml部分配置
<jsp-config>
<taglib>
<taglib-uri>www.sjcj.com/taglib/core</taglib-uri>
<taglib-location>/WEB-INF/my-taglib.tld</taglib-location>
</taglib>
</jsp-config>
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" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<sj:testJspFragment columnSize="12" titles="hellojsp">I am a Chinesase ,I love my motherland </sj:testJspFragment>
</body>
</html>
注意事项:名称需要对应好,标签中如果存在属性,那么java文件必须中必须配置相应属性的set()和get()
属性存在的必须性是在xxxx.tld中进行控制的。
推荐阅读
-
用Flutter开发自定义Plugin的方法示例
-
关于firefox的ElementTraversal 接口 使用说明
-
ASP开发中可能遇到的错误信息中文说明大全(整理收集)第1/2页
-
关于mysql数据库误删除后的数据恢复操作说明
-
Android开发笔记之:如何安全中止一个自定义线程Thread的方法
-
jsp简单自定义标签的forEach遍历及转义字符示例
-
.NET开发人员关于ML.NET的入门学习
-
PHP项目开发中最常用的自定义函数整理
-
.NET Core开发的iNeuOS工业互联平台,升级四大特性:配置数据接口、图元绑定数据、预警配置和自定义菜单
-
Bootstrap开发中Tab标签页切换图表显示问题的解决方法