博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过继承Struts2标签,实现页面元素的显示权限控制
阅读量:5107 次
发布时间:2019-06-13

本文共 1810 字,大约阅读时间需要 6 分钟。

通过Struts2拦截器实现权限系统,网上有太多的例子.

这里记录的只是页面上某个连接能否显示的控制.

场景: 用户没有权限执行"修改记录"这个操作.那么,在页面中,"修改记录"这个链接也不应该出现

环境: Struts2.1.8 其实哪个版本无所谓

我的实际环境: Eclipse3.5 + jboss Tool + EJB3 +mysql5

步骤:

1. 在WEB-INF 下新建一个 tld文件,我这里命名是ems-tag.tld.内容拷贝自Struts-core.jar/meta-inf/目录下

"权限控制UI Tags"
1.0
ems
/ems2-tags
a
cn.vs9.ems.web.tags.ui.AnchorTag
JSP
以下若干代码略过,完全和Struts2的一样....

2. 继承标签类: org.apache.struts2.views.jsp.ui.AnchorTag

 
/**
重写的Struts2 Link标签
* <ems:a action="${ActionUrl}" >链接</ems:a>
*
* 标签作用,在执行url之前判定是否有"权限"在页面呈现 执行链接.
* "权限"依赖此用户组是否有权限执行此Action
*/
public
class
AnchorTag
extends
org.apache.struts2.views.jsp.ui.AnchorTag {
/**
* 是否通过授权.默认否
*/
private
boolean
isAccess
=
false
;
@Override
public
int
doEndTag()
throws
JspException {
System.out.println(
"
doEndTag
"
);
if
(
!
isAccess){
return
SKIP_BODY;
}
return
super
.doEndTag();
}
@Override
public
int
doStartTag()
throws
JspException {
System.out.println(
this
.action);
//
根据url判断
//
这里替换成具体的权限判断
isAccess
=
true
;
if
(
!
isAccess){
return
SKIP_BODY;
}
return
super
.doStartTag();
}
}

3. 在页面试用

现在运行一下,试着切换标签类中的isAccess =true | false 看效果吧

其他标签也可以使用此方式进行. 目前我实现了a标签和action标签,项目基本就够用了 思路: 把页面分页为多个视图. 通过 
的方式 .可以动态实现页面部件的组合
 
<%
@ page language
=
"
java
"
contentType
=
"
text/html; charset=UTF-8
"
pageEncoding
=
"
UTF-8
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<%
@ taglib prefix
=
"
ems
"
uri
=
"
/ems2-tags
"
%>
<
ems
:
a action
=
"
/data/user_update.action?entity.id=1
"
>
修改用户
</
ems
:
a
>

转载于:https://www.cnblogs.com/jifsu/archive/2011/06/06/2073485.html

你可能感兴趣的文章
整体二分——[Poi2011]Meteors
查看>>
数据库3
查看>>
delphi之事件
查看>>
windows server 2008 r2 安装
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
c++ STL
查看>>
json数据在前端(javascript)和后端(php)转换
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Groovy中那些神奇注解之ToString
查看>>
Day19内容回顾
查看>>