自定义带属性标签

创建工程

Dynamic Web Project 重要目录如下
这里写图片描述

UserController.java

package com.foot.controller;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



@WebServlet(urlPatterns= {"*.do"})
public final class UserController extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("张三", 21);
        map.put("李四", 13);
        map.put("王五", 26);
        req.setAttribute("map", map);
        req.getRequestDispatcher("/index.jsp").forward(req, resp);//转发到
    }
}

MyTag.java

package com.foot.tag;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public final class MyTag  extends SimpleTagSupport {
    private String map;
    public String getMap() {
        return this.map;
    }
    public void setMap(String map) {
        this.map = map;
    }
    @Override
    public void doTag() throws JspException, IOException {
        System.out.println(this.map);
        PageContext pageContext = (PageContext)getJspContext();
        HttpServletRequest hreq = (HttpServletRequest) pageContext.getRequest();
        @SuppressWarnings("unchecked")
        Map<String, Integer> maps = (HashMap<String, Integer>)hreq.getAttribute("map");
        for (String key : maps.keySet()) {
            pageContext.getOut().println("<tr>");
            pageContext.getOut().println("<td>");
            pageContext.getOut().println(key);
            pageContext.getOut().println("</td>");
            pageContext.getOut().println("<td>");
            pageContext.getOut().println(maps.get(key));
            pageContext.getOut().println("</td>");
            pageContext.getOut().println("</tr>");
        }
    }
}

mytag.tld

<?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">
    <!-- 标签的描述 -->
    <description>My tag library exercising SimpleTag handlers.</description>
    <!-- 标签的版本 -->
    <tlib-version>1.0</tlib-version>
    <!-- 标签的名字 -->
    <short-name>MyTag</short-name>
    <!-- 标签的唯一id值 -->
    <uri>http://MyTag.com/core</uri>
   <tag>
        <description>Repeats the body of the tag</description>
        <name>MyTag</name>
        <tag-class>com.foot.tag.MyTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>map</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://MyTag.com/core" prefix="mytag"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>带属性标签</title>
</head>
<body>
    <table border="1" cellpadding="0" cellspacing="0">
        <mytag:MyTag map="map111"/>
    </table>
</body>
</html>

web.xml自动生成的即可

测试

http://localhost:8080/JavaBeanTest/index.do
访问index.do是因为@WebServlet(urlPatterns= {“*.do”})
servlet接收以这个结尾传来的内容,名字index不重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值