zoukankan      html  css  js  c++  java
  • Jstl自定义标签

    第一步:在web-inf下创建一个tld文件

    <?xml version="1.0" encoding="UTF-8" ?>  
    <taglib xmlns="http://java.sun.com/xml/ns/javaee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
        http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
        version="2.1">  
        <description>  
        <![CDATA[security Tags]]>  
        </description>  
        <tlib-version>1.0</tlib-version>  
        <short-name>security</short-name>  
        <uri>http://www.springsecurity.org/jsp</uri>
        <tag>  
            <description>  
            <![CDATA[authorize Tag]]>  
            </description>  
            <name>authorize</name>  
            <tag-class>  
               cn.tms.util.AuthorizeTag
            </tag-class>  
            <body-content>JSP</body-content>  
            <attribute>  
                <name>URL</name>  
                <required>false</required>  
                <rtexprvalue>true</rtexprvalue>  
                <type>java.lang.String</type>  
            </attribute>  
        </tag>  
    </taglib>  
    authorize.tld

    第二步:创建一个类继承BodyTagSupport

    package cn.tms.util;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.jsp.tagext.BodyTagSupport;
    
    import cn.tms.dao.IPrivilegeDAO;
    import cn.tms.dao.IRoleDAO;
    import cn.tms.entity.Privilege;
    import cn.tms.entity.UserInfo;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;
    //标签
    public class AuthorizeTag  extends BodyTagSupport {
        //你提供一个用户名字,我给一个用户拥有的权限集合,并且操作是在权限的DAO中
            private IPrivilegeDAO privilegeDAO;
            private String URL;
            public String getURL() {  
                return URL;  
            }  
            public void setURL(String uRL) {
                URL = uRL;  
            }  
            @Override  
            public int doStartTag() {
                // 如果URL不空就显示URL,否则就不显  
                if (null != URL) {
                    getUserDao();
                    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
                    UserInfo info=(UserInfo)request.getSession().getAttribute("userinfo");
                    List<Privilege> list = privilegeDAO.findAllPrivilegeByUserId(info.getUserid());
                    System.out.println(list.size());
                    
                    for (Privilege item : list) {
    
                        System.out.println(URL+"==========================");
                        if(item.getUrl().equals(URL)){
                              //正确渲染该标签
                              return EVAL_BODY_INCLUDE;  
                        }
                    }
                  
                }  
                return this.SKIP_BODY;  
            }
            public void getUserDao() {
                  WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
                privilegeDAO=(IPrivilegeDAO)applicationContext.getBean("IPrivilegeDAO");
            }
    
    }
    AuthorizeTag

    第三步: 在页面上使用之前在页面上添加

    <%@taglib prefix="Authorize" uri="http://www.springsecurity.org/jsp" %>
    *注意:这里的URi的地址和web-inf里面配的地址保持一致
    最后使用:


    这里Authorize是你自己定义的

    URL是传入到Authorize里的,然后和后台取到的url进行对比,如果一致就在页面上渲染此标签,不一致就不渲染此标签
  • 相关阅读:
    [计算机网络-传输层] 无连接传输:UDP
    [BinaryTree] 最大堆的类实现
    [OS] 生产者-消费者问题(有限缓冲问题)
    [剑指Offer] 64.滑动窗口的最大值
    [剑指Offer] 63.数据流中的中位数
    [剑指Offer] 62.二叉搜索树的第k个结点
    [OS] CPU调度
    [剑指Offer] 60.把二叉树打印成多行
    MySQL数据库实验二:单表查询
    数据库实验:基本表的定义与修改
  • 原文地址:https://www.cnblogs.com/with-lj/p/7898263.html
Copyright © 2011-2022 走看看