tag自定义标签

其实有很多时间看到一些新闻 都想放弃了 但是觉得自己有必要坚持一下!!!

最近在温习一个项目 里面用到了easyui  json 菜单权限 拦截器 session cookie 让我的印象有更深了一成!

前面已经说过easyui json  这里我们来说是菜单权限 

记得我第一次接触菜单权限是在用户表里分别的。  一个超级用户 一个普通用户 我想这也是当时最简单的权限区分了吧

登录判断 user.isSuperUser();如果是就跳转到一个超级用户的页面 如果不是就跳转到页面b

这也许就是最简单的权限区分了吧

但是这个思路是不会错的

首先 我们在登录的时候去验证 验证它是不是超级用户  如果是 的话 就直接true 返回真的

如果不是 我们再接着判断  这个跟固定的模式不同的一点是 他有权限 而且 他的权限是多变的 不是固定的 所以 你为某一个角色

赋权限 需要是动态的  那么 我们怎么让他动起来呢

因为我们的菜单是从后台数据库读取的 所以 我们可以给菜单加权限

那么我们又要思考了 怎么给菜单加权限 呢  

打个比方  这就跟限号差不都 今天147 明天258 但是 菜单我怎么限号呢  我能不能把他拦截下来呢

告诉你 能  肯定能

自定义标签tag

什么是tag?

一个tag就是一个普通的java类,它唯一特别之处是它必须继承 TagSupport或者BodyTagSupport类。这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。而这两个类 是由jsp容器提供的,无须开发人员自己实现。

    public final static int SKIP_BODY = 0;
   public final static int EVAL_BODY_INCLUDE = 1   

      0表示不用处理标签体,直接调用doEndTag()方法。
  1表示需要处理标签体,但绕过setBodyContent()和doInitBody()方法

当是1的时候显示菜单 如果是0  则不显示

package com.tlh.view.tags;

import com.tlh.util.ValidateUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

public class RightFilter implements Tag {
    private String url;
    private PageContext pageContext;

    public int doEndTag() throws JspException {
        return 4;
    }
//   0表示不用处理标签体,直接调用doEndTag()方法。
    // 1表示需要处理标签体,但绕过setBodyContent()和doInitBody()方法
    public int doStartTag() throws JspException {
        HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
        
        return ValidateUtil.hasRight(this.url, request) ? 1 : 0;
    }

    public Tag getParent() {
        return null;
    }

    public void release() {
    }

    public void setPageContext(PageContext arg0) {
        this.pageContext = arg0;
    }

    public void setParent(Tag arg0) {
    }

    public String getUrl() {
        return this.url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

ValidateUtil.hasRight()如果是true那么就返回1 如果flase就返回0

那么什么情况下会是true 就是查看你的这个用户名在权限表里对应的菜单id是否存在

所以我们这里需要一个权限表 而我们的权限是跟角色对应的 所以 这里有一个角色权限表 fyh_role_link

我们只要在这里面查询数据就可以了------未完待续

你可能感兴趣的:(原创,有源码,java,自己)