- 浏览: 221128 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (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 615http请求开源框架: AsyncHttpClient ( ... -
java获取一个0到N的随机数
2013-10-25 09:26 942private int getRandom(int ... -
Java线程:线程的同步-同步块
2012-04-06 11:20 944Java线程:线程的同步-同步块 对于同步,除了同步方法 ... -
精通java的25个标准
2012-03-24 16:43 8041.你需要精通面向对象分析与设计(OOA/OOD)、涉及 ... -
冒泡排序
2012-03-17 18:23 881import java.io.BufferedReader; ... -
validator的使用,jsp回显提示信息
2012-03-10 10:07 901UserAction.java package com.r ... -
引入标签的地址
2012-03-10 10:07 906<%@ taglib prefix="&quo ... -
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
2012-02-14 14:47 1671eclipse项目中关于导入的项目里提示HttpServlet ... -
Page分页
2011-09-09 15:39 981package util; import java.util ... -
JAVA类反射学习资料
2011-09-02 17:04 13001、获取指定类的构造器 ... -
去掉 URL 中讨厌的 jsessionid
2011-08-31 10:59 1783编写DisableUrlSessionFilter.java类 ... -
urlrewrite可以将动态的URL进行伪静态
2011-08-31 10:10 596urlrewrite可以将动态的URL进行伪静态,比如把 ... -
JSP导出Excel的例子
2011-08-26 17:37 1232<%@ page contentType="a ... -
自定义jstl标签函数,方便开发
2011-08-26 16:17 895自定义JSTL标签函数,方便页面的调用,通过调用函数返回数据进 ... -
如何使用Log4j?
2011-08-24 17:05 666如何使用Log4j? 1、 L ... -
Java开发常用jar包
2011-08-24 17:01 933mail.jar与activation.jar 里 ... -
JSON-RPC-JAVA 的使用(AJAX技术调用java类方法)
2011-08-24 11:20 718JSON-RPC-JAVA 非常好用的一个ajax框架,附上d ... -
JAVA中利用JDOM类库对XML进行简单的包装处理
2011-05-31 10:42 1249package test.base; import java ... -
JDOM读取XML,并且创建XML
2011-05-26 17:10 855package com.brit.cx.common; ... -
如何得到HashMap的所有键名
2011-03-31 16:39 990Set keySet = map.keySet(); ...
相关推荐
在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...
在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...
总结,Struts2的自定义标签实例涉及到以下几个关键步骤:创建标签实现类、定义标签描述符、在JSP中使用标签以及处理标签逻辑。通过这种方式,我们可以构建强大的视图层组件,使代码更易于理解和维护,同时提升应用的...
3. **配置Struts2**:在Struts2的配置文件struts.xml中,你需要声明你的自定义标签库,这样框架才能识别并使用它们。 4. **在JSP页面中使用**:最后,你可以在JSP页面中引入标签库,并像使用内置标签一样使用自定义...
在 Struts 中,我们可以通过实现 `org.apache.struts.taglib.Tag` 接口来创建自定义标签。 二、创建自定义标签库 1. 创建 Tag 类:首先,我们需要创建一个 Java 类,该类继承自 `org.apache.struts.taglib.Tag` 或...
在Struts2中,自定义标签的实现是提升可重用性和简化视图层代码的一个重要特性。下面我们将深入探讨如何在Struts2中实现自定义标签,以及其背后的原理。 自定义标签的创建主要涉及以下三个步骤: 1. **创建taglib...
然而,有时候我们可能需要根据项目需求定制特定的功能,比如这里的"自定义标签代替Struts标签实现分页"。下面将详细阐述这个主题。 一、自定义标签的原理 自定义标签是JavaServer Pages (JSP) 技术的一个强大特性,...
在Struts2的配置文件(通常是`struts.xml`)中,添加标签库的配置,让框架知道如何找到并使用这些自定义标签。 ```xml <struts> <!-- 其他配置 --> <constant name="struts.custom.i18n.resources" value=...
在IT领域,自定义标签是Java Web开发中的一个重要概念,特别是在使用JSP和Struts2框架时。自定义标签能够帮助我们创建可重用、可维护的代码,提高开发效率,使得视图层的逻辑更加清晰。本教程资料集主要探讨了如何...
Struts2的标签库基于Apache的Commons Taglib项目,它提供了一系列内置的标签,如`s:text`、`s:property`等,用于处理表单、国际化和数据绑定等任务。自定义标签则允许我们扩展这些功能,以满足特定的业务需求。 ...
下面将详细探讨如何在Struts2中创建和使用自定义标签。 首先,自定义标签是JSP标准标签库(JSTL)的扩展,允许我们定义自己的标签来简化页面编码。在Struts2中,自定义标签通常通过Action类和结果视图来与后台业务...
本文将探讨如何自定义JSP标签来实现类似于Struts Text标签的功能,并扩展到支持图片和JS文件的国际化。 首先,我们需要创建一个自定义的JSP标签库。这通常涉及到两个主要部分:标签处理类(Tag Handler Class)和...
最后,在JSP页面中,我们可以像使用其他Struts2标签一样使用自定义的分页标签,通过属性传递参数。 ```jsp <%@ taglib prefix="s" uri="/struts-tags" %> ${currentPage}" total="${totalPages}" url="list....
2. **创建标签处理类(Tag Handler Class)**:标签处理类是实现自定义标签逻辑的核心,它需要继承自Struts2提供的基类,如`org.apache.struts2.views.jsp.ui.TagSupport`。在该类中,我们需要重写父类的方法来处理...
自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...