黑马程序员技术交流社区

标题: JSP中Tag文件与Tag标记有什么用? [打印本页]

作者: 陆建平    时间: 2012-5-22 21:47
标题: JSP中Tag文件与Tag标记有什么用?
JSP中Tag文件与Tag标记有什么用,为什么要用它们?

作者: 谭威    时间: 2012-5-22 23:40
jsp中的自定义标签主要是用于移除jsp页面中的java代码。

  你所说的Tag文件是一个实现tag接口的java类,一般叫做标签处理类,吧jsp中要出现的java代码移动到这个java类中,还需要编写一个tld文件(标签库描述文件),主要用来将标签处理器描述成一个标签。。
比如用来显示当前主机的ip地址在jsp中可以写这样的java脚本代码:
<%  
String ip=request.getRemoteAddr();
out.print(ip);
%>,但是一般在实际开发中是不能在jsp中出现java脚本代码的,你可以写一个单独的java类继承已实现tag接口的抽象类TagSupport
package com.tan.web.tag;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class ViewIp extends TagSupport {

        public int doStartTag() throws JspException {
                HttpServletRequest request=(HttpServletRequest) this.pageContext.getRequest();
                JspWriter out=this.pageContext.getOut();
                String ip=request.getRemoteAddr();
                try {
                        out.print(ip);
                } catch (IOException e) {
                        throw new RuntimeException(e);
                }
                return super.doStartTag();
        }

}


对应的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>A tag library exercising SimpleTag handlers.</description>
    <tlib-version>1.0</tlib-version>
    <short-name>tanwei</short-name>
    <uri>http://www.tanwei.cn</uri>
    <tag>
        <name>viewIP</name>
        <tag-class>com.tan.web.tag.ViewIp</tag-class>
        <body-content>empty</body-content>
    </tag>
</taglib>


对应的jsp为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.tanwei.cn" prefix="tw" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>查看ip</title>
  </head>
  
  <body>
                  <tw:viewIp/>
  </body>
</html>


以上就是标签用来jsp中的java代码的功能,  标签还有很多其他功能  比如 控制jsp页面某一部分是否执行,控制整个jsp是否执行,控制jsp内容重复执行,, 修改jsp的页面输出。

{:soso_e100:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2