博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
干程序员这么多年,没有自己的标签库怎么哪的出手?
阅读量:5121 次
发布时间:2019-06-13

本文共 3305 字,大约阅读时间需要 11 分钟。

干程序员这么多年,没有自己的标签库怎么哪的出手? 基于servlet 和jsp2.0 实现自己的jsp自定义标签

自己实现一个自定义标签的小demo,效果如下

实现步骤

1. 做一个Bo 也就是javabean

package com.bpehome.bo;

public class UserBo {

 
 private String userName;
 
 private String email;
 
 private String age;

 public String getUserName() {

  return userName;
 }

 public void setUserName(String userName) {

  this.userName = userName;
 }

 public String getEmail() {

  return email;
 }

 public void setEmail(String email) {

  this.email = email;
 }

 public String getAge() {

  return age;
 }

 public void setAge(String age) {

  this.age = age;
 }
}

2. 标签实现类

package com.bpehome.tag;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.bpehome.bo.UserBo;

public class UserTag extends TagSupport {

 
 private UserBo user;

     @Override

     public int doStartTag() throws JspException {

         try {

             JspWriter out = this.pageContext.getOut();

             if(user == null) {

                 out.println("No UserInfo Found...");

                 return SKIP_BODY;

             }

             out.println("<table width='500px' border='1' align='center' style='border:1px solid red'>");

             out.println("<tr>");

             out.println("<td width='20%'>Username:</td>");

             out.println("<td>" + user.getUserName() + "</td>");

             out.println("</tr>");

             out.println("<tr>");

             out.println("<td>Age:</td>");

             out.println("<td>" + user.getAge() + "</td>");

             out.println("</tr>");

             out.println("<tr>");

             out.println("<td>Email:</td>");

             out.println("<td>" + user.getEmail() + "</td>");

             out.println("</tr>");

             out.println("</table>");

         } catch(Exception e) {

             throw new JspException(e.getMessage());

         }

         return SKIP_BODY;

     }

     @Override

     public int doEndTag() throws JspException {

         return EVAL_PAGE;

     }

     @Override

     public void release() {

         super.release();

         this.user = null;

     }

     //getter and setters

     public UserBo getUser() {

         return user;

     }

     public void setUser(UserBo user) {

         this.user = user;

     }

}

3.web-inf 文件夹下 做一个mytaglib.tld 文件

<?xml version="1.0" encoding="UTF-8"?>

<taglib version="2.0" xmlns=""

 xmlns:xsi=""

 xsi:schemaLocation=" web-jsptaglibrary_2_0.xsd">

<tlib-version>1.0</tlib-version>

<jsp-version>2.0</jsp-version>

<short-name>sbean</short-name>

<uri>/mytaglib</uri>

<tag>

    <name>showUserBo</name>

    <tag-class>com.bpehome.tag.UserTag</tag-class>

    <body-content>empty</body-content>

    <attribute>

        <name>user</name>

         <required>false</required>

         <rtexprvalue>true</rtexprvalue>

    </attribute>

 </tag>

</taglib>

4.web.xml文件中定义如下

<jsp-config>

    <taglib>
        <taglib-uri>/mytaglib</taglib-uri>
        <taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
    </taglib>
  </jsp-config>

5.如何使用这个标签

<%@ page language="java" contentType="text/html; charset=UTF-8"

 pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page isELIgnored="false" %>
<%@ taglib uri="/mytaglib" prefix="sbean"%>

<%@ page import="com.bpehome.bo.UserBo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自定义标签练习</title>

<%

 UserBo user = new UserBo();

    user.setUserName("令狐冲之12");

    user.setAge("25");

    user.setEmail("");

 
    pageContext.setAttribute("userBo", user); 

 %>

</head>

<body>

  <!-- 给标签设置user属性绑定要展现的UserInfo对象  -->

    <sbean:showUserBo user="${pageScope.userBo}" />

</body>

<html>

----------------------------------------------------------

别惊呆哦 大家有什么不明白的吗?

转载于:https://www.cnblogs.com/qylbg/p/3191183.html

你可能感兴趣的文章
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>