干程序员这么多年,没有自己的标签库怎么哪的出手? 基于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>----------------------------------------------------------
别惊呆哦 大家有什么不明白的吗?