本帖最后由 大山哥哥 于 2019-2-26 15:00 编辑
之前整理了一篇“JSP自定义标签-自定义函数”,现在聊一下“JSP自定义标签-自定义页面标签”,希望对这方面有兴趣朋友有所帮助。 首先有三个问题:什么是jsp自定义标签?为什么、什么时候自定义标签?怎么自定义标签、函数? 1.什么是jsp自定义标签? jsp自定义标签是用户定义的jsp语言元素。我们自己定义的jsp标签可以直接在jsp页面中使用,并且这些标签具有丰富的效果和功能。 2.为什么、什么时候自定义标签? 当现有的jsp标签库、函数库不能满足我们项目开发过程中一些特殊的需求时,我们就可以使用自己定义的标签来完成我们想要功能。
自定义标签的应用场景:1.jsp标签库、函数库不能满足项目中需求 2.标签被定义出来以后会经常被使用 3.怎么自定义标签、函数? 1.确立目标(标签帮助我们完成什么功能):根据项目需求自定义标签 假想目标:标签可以把“2019-10-10”或“2019/10/10”转换为“2019年10月10日 2.自定义页面标签正式开发流程: 1.创建动态web工程,如下图:
2.导入需要依赖的jar包“fastjson-1.2.28.jar”,“jstl.jar”,“standard.jar”,如下图:(文章末尾处会提供项目源码)
3.编写自定义标签库 注意:标签的位置要在WEB-INF目录下,标签库的名称以“.tld”结尾,如下图:
4.编写标签处理类(注意:要和标签库中类的路径和名称保持一致“com.itcast.CustomTag”),具体代码如下: [Java] 纯文本查看 复制代码 package com.itcast;[/p]import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 描述:自定义日期格式化标签
* @author zhuan
* @version 2019年2月25日 下午3:24:12
*/
public class CustomTag extends SimpleTagSupport {
private String dateStr;
/**
* 日期格式化处理逻辑
*/
public void doTag() throws JspException, IOException {
String[] date = null;
if(dateStr.trim().contains("-")){
date = dateStr.trim().split("-");
}else{
date = dateStr.trim().split("/");
}
JspWriter out = getJspContext().getOut();
out.print(date[0]+"年 "+date[1]+"月 "+date[2]+"日");
}
public String getDateStr() {
return dateStr;
}
public void setDateStr(String dateStr) {
this.dateStr = dateStr;
}
}
5.自定义标签测试,编写测试页面index.html,代码如下: [HTML] 纯文本查看 复制代码 <%@ page language="java" contentType="text/html; charset=UTF-8"[/p] pageEncoding="UTF-8"%>
<%@ taglib prefix="hm" uri="http://www.itcast.cn/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ITCAST Custom Tag</title>
</head>
<body>
<hm:fmt dateStr="2019-10-10"/>
<hr/>
<hm:fmt dateStr="2088/08/08"/>
</body>
</html> 6.测试结果,如下图:
总结:在实际项目开发过程中,我们一般不会自定义标签、函数,只有当标签库、函数库不能满足项目中需求或者我们公司自己要封装一套自己公司的框架的时候才会用到,在者就是可能开发新框架的时候可能会自定义标签库、函数库。以上纯属个人见解,如有质疑,欢迎留言探讨,谢谢。
|