JSP编写定制标签
来源:互联网 发布:数组排序最快的方法 编辑:程序博客网 时间:2024/05/21 10:52
- 定制标签概述
定制标签的实现成为标签处理器(Tag Handler),简单的标签处理器是指实现SimpleTag接口的标签处理器。 - 简单的标签处理器的生命周期
(1) JSP容器通过吊桶无参构造器来创建一个简单的实例。所以,简单的标签处理器必须有一个无参构造器。
(2) Jsp容器调用JspContext方法,同时传递一个JspContext对象,其中最重要的方法是getOut,它返回一个响应到客户端。
(3) 如果标签处理器的定制标签是另一个标签的子标签,JSP容器就会调用setParent方法。
(4) JSP容器会给该标签的每个属性都调用设置方法setter
(5)如果标签有主体内容,JSP就会调用SimpleTag接口中的setJspBody方法,把主体的内容作为JspFragment传递。
(6) JSP调用doTag方法。所有的变量在doTag方法返回时进行同步。 - 例子
MyFirstTag类
public class MyFirstTag implements SimpleTag{ JspContext jspContext; @Override public void doTag() throws JspException, IOException { // TODO Auto-generated method stub System.out.println("doTag"); jspContext.getOut().print("this is my first tag"); } @Override public JspTag getParent() { // TODO Auto-generated method stub System.out.println("getParent"); return null; } @Override public void setJspBody(JspFragment arg0) { // TODO Auto-generated method stub System.out.println("setJspBody"); } @Override public void setJspContext(JspContext jspContext) { // TODO Auto-generated method stub System.out.println("setJspContext"); this.jspContext = jspContext; } @Override public void setParent(JspTag parent) { // TODO Auto-generated method stub System.out.println("setParent"); }}
mytags.tld
<?xml version="1.0" encoding="ISO-8859-1"?><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/web-jsptaglibrary_2_0.xsd" verson="2.0"> <description>Simple tag examples</description> <tlib-version>1.0</tlib-version> <jspversion>2.3</jspversion> <short-name>My First Taglib Example</short-name> <tag> <name>firstTag</name> <tag-class>tag.MyFirstTag</tag-class> <body-content>empty</body-content> </tag></taglib>
如果要使标签里面有内容 里面的值应该为scriptless
使用标签
jsp文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ taglib uri="/WEB-INF/mytags.tld" prefix="easy" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>First Tag</title></head><body>Hello!<easy:firstTag></easy:firstTag></body></html>
访问页面:
控制台输出:
在调用jsp页面时,JSP会调用标签处理器的setJspContext方法。由于标签中没有主体内容,jsp不会在调用doTag方法之前调用setJspBody方法。JSP容器也没有调用setParent方法,因为该标签没有嵌套在另一个标签里面。
错误解决:
1.
type Exception report
message Mandatory TLD element jsp-version missing or empty in TLD /WEB-INF/funcation.tld
description The server encountered an internal error that prevented it from fulfilling this request.
在tld文件中,设置的jsp版本不正确
在tomcat的lib中找到jsp-api.jar。
查看里面的META-INF/MANIFEST.MF
标记部分就是jsp的版本。查看servlet的版本也一样(servlet-api.jar中)
阅读全文
0 0
- JSP编写定制标签
- JSP编写定制标签之处理属性
- JSP编写定制标签之管理标签主体
- 编写定制标签
- jsp 定制标签
- JSP定制标签库
- JSP 定制标签
- jsp定制分页标签
- JSP自定义标签编写
- JSP自定义标签编写
- 编写JSP自定义标签
- 第六章_编写定制标签
- jsp 自定义标签的编写
- jsp自定义标签的编写
- 又是星期五,小试牛刀(编写定制标签)
- 为JSP编写自定义标签(1)
- 为JSP编写自定义标签(2)
- 与JSTL以及其他JSP定制标签一起使用JSF
- C语言排序之鸡尾酒排序篇
- C语言之文件系统编程(1)
- (hnust 1586)Maximum Product
- HTTP状态码的分类
- 第三方登录
- JSP编写定制标签
- HTML5开发者心声:浏览器兼容性成最大问题
- quartz各版本MySQL数据库存储建表SQL语句
- 异步请求上传图片
- js严格模式
- 6种负载均衡算法
- XYNUOJ 第四次比赛 懒省事得小名
- L2-005. 集合相似度
- 2017多校四 1003题 hdu 6069 Counting Divisors 分解质因数