<?xml version="1.0" encoding="UTF-8" ?>
    version="2.0">
    <!-- description用来添加对taglib(标签库)的描述 -->
    <description>zfx的自定义标签库</description>
    <!--taglib(标签库)的版本号 -->
    <tlib-version>1.0</tlib-version>
    <short-name>GaclTagLibrary</short-name>
    <!-- 
        为自定义标签库设置一个uri,uri以/开头,/后面的内容随便写,如这里的/gacl ,
        在Jsp页面中引用标签库时,需要通过uri找到标签库
        在Jsp页面中就要这样引入标签库:<%@taglib uri="/gacl" prefix="gacl"%>
    -->
    <uri>/gacl</uri>
    <!--一个taglib(标签库)中包含多个自定义标签,每一个自定义标签使用一个tag标记来描述  -->
    <!-- 一个tag标记对应一个自定义标签 -->
     <tag>
        <description>这个标签的作用是用来输出客户端的IP地址</description>
        <!-- 
            为标签处理器类配一个标签名,在Jsp页面中使用标签时是通过标签名来找到要调用的标签处理器类的
            通过viewIP就能找到对应的cn.springmvc.controller.ViewIPTag类
         -->
        <name>viewIP</name>
        <!-- 标签对应的处理器类-->
        <tag-class>cn.springmvc.controller.ViewIPTag</tag-class>
        <body-content>jsp</body-content><!-- empty 或者 -->
         <attribute> 
    <name>userName</name> 
    <required>true</required> 
    <rtexprvalue>true</rtexprvalue> 
  </attribute> 
    </tag>
 
</taglib>
-----------------------------------------------------------------------------------------------
package cn.springmvc.controller;
import java.io.IOException;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
public class ViewIPTag implements Tag  {
     //接收传递进来的PageContext对象
    private PageContext pageContext;
    private String userName;
    @Override
    public int doEndTag() throws JspException {
        System.out.println("调用doEndTag()方法");
        return 0;
    }
    @Override
    public int doStartTag() throws JspException {
        if(userName.equals("John")){
            System.out.println("1231");
            return SKIP_BODY;  //不继续执行了。
        }
        System.out.println("调用doStartTag()方法");
        System.out.println(userName);
        HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();
        JspWriter out = pageContext.getOut();
        String ip = request.getRemoteAddr();
        try {
            //这里输出的时候会抛出IOException异常
            out.write(ip);
            out.write("<h1>呵呵</h1>");
        } catch (IOException e) {
            //捕获IOException异常后继续抛出
            throw new RuntimeException(e);
        }
        System.out.println(SKIP_BODY);
        System.out.println(EVAL_PAGE);
        return EVAL_PAGE; //继续执行的意思
    }
    @Override
    public Tag getParent() {
        return null;
    }
    @Override
    public void release() {
        System.out.println("调用release()方法");
    }
    @Override
    public void setPageContext(PageContext pageContext) {
        System.out.println("setPageContext(PageContext pageContext)");
        this.pageContext = pageContext;
    }
    @Override
    public void setParent(Tag arg0) {
 
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
}
 
--------------------------------------------------------------------------------------------
<%@ page language="java" pageEncoding="UTF-8"%>
<!-- 使用taglib指令引用gacl标签库,标签库的前缀(prefix)可以随便设置,如这里设置成 prefix="xdp" -->
<%@taglib uri="/gacl"  prefix="xdp"%>
<!DOCTYPE HTML>
<html>
  <head>
    <title>输出客户端的IP</title>
  </head>
  <body>
    你的IP地址是(使用java代码获取输出):
    <%
        //在jsp页面中使用java代码获取客户端IP地址
        String ip = request.getRemoteAddr();
        out.write(ip);
    %>
    <hr/>
     你的IP地址是(使用自定义标签获取输出):
     <%--使用自定义标签viewIP --%>
     <xdp:viewIP userName="John1231" >添加</xdp:viewIP>
  </body>
</html>

java自定义标签 权限的更多相关文章

  1. java 自定义标签 传值

    <?xml version="1.0" encoding="UTF-8" ?>   <taglib xmlns="http://ja ...

  2. Java ---自定义标签

         本篇文章介绍自定义标签,可能在工作中很少涉及到自己来定义一个标签库,因为我们基本上都是使用的大神写的标签库,基本上直接使用即可,但是从自身的发展来看,通往高级程序员的道路上,开发框架就需要大 ...

  3. Java ---自定义标签(二)

    上篇文章的最后,我们自定义了一个带属性的标签,并使用它完成了一个简单的案例.其实到这我们已经可以看出来,前端jsp页面只需要写一个类似html语法的标签,就可以完成将集合中的数据取出来并展示这么相对复 ...

  4. [转][Java]自定义标签简介

    作用:自定义标签主要用于移除 jsp 页面中的 java 代码. 实现:需要完成以下两个步骤: 编写一个实现 Tag 接口的 Java 类,把页面 java 代码移到这个 java 类中.(标签处理类 ...

  5. JSP2 自定义标签

    实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标 ...

  6. Java自定义简单标签

     Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...

  7. Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  8. [Java] JSP笔记 - 自定义标签

    自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...

  9. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

    EL应用      自定义一个标签,实现两个字符串的相加 1回顾      1.1servlet生命周期           init(ServletConfig)           service ...

随机推荐

  1. Hibernate Hql 总结

    1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, 因为 auto-import(自 ...

  2. 加载信息,先从数据库取出5条实现分页,鼠标向上滑动触发Ajax再加载5条,达到异步刷新,优化加载。。。

    php数据库取数据 <?php include("conn1.php"); include('../function/functions.php'); $page=intva ...

  3. linux系统判断是否重启、关机、查询登录诊断分析简介

    Last reboot这个命令是查看每次系统重启的信息 [root@dg01 log]# last rebootreboot system boot 2.6.32-300.10.1. Thu May  ...

  4. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

  5. codeforces 719A Vitya in the Countryside(序列判断趋势)

    题目链接:http://codeforces.com/problemset/problem/719/A 题目大意: 题目给出了一个序列趋势 0 .1 .2 .3 ---14 .15 .14 ----3 ...

  6. IdentityDbContext

    Move the ApplicationUser definition to your DAL. Inherit your MyDbContext from IdentityDbContext< ...

  7. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  8. PHPCMS 模板制作标签

    内容模块: 栏目调用1: {pc:content action="category" catid="0" num="25" siteid=& ...

  9. Ajax异步刷新地址栏

    公司项目后台使用现成的UI框架,DevExpress,jqGrid,XXXUI之类的,这些展示数据列表的控件/插件,基本是异步的. 这倒也好,有变化也只是数据那一块变化,不会重新加载整个页面. 但是, ...

  10. 开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o

    前言 业界对持久存储领域的追求从未停止过,为了更方便.更容易地用对象表达我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明了这点.最近一年,业界也在反思,到底 ORM 给我们带 ...