JSP自定义标签

本文详细介绍了JSP自定义标签的使用,包括基本用法、创建无标签体的标签、带有标签体的标签以及定义带属性的标签。通过实例展示了如何实现自定义标签来获取客户端IP,并解释了不同选项的意义。同时,提供了TLD文件配置和标签实现类的代码示例。
摘要由CSDN通过智能技术生成

二、JSP自定义标签

1.自定义标签的基本用法

jsp中支持自定义标签,自定义标签是为了简化代码,使用自定义标签替换一个Java代码片段,完成相同的功能

2.自定义最简单的标签

显示ip地址的j页面

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.baidu.com/jsp/tag" prefix="myTag" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>title</title>
	</head>
	<body>
		<%-- 需求:定义一个标签,实现以下功能 --%>
		<%
			//获取客户端的ip
			String ip = request.getRemoteAddr();
			out.print("ip = " + ip);
		%>
		<br>
		<myTag:clientIp/>
	</body>
</html>

实现标签方法的类

package Servlet;

import java.io.IOException;

import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
//继承SimpleTagSupport
//实现获取客户端ip的功能
//标签需要在tld文件里注册
public class IPTag extends SimpleTagSupport 
{
	//重写doTag()方法
	public void doTag() throws JspException, IOException 
	{
		//获取PageContext对象
		PageContext pc = (PageContext)this.getJspContext();
		//获取请求对象
		ServletRequest request = pc.getRequest();
		//获取客户端ip
		String ip = request.getRemoteAddr();
		//获取标准输出流
		JspWriter out = pc.getOut();
		//将客户端ip写入到输出流中
		out.print("ip = " + ip);
	}
}

配置标签的的myTag.tal文件如下

<?xml version="1.0" encoding="UTF-8"?>
<!-- 添加头部信息 -->
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <!-- 定义标签库信息 -->
    <tlib-version>1.0</tlib-version>
    <short-name>myTag</short-name>
    <uri>http://www.baidu.com/jsp/tag</uri>
    <!-- 注册标签 -->
    <tag>
        <name>clientIp</name>
        <tag-class>Servlet.IPTag</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>

3.定义有标签体的标签

<body-content>中的4个选项及其意义

empty:表示当前标签没有标签体
scriptless:表示当前标签具有标签体,但标签体中不能出现java脚本,但可以出现EL表达式
jsp:已过时,表示当前标签具有标签体。将标签体内容原样显示到浏览器
tagdependent:表示当前标签具有标签体,并将标签体内容原样显示到浏览器,即使标签体中写的是EL,也不会对EL进行计算

4.定义带属性的标签

<tag>标签中要同时注册属性

<attribute>
	<name>XX</name>
	<!--该属性是否必须-->
	<required>true<required>
	<!--runtime expression value 若为true,则该属性的值支持EL与JSP表达式-->
	<rtexprvalue>true</rtexprvalue>
</attribute>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值