- 浏览: 214978 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (151)
- java综合 (53)
- Struts1 (4)
- Oracle (9)
- 环境配置 (14)
- Hibernate (6)
- javascript (11)
- Spring (3)
- Oracle常用傻瓜问题1000问 (13)
- jquery (6)
- Android (5)
- DWR (3)
- Sql server 2005 (1)
- JasperReport (3)
- sturts2 (3)
- ExtJS (2)
- SQL (2)
- SQLITE (1)
- WebService (1)
- java队列 (2)
- Socket (1)
- JSTL标签+OGNL标签 (1)
- 乱码 (1)
- 设计模式 (1)
- Android经验分享 (3)
- 撒旦法 (0)
- 开源库 (1)
最新评论
-
Mr.Cheney:
Apple_2011 写道为什么我删了后还是报这个错啊?
检查 ...
解决办法java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports -
Apple_2011:
为什么我删了后还是报这个错啊?
解决办法java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports -
yangguang111345:
ORA-01922: CASCADE must be spec ...
Oracle 删除用户时出现错误ora-01922: CASCADE must bu specified to drop 用户名 -
移动硬盘:
遇到同樣的錯誤,已使用此方法解決成功,謝謝博主。
OracleDBconsoleorcl无法启动解决方案 -
NeverGiveUpToChange:
非常的不错,学习学习…………
java中timer用法
今天同事问我,如何对jsp上用户的某个功能进行限制,具有相应的权限,则能执行相应的功能,否则不可见或者不能执行! 我当时告诉他可以建个类,这个类继承BodyTagSupport类。然后重写它的 doStartTag()方法!前提是还要在WEB-INF目录下建立tag文件夹,再tag文件夹下建立 .tld文件,然后再加以配置就可以实现限制权限的功能!晚上回到家闲着没事就把写了个源代码实例!欢迎大家拍砖!
首先,我们先建立 TagPrivilege 类
package cn.zg.tools; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; public class TagPrivilege extends BodyTagSupport { private String privilegeContent;//权限的内容 private String trueMsg;// 有权限应输出的内容 private String falseMsg;//无权限应输出的内容 public String getPrivilegeContent() { return privilegeContent; } public void setPrivilegeContent(String privilegeContent) { this.privilegeContent = privilegeContent; } public String getTrueMsg() { return trueMsg; } public void setTrueMsg(String trueMsg) { this.trueMsg = trueMsg; } public String getFalseMsg() { return falseMsg; } public void setFalseMsg(String falseMsg) { this.falseMsg = falseMsg; } @Override public int doStartTag() throws JspException{ String text = (String) pageContext.getSession().getAttribute("privilege"); try { if(privilegeContent.equals(text)){ this.pageContext.getOut().write(trueMsg); }else{ this.pageContext.getOut().write(falseMsg); } return EVAL_BODY_INCLUDE; } catch (Exception e) { // TODO: handle exception } return EVAL_BODY_INCLUDE; } }
然后我们还要配置.tld文件: 注意把TagPrivilege类中用到的属性写在tld文件中!如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>privilege</shortname> <uri>http://cn.zg.tools/privilege</uri> <tag> <name>privilege</name> <tagclass>cn.zg.tools.TagPrivilege</tagclass> <attribute> <name>privilegeContent</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>trueMsg</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>falseMsg</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
如果是新手的话,可能对这个tld文件的xml代码中的标签有些陌生,别急,我来告诉大家。 name 标签对应的是标签类TagPrivilege的属性名, required 则表示是否为必填, rtexprvalue 表示在是否可以在里面写入EL表达式。
做完这一步,就算是大功告成了! ,那么如何进行使用呢? 请看下面的jsp代码!
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="p" uri="http://cn.zg.tools/privilege"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>权限测试</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <% request.getSession().setAttribute("privilege","show"); %> <body> <p:privilege privilegeContent="close" trueMsg="欢迎访问,您已经获得权限!" falseMsg="您无权限 访问!"/> </body> </html>
不知大家可否注意:jsp页面上tablib引用的uri为: http://cn.zg.tools/privilege 。它和.tld文件中定义的uri标签是一致的!
现在大家猜想一下 页面的输出结果是什么,
首先假设用户已经登陆,我在session设置他对某个按钮的功能为可见,暂定为
request.getSession().setAttribute("privilege","show");
然后当我们在页面中使用
<p:privilege privilegeContent="close" trueMsg="欢迎访问,您已经获得权限!" falseMsg="您无权限 访问!"/>
这个标签的时候,就会自动的执行TagPrivilege类中的doStartTag()方法,方法中通过pageContext.getSession().getAttribute("privilege"); 得到用户的权限,
然后根据用户在标签上提供的
privilegeContent="close"
来进行比较,如果相等,则用户具有此权限,否则没有,由此可以进行扩展的是,用户登陆后我们获取用户的权限的集合,然后保存在session中,那么对应的某一个按钮,是否可以执行一个权限,那么就看这个session中的权限集合是否包含该按钮的权限,假如包含则:反馈trueMsg内容,否则反馈falseMsg内容!
我们可以把trueMsg 和 falseMsg 的内容写成true 或者false,当为fasle就把按钮设置为隐藏或者不可点击,为true则显示按钮或可点击! 这样就实现了用户对某个按钮上的权限的使用!
因为"close" != "show" ,所以页面会输出falseMsg的内容,即“您无权限访问!”,假如把
privilegeContent的值改为 "show",那么和session的键为“privilege”的值是一致的,那么输出“欢迎访问,您已经获得权限!”
为了新手学习,我提供了源码(里面还有我写的struts2的“国际化全局资源配置”源码,因为我写tag自定义标签是在前面这个项目上临时加的功能! 直接访问项目的index.jsp页面就可以看到国际化和tag自定义标签这两种技术的效果)放在附件里,欢迎下载! 老鸟请绕道! 呵呵!
发表评论
-
androidd 几个开源框架
2013-10-30 12:16 568http请求开源框架: AsyncHttpClient ( ... -
java获取一个0到N的随机数
2013-10-25 09:26 890private int getRandom(int ... -
Java线程:线程的同步-同步块
2012-04-06 11:20 869Java线程:线程的同步-同步块 对于同步,除了同步方法 ... -
精通java的25个标准
2012-03-24 16:43 7531.你需要精通面向对象分析与设计(OOA/OOD)、涉及 ... -
冒泡排序
2012-03-17 18:23 845import java.io.BufferedReader; ... -
validator的使用,jsp回显提示信息
2012-03-10 10:07 844UserAction.java package com.r ... -
引入标签的地址
2012-03-10 10:07 870<%@ taglib prefix="&quo ... -
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
2012-02-14 14:47 1635eclipse项目中关于导入的项目里提示HttpServlet ... -
Page分页
2011-09-09 15:39 946package util; import java.util ... -
JAVA类反射学习资料
2011-09-02 17:04 12471、获取指定类的构造器 ... -
去掉 URL 中讨厌的 jsessionid
2011-08-31 10:59 1731编写DisableUrlSessionFilter.java类 ... -
urlrewrite可以将动态的URL进行伪静态
2011-08-31 10:10 545urlrewrite可以将动态的URL进行伪静态,比如把 ... -
JSP导出Excel的例子
2011-08-26 17:37 1193<%@ page contentType="a ... -
自定义jstl标签函数,方便开发
2011-08-26 16:17 837自定义JSTL标签函数,方便页面的调用,通过调用函数返回数据进 ... -
如何使用Log4j?
2011-08-24 17:05 628如何使用Log4j? 1、 L ... -
Java开发常用jar包
2011-08-24 17:01 891mail.jar与activation.jar 里 ... -
JSON-RPC-JAVA 的使用(AJAX技术调用java类方法)
2011-08-24 11:20 689JSON-RPC-JAVA 非常好用的一个ajax框架,附上d ... -
JAVA中利用JDOM类库对XML进行简单的包装处理
2011-05-31 10:42 1215package test.base; import java ... -
JDOM读取XML,并且创建XML
2011-05-26 17:10 825package com.brit.cx.common; ... -
如何得到HashMap的所有键名
2011-03-31 16:39 934Set keySet = map.keySet(); ...
相关推荐
tag struts2 自定义标签 实例 tag struts2的自定义标签实例
自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...
自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282
自定义分页标签自定义分页标签自定义分页标签自定义分页标签 多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加
struts2的自定义标签写法,并且有一个例子代码。
jQuery自定义添加标签 仿新浪 仿大街网的添加自定义标签和换一换 收起展开推荐标签效果
6.其它常用标签的使用(代码参名为“补充”的文件夹下的tag.jsp) 45 七、国际化 47 1.action级别下的国际化 47 2.配置package的资源文件 48 3.app级别的资源文件 48 4.使用资源文件的原理 49 5.选择使用资源文件 49...
利用Struts 2标签创建ex3.jsp页面,此页面提交给tag.action,在structs.xml中配置这个action的转发视图为result.jsp在result.jsp页面中显示ex3.jsp页面控件的值。(源代码和实验报告)
struts2 标签 Taglib (Struts2标签库)
网上struts2的资料很多,不过讲解struts2jsp标签的很少,特定上传一个。基于html格式的,基本是直接翻译过来的,很全很详细,您下了绝对不会后悔。另外在附struts2的中文教程一本,这个网上比较多,顺带上吧。好东西...
tag标签相关属性:实现简单标签处理程序 标签处理程序是一个在运行时调用的Java类,它包含在 JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet...
专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用) struts.multipart.saveDir The directory to use for storing uploaded files 设置存储上传...
·Struts2国际化(i18n)您的应用程序 ·Struts2.0转换器(Converter) ·Struts 2.0中实现表单数据校验(Validation) ·拦截器(Interceptor) ·Struts 2中实现IoC ·Struts 2中实现文件上传 ·Struts 2中的...
该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开. struts.diSPAtcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet Request...
JSP自定义Table标签demo JSP自定义Table标签demo JSP自定义Table标签demo
struts2 tag 使用实例.包含所有的tags
自定义多选下拉框标签,只需引用标签即可实现多选下拉框,可以传入参数来改变样式等
· 什么是自定义tag标签? · 怎么使用tag标签? o 声明要使用的tag库 o 找到与之对应的tag处理类 o tag标签的类型 · 自定义tag标签 o tag处理类 o tag库描述 o tag标签示例 o 带属性的tag o ...
主要介绍了Struts2 自定义下拉框Tag标签的相关资料,需要的朋友可以参考下