JSP自定义标签实现按钮级权限控制
2014-09-18 13:50
555 查看
使用jsp自定义标签,来实现根据当前用户角色显示不显示操作按钮。本文没有说明自定义标签的使用方式,只是概述讲解使用自定义标签来处理按钮控制大体思路。
部分实现核心代码及其流程如下:
1使用按钮的jsp文件:
首先引入自定义标签文件
其次获取session中存放的用户信息用来传到自定义标签处理类,判断是否拥有权限操作。
<%@ taglib prefix="mytag" uri="/http://xiami.****.com.cn/kali/core"%>
<%
HttpSession Session = request.getSession();
String user = (String)Session.getAttribute("UserName");
%>
按钮标签
<mytag:buttonURL user="<%=user%>" url="addURLUI.do" jsmethod="javascript:addURL();" image="images/sys/add.png" value="添加URL"/>
2自定义标签模板文件
<?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>
<short-name>mytag</short-name>
<description><![CDATA[Custom tag library for this application]]></description>
<tag>
<name>buttonURL</name>
<tag-class>com.*.mytag.ButtonUrlTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>user</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>jsmethod</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>image</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>alt</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3web.xml配置
<!-- 自定义标签 -->
<jsp-config>
<taglib>
<taglib-uri>/http://xiami.****.com.cn/kali/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/kalitags.tld</taglib-location>
</taglib>
</jsp-config>
<!-- 自定义标签结束 -->
4自定义 标签处理类
public class ButtonUrlTag extends TagSupport {
private static final long serialVersionUID = -7811902545513255473L;
//标签属性用户名
private String user = null;
//标签属性操作url
private String url = null;
//标签属性 js方法
private String jsmethod = null;
//标签属性image 按钮图片
private String image = null;
//标签属性 alt 提示
private String alt = null;
//标签属性操作value 按钮文本
private String value = null;
/* 标签初始方法 */
public int doStartTag() throws JspTagException{
return super.EVAL_BODY_INCLUDE;
}
/* 标签结束方法 */
public int doEndTag() throws JspTagException{
Boolean b = false;
List list = new ArrayList();
Permission p = new Permission();
JDBCHibernate jdbca = new JDBCHibernate();
try {
list = jdbca.getHaveURLByUsernameList(user);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i = 0;i < list.size(); i++){
p = (Permission) list.get(i);
if(p.getUrl().trim().equals(url.trim())){
b = true;
//如果jsmethod属性不为null 则把超链接href改为调用js
if(jsmethod!=null){
url = jsmethod;
}
}
}
JspWriter out = pageContext.getOut();
if(b){
try {
//有权限 显示操作按钮
out.println("<a href='" +url+ "' class='regular'><img src='" + image + "' alt='" + alt +"' />" + value + "</a>");
} catch (IOException e) {
e.printStackTrace();
}
}
return super.SKIP_BODY;
}
/* 释放资源 */
public void release(){
super.release();
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getAlt() {
return alt;
}
public void setAlt(String alt) {
this.alt = alt;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getJsmethod() {
return jsmethod;
}
public void setJsmethod(String jsmethod) {
this.jsmethod = jsmethod;
}
}
部分实现核心代码及其流程如下:
1使用按钮的jsp文件:
首先引入自定义标签文件
其次获取session中存放的用户信息用来传到自定义标签处理类,判断是否拥有权限操作。
<%@ taglib prefix="mytag" uri="/http://xiami.****.com.cn/kali/core"%>
<%
HttpSession Session = request.getSession();
String user = (String)Session.getAttribute("UserName");
%>
按钮标签
<mytag:buttonURL user="<%=user%>" url="addURLUI.do" jsmethod="javascript:addURL();" image="images/sys/add.png" value="添加URL"/>
2自定义标签模板文件
<?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>
<short-name>mytag</short-name>
<description><![CDATA[Custom tag library for this application]]></description>
<tag>
<name>buttonURL</name>
<tag-class>com.*.mytag.ButtonUrlTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>user</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>jsmethod</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>image</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>alt</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3web.xml配置
<!-- 自定义标签 -->
<jsp-config>
<taglib>
<taglib-uri>/http://xiami.****.com.cn/kali/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/kalitags.tld</taglib-location>
</taglib>
</jsp-config>
<!-- 自定义标签结束 -->
4自定义 标签处理类
public class ButtonUrlTag extends TagSupport {
private static final long serialVersionUID = -7811902545513255473L;
//标签属性用户名
private String user = null;
//标签属性操作url
private String url = null;
//标签属性 js方法
private String jsmethod = null;
//标签属性image 按钮图片
private String image = null;
//标签属性 alt 提示
private String alt = null;
//标签属性操作value 按钮文本
private String value = null;
/* 标签初始方法 */
public int doStartTag() throws JspTagException{
return super.EVAL_BODY_INCLUDE;
}
/* 标签结束方法 */
public int doEndTag() throws JspTagException{
Boolean b = false;
List list = new ArrayList();
Permission p = new Permission();
JDBCHibernate jdbca = new JDBCHibernate();
try {
list = jdbca.getHaveURLByUsernameList(user);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i = 0;i < list.size(); i++){
p = (Permission) list.get(i);
if(p.getUrl().trim().equals(url.trim())){
b = true;
//如果jsmethod属性不为null 则把超链接href改为调用js
if(jsmethod!=null){
url = jsmethod;
}
}
}
JspWriter out = pageContext.getOut();
if(b){
try {
//有权限 显示操作按钮
out.println("<a href='" +url+ "' class='regular'><img src='" + image + "' alt='" + alt +"' />" + value + "</a>");
} catch (IOException e) {
e.printStackTrace();
}
}
return super.SKIP_BODY;
}
/* 释放资源 */
public void release(){
super.release();
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getAlt() {
return alt;
}
public void setAlt(String alt) {
this.alt = alt;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getJsmethod() {
return jsmethod;
}
public void setJsmethod(String jsmethod) {
this.jsmethod = jsmethod;
}
}
相关文章推荐
- 通过servlet.jsp.tagext.TagSupport的自定义标签实现按钮权限控制
- web JSP页面按钮权限控制(tld标签标签类实现BodyTagSupport)
- 自定义标签实现按钮权限控制
- jsp自定义标签实现权限拦截
- 自定义jsp标签实现页面元素的权限控制
- SpringMVC+Spring+Mybatis +Annotation实现方法,按钮级别的细粒度权限控制
- JSP自定义标签_用简单标签实现控制标签体是否执行
- 使用angular 实现简单 用户-角色-菜单-按钮权限控制
- Spring MVC+FreeMarker实现页面按钮权限控制1
- SpringMVC+Annotation实现方法、按钮级别的细粒度权限控制
- 自定义标签 + shiro 实现权限细粒度控制
- jstl自定义标签实现jsp页面元素权限控制
- jsp自定义标签实现权限拦截
- 自定义标签实现网站权限的控制
- 一款二级菜单和使用自定义标签实现简单权限控制
- 2012-04-25 10:23 velocity 自定义标签实现页面权限控制
- 基于Vue自定义指令实现按钮级权限控制思路详解
- jsp自定义标签实现权限拦截
- 通过SpringMVC+Annotation实现方法、按钮级别的细粒度权限控制
- 自定义标签实现网站权限的控制