其实有很多时间看到一些新闻 都想放弃了 但是觉得自己有必要坚持一下!!!
最近在温习一个项目 里面用到了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
我们只要在这里面查询数据就可以了------未完待续