A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆建平 中级黑马   /  2012-5-22 21:47  /  1983 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JSP中Tag文件与Tag标记有什么用,为什么要用它们?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
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:}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马