基于struts2拦截器的权限控制系统2——基于自定义JSP标签的前台html元素控制
来源:互联网 发布:西安java培训机构 编辑:程序博客网 时间:2024/05/22 16:51
一套完善的权限系统,不仅需要拦截对于后台方法的访问,还需要拦截前台的html内容,比如一个添加按钮是否可见。
针对于前台页面使用JSP实现的情况下,我们可以使用自定义JSP标签进行控制。
使用自定义jsp标签之前必须在web.xml中配置:
<jsp-config>
<taglib>
<taglib-uri>http://www.xinruan.cbb</taglib-uri>
<taglib-location>/WEB-INF/tlds/cbb.tld</taglib-location>
</taglib>
</jsp-config>
其中taglib-location指明了定义自定义标签的tld文件所处的位置,再看一下cbb.tld文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version><!-- 标签库的版本 -->
<jsp-version>1.2</jsp-version><!-- 这个标签库要求的JSP规范版本 -->
<short-name>cbb</short-name><!-- JSP页面编写工具可以用来创建助记名的可选名字 -->
<tag>
<name>access</name><!-- 唯一标签名 -->
<tag-class>com.xinruan.manager.tag.AccessTag</tag-class><!-- 标签HelloWorldTag类的完全限定名 -->
<body-content>scriptless</body-content><!-- 正文内容类型 -->
<attribute>
<name>privilege</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
接下来,我们还需要一个处理标签逻辑的class:
/**
* access标签的java类
*/
public class AccessTag extends TagSupport {
private static final long serialVersionUID = 3174234039143531070L;
/**
* 标签中的属性
*/
private String privilege;
@Override @SuppressWarnings("unchecked")
public int doStartTag() throws JspException {
HttpSession session=pageContext.getSession();
//从session中得到用户的权限列表
List<String> privileges = (List<String>)session.getAttribute("PRIVILEGES");
if (privileges.contains(privilege)) {
//用户权限列表中包含访问所需权限则返回EVAL_BODY_INCLUDE,即输出标签体的内容
return EVAL_BODY_INCLUDE;
}else{
//否则跳过标签体,即不显示标签包含的html内容
return SKIP_BODY;
}
}
@Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
public String getPrivilege() {
return privilege;
}
public void setPrivilege(String privilege) {
this.privilege = privilege;
}
}
做完上面几步,我们的自定义标签就可以在jsp中使用了。
使用之前首先要在jsp的开头引入我们自定义的标签库,在jsp中加入下面这句话:
<%@ taglib prefix="cbb" uri="http://www.xinruan.cbb" %>
假如我们需要控制一个超链接的访问权限:
<cbb:access privilege="UserAdd"><a class="STYLE1" href="javascript:void(0)" onclick="javascript:window.location.href='<s:url action="managerAction!addUI.action"/>'">添加</a></cbb:access>
其中privilege="UserAdd"这个属性定义了显示超链接所需权限。
OK,结合上一篇《基于struts2拦截器的权限控制系统1——后台方法的拦截》我们就能很方便的实现细粒度的权限控制了。
- 基于struts2拦截器的权限控制系统2——基于自定义JSP标签的前台html元素控制
- 基于struts2拦截器的权限控制系统1——后台方法的拦截
- 基于Struts2拦截器的权限控制
- 自定义jsp标签实现页面元素的权限控制
- struts2 使用注解、反射、拦截器实现基于方法的权限控制
- 基于注解和拦截器的权限控制
- 理解基于Acegi的权限控制系统(图)- -
- 一个基于角色的权限控制系统
- ——基于方法的权限控制
- 【Struts2进阶】Struts2拦截器实现基于Url的权限管理
- Struts2—拦截器实现权限控制
- 基于Springmvc的登录权限拦截器
- 基于拦截器的权限管理
- Struts2自定义拦截器实例—登陆权限验证(两种方式的拦截)
- 基于springmvc拦截器得权限控制
- struts2基于注解的拦截器配置
- 基于Struts2拦截器的使用总结
- 反射和注解的妙用——struts2基于方法的权限控制
- Windows Server 2008 R2 下安装 VMWare
- Java利用POI生成Excel强制换行 (转载)
- 解决删除文件、文件夹错误,访问被拒绝请确定磁盘未满或未被写保
- 安装office web apps时,在运行sharepoint配置向导时出现错误
- Linux下解压压缩及打包命令大全
- 基于struts2拦截器的权限控制系统2——基于自定义JSP标签的前台html元素控制
- 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (2)
- 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (3)
- 指令集分类(MISC,CISC,RISC,OISC,ZISC)
- 在 Beagle Board 上引导 Linux
- SilverLight读取XML文件
- 黑马程序员-TCP完善
- 纯js实现div的拖拽功能
- 在 BeagleBoard-xM 上引导 Linux