jsp自定义标签实现权限拦截
来源:互联网 发布:java笔试 编辑:程序博客网 时间:2024/05/22 16:06
1、编写标签类,标签类就是普通的java类,只是该类要继承TagSupport类。
2、建立TLD文件,定义表达式函数。
3、在JSP页面内导入并且使用。
案列说明:
1、编写标签类
public class PermissionTag extends TagSupport { //模块 private String module; //模块中具体权限 private String privilege; public String getModule() { return module; } public void setModule(String module) { this.module = module; } public String getPrivilege() { return privilege; } public void setPrivilege(String privilege) { this.privilege = privilege; } @Override public int doStartTag() throws JspException { boolean result = false; User user = WebUtil.getUser((HttpServletRequest) pageContext.getRequest());//WebUtil是自定义的工具类,获取此时登陆的用户 SystemPrivilege privilege = new SystemPrivilege(new SystemPrivilegePK(this.module,this.privilege)); for(PrivilegeGroup privilegeGroup : user.getGroups()){//循环检测用户具有的权限组 privilegeGroup.getPrivileges().contains(privilege);//用户的权限是否包含功能权限 result = true; break; } return result? EVAL_BODY_INCLUDE : SKIP_BODY;//真:返回EVAL_BODY_INCLUDE(执行标签);假:返回SKIP_BODY(跳过标签不执行) }}
2、建立TLD文件,该文件要放在类文件夹下META-INF下。
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>yuguan wuxipolice permission taglib</description><!-- 描述 --> <display-name>permission taglib</display-name> <tlib-version>1.0</tlib-version><!-- 版号 --> <short-name>yunguan</short-name> <!-- 简单名称 --> <uri>http://www.wuxipolice.cn/</uri> <!-- 引用路径 -->
<tag> <description>权限校验标签,有权限就显示标签体的内容,否则不显示</description> <name>permission</name> <!-- 标签名 --> <tag-class>com.yg.web.taglib.PermissionTag</tag-class> <!-- 标签类 --> <body-content>JSP</body-content> <attribute> <description></description> <name>module</name> <!-- 属性名 --> <required>true</required> <!-- 标签的属性是否是必须的 --> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description></description> <name>privilege</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
3、在JSP页面内导入并且使用。
<%@ taglib uri=http://www.wuxipolice.cn/WEB-INF/classes/META-INF/permission prefix="yg" %> 引入
.........省略
<yg:permission module="department" privilege="update"> <a href="<html:rewrite action="/control/department/manage"/>?method=editDepartmentUI&departmentid=${entry.departmentid}"> <img src="/images/edit.gif" width="15" height="16" border="0"></a> </yg:permission>
........省略
- 回复u012765139:第二个SystemPrivilegePK
package com.isoftstone.bean.privilege;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
/**
* 系统权限实体的联合主键,用作标示属性的实体要实现序列化接口
*/
@Embeddable
public class SystemPrivilegePK implements Serializable{
private static final long serialVersionUID = -3808348043686366319L;
/** 模块 **/
private String module;
/** 权限值 **/
private String privilege;
public SystemPrivilegePK(){}
public SystemPrivilegePK(String module, String privilege) {
this.module = module;
this.privilege = privilege;
}
@Column(length=20, name="module")
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
@Column(length=20, name="privilege")
public String getPrivilege() {
return privilege;
}
public void setPrivilege(String privilege) {
this.privilege = privilege;
}
}
回复u012765139:这是两个javabean
第一个SystemPrivilege
@Entity
public class SystemPrivilege {
private SystemPrivilegePK id;
private String name;
private Set<PrivilegeGroup> groups = new HashSet<PrivilegeGroup>();/**权限被分配到的权限组**/
public SystemPrivilege(){}
public SystemPrivilege(String module, String privilege, String name) {
this.id = new SystemPrivilegePK(module, privilege);
this.name = name;
}
public SystemPrivilege(SystemPrivilegePK id) {
this.id = id;
}
/**联合主键的表示方式**/
@EmbeddedId
public SystemPrivilegePK getId() {//JPA 实体的标识属性必须实现序列化
return id;
}
public void setId(SystemPrivilegePK id) {
this.id = id;
}
@Column(length=20,nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(cascade=CascadeType.REFRESH, mappedBy="privileges")
public Set<PrivilegeGroup> getGroups() {
return groups;
}
public void setGroups(Set<PrivilegeGroup> groups) {
this.groups = groups;
}
}
- 回复u012765139:第二个SystemPrivilegePK
- jsp自定义标签实现权限拦截
- jsp自定义标签实现权限拦截
- jsp自定义标签实现权限拦截
- 自定义jsp标签实现页面元素的权限控制
- JSP自定义标签实现按钮级权限控制
- jstl自定义标签实现jsp页面元素权限控制
- 自定义JSP标签自动完成对页面按钮做权限拦截处理
- 自定义标签拦截及实现
- Jsp自定义标签实现
- jsp实现自定义标签
- 实现jsp 自定义标签
- 实现jsp自定义标签
- 自定义标签实现按钮权限
- 基于struts2拦截器的权限控制系统2——基于自定义JSP标签的前台html元素控制
- JSP自定义标签的实现
- JSP自定义标签实现过程
- JSP自定义标签实现过程
- jsp自定义标签实现分页
- Quic协议在Voip的应用。
- yum无法正常使用
- MyEclipse部署工程, Tomcat部署后改变名字
- VMware vSphere Web Services SDK编程指南(十一)- 11.2 使用分布式虚拟交换机
- 安装 go 语言开发环境
- jsp自定义标签实现权限拦截
- 关于 子网掩码,IP,网关,DNS 的概述
- FreeRTOS+STM32F103系列--1.移植
- Windows位图(Bitmap)和调色板(Palette)
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
- Word Amalgamation
- xml两种解析原理对比
- 感悟
- Uncaught Error: Bootstrap's JavaScript requires jQuery