JSP自制标签。以一只真正的菜鸟角度来审视自制标签。。。
来源:互联网 发布:全国各省经纬度数据 编辑:程序博客网 时间:2024/05/01 23:09
声明: 我是个新手,文章中有什么写得不正确的欢迎大家指出。共同学习,一起进步。
首先明白:自制标签是一种将动态内容加入到jsp页面的一种方法。类似的方法还有5种,在后面的文章我会介绍。它的好处是:使用起来像HTML标签一样,有利于增强jsp页面的表现逻辑(方便不太懂java的美工吧).
要使用自制标签我们要进行以下3个步骤(其实就是制作自制标签库的3的成员):
1、创建标签库句柄类,它定义了自制标签的行为。
很多术语听上去很高深翻译过来很简单的。所谓句柄类是个啥我也不清楚。但可以肯定的这一步就是写个java类,这个类定义系统看见这个标签的具体行为。
2创建TLD(标签库描述),它把xml元素名字映射到tag实现。
创建个.tld文件。文件的内容和性质和xml很类似
3、jsp页面,写好了自制标签,也配置好了当然就是要使用它了
实例: 这个实例通过自制标签,把一个user类的信息显示在前台页面。
1、
user类
Public class User(){
private String userName;
private String email;
private int 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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
标签库句柄类
package cn.bl.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class UserTag extends TagSupport {
private User user;
public int doStartTag() throws JspException {
// 获取写出对象
JspWriter out = this.pageContext.getOut();
try {
if (user == null) {
out.println("没找到对应的用户");
// 返回这个函数说明你已经标签数据写进jsp页面了
return SKIP_BODY;
} else {
out.println("<strong algin='center'>第一次用自制标签,向jsp写数据。请大家多多指教</strong>");
out.println("<hr>");
out.println("<table width='500px' align='center' border='1'>");
out.println("<tr>");
out.println("<td>用户名</td>");
out.println("<td>年龄</td>");
out.println("<td>邮箱</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>" + user.getName() + "</td>");
out.println("<td>" + user.getAge() + "</td>");
out.println("<td>" + user.getEmil() + "</td>");
out.println("</tr>");
out.println("</table>");
}
} catch (IOException e) {
throw new JspException(e.getMessage());
}
return SKIP_BODY;
}
// getter and setters
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
@Override
public void release() {
super.release();
this.user = null;
}
}
2创建TLD(标签库描述)
在WEB-INF下新建。
在新建时会让你填入写参数,填入的参数和下面配置文件里的参数是对应的。
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>ff</short-name>
<uri>/firsttag</uri>
<tag>
<name>showUser</name>
<tag-class>cn.bl.tag.UserTag</tag-class>//对应你句柄类所在的包
<body-content>empty</body-content>
<attribute>
<name>user</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
然后在xml里配置
<jsp-config>
<taglib>
<taglib-uri>/firsttag</taglib-uri>
<taglib-location>/WEB-INF/firsttag.tld</taglib-location>
</taglib>
</jsp-config>
3、用jsp显示
注意引入语句
<%@ page language="java" import="java.util.*,cn.bl.tag.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/firsttag" prefix="ff"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- 创建需要展现User的实例(用于测试数据) -->
<%
User user = new User();
user.setName("曾花卷");
user.setAge(33);
user.setEmil("ssf@dd.com");
pageContext.setAttribute("userinfo", user);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<!-- 给标签设置user属性绑定要展现的UserInfo对象 -->
<ff:showUser user="${pageScope.userinfo}" />
</body>
</html>
看看效果吧
- JSP自制标签。以一只真正的菜鸟角度来审视自制标签。。。
- [Struts-Dbgrid]自制的Struts DbGrid标签秀
- php 自制基于simple_html_dom的爬虫一只v1.0
- 自制
- 自制JS小工具:列出指定HTML标签的所有属性和事件
- 以死亡来审视企业
- 自制一小型的linux系统mylinux
- 自制一小型的linux系统mylinux
- 菜鸟学Android(四十四):jsp标签技术简介及jsp标签的开发详解
- 勿以自己的经历来审视他人
- 自制一寸照片
- jsp页面表格中<textarea>标签的菜鸟级错误
- jsp标签库学习(一)标签库的介绍
- JSP的自定义标签(一)
- MyEclipse里自制JSP模板
- 通过自制CPU来彻底理解CPU的工作原理
- 自制漂亮的select
- 自制longjmp的实现
- Qt自定义信号槽
- 共享变量与数据竞争
- java自带MD5加密Demo
- 学习中的经验和教训
- centos安装eric4出现“No module named QtHelp”的解决办法
- JSP自制标签。以一只真正的菜鸟角度来审视自制标签。。。
- assertion failed: Path for IClasspathEntry must be absolute解决方法
- 徒弟离职引发的思考
- NotePad++ 格式化java插件
- Myclipse中修改类注释显示作者名称与当前日期
- 真彩与伪彩互相转换
- 好吧
- 唐僧团队的成功秘诀(转载)
- vi.不及物动词 vt. 及物动词 ad.是副词