功能 :判断当前用户是否有权限访问当页面
思路:读取当前用户的权限(在登陆验证是设置的)
和标签在jsp页面取到的值进行比较,不匹配时跳转到指定页面
总结:标签类一般存放在web-inf/lib
xxxx.tld 配置 标签类的参数定义和指定类名
web-inf.xml 指定xxxx.tld的位置和定义名字
<mytag:CheckPower power="manager" gotoPage="login.jsp"/>
错误总结:写标签类的时候get/set方法漏了 ,报错。
写jsp页面时ctrl c ctrl v时 uri没改,页面不认。
下步目标:标签类进行验证时能将验证错误信息写入session或者request
然后能通过jsp页面读取到该错误信息
===================CheckPower.class(标签类程序)==================================
package com.mytld;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class CheckPower extends TagSupport {
private String power;
private String gotoPage;
public int doEndTag() throws JspException {
String userPower = (String) pageContext.getSession().getAttribute(
"power");
try {
if (!power.equals(userPower)) {
pageContext.forward(gotoPage);
return super.EVAL_PAGE;
}
} catch (Exception e) {
e.printStackTrace();
}
return super.EVAL_PAGE;
// return super.SKIP_BODY ;
// return super.SKIP_PAGE;
}
public String getGotoPage() {
return gotoPage;
}
public void setGotoPage(String gotoPage) {
this.gotoPage = gotoPage;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
}
================manager.jsp==================================
<%@ page pageEncoding="GBK" contentType="text/html; charset=GBK" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="mytag" prefix="mytag" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title>manager</title>
</head>
<body>
<center>manager</center>
<mytag:CheckPower power="manager" gotoPage="login.jsp"/>
<logic:present name="LoginBean" scope="request">
<bean:write name="LoginBean" property="passWord"/>
</logic:present>
</body>
</html>
================mytag.tld===================
<?xml version="1.0" encoding="Shift_JIS"?>
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mytag</shortname>
<tag>
<name>CheckPower</name>
<tagclass>com.mytld.CheckPower</tagclass>
<attribute>
<name>power</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>gotoPage</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
==================web.xml(片断)===========================
<taglib>
<taglib-uri>mytag</taglib-uri>
<taglib-location>/WEB-INF/mytag.tld</taglib-location>
</taglib>
分享到:
相关推荐
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...
- 权限控制:自定义标签可以用于判断用户权限,动态地显示或隐藏某些内容。 6. **工具支持** 开发自定义标签时,一些工具和框架提供了便利,如Apache Struts的Tiles和Spring Web Flow。这些工具提供了更高级别的...
本教程资料集主要探讨了如何利用自定义标签来控制访问链接权限,并结合Struts2框架进行实践。 首先,我们来理解taglib原理。Taglib是JSP标签库的简称,它允许开发者创建符合XML规范的自定义标签,这些标签可以封装...
一个自定义标签其实是一个Java类,这个类需要继承自`TagSupport`或`BodyTagSupport`。这两个类由JSP容器提供,它们包含处理JSP页面与自定义标签之间交互所需的方法。选择继承哪个基类取决于标签是否需要处理内部内容...
在这个项目中,开发者尝试模仿Apache Shiro框架,通过自定义标签和自定义注解来实现权限的细粒度控制,从而更好地管理和限制用户访问特定的资源。 Apache Shiro是一个强大且易用的Java安全框架,处理认证、授权、...
创建自定义标签的第一步是编写一个Java类,该类需要继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.BodyTagSupport`。这两个基类提供了与JSP页面交互所需的基本方法。 **示例代码:** ```...
Java JSP 自定义标签开发是Java Web开发中的一个重要组成部分,它允许开发者扩展JSTL提供的标准标签库,以满足特定的业务...在实际项目中,自定义标签常用于实现一些特定的业务逻辑,如数据验证、权限控制、计算等。
2. JSP页面,使用自定义标签`<secure-access>`,并结合Spring Security的表达式语言(SpEL)进行权限判断。 3. AngularJS的`app.js`或单独的`.js`文件,定义了`permission`指令,接收后端提供的权限信息并决定是否...
这篇"Spring Security进阶篇 V 自定义标签控制显示"的博客文章显然深入探讨了如何在Spring Security中实现自定义的安全控制,以便更好地管理和展示应用内容。在本文中,我们将详细解析这个主题,并与"JSP自定义标签...
Freemarker支持条件判断、循环结构、内置函数,以及自定义标签,增强了模板的灵活性。与JSP相比,Freemarker通常被认为更简洁、易读且更易于维护。 将这三个框架结合使用,可以构建出高效、灵活的Java Web应用。...
这个类是自定义标签的核心,其中`operateID`属性用于存储操作ID,通过setter方法`setOperateID`设置。`doStartTag()`方法检查`operateID`是否匹配预定义的值(例如:"111111"),如果匹配,允许输出HTML代码,表示...
Android的权限管理系统主要位于frameworks\base\core\java\android\content\pm\包下,如Permission类、PackageManagerService类等。通过阅读这些源码,我们可以学习到权限的注册、检查、请求等过程的具体实现。 ...
自定义权限可以视为第三类,它们允许开发者为自己的应用定义额外的控制级别。 创建自定义权限的过程主要包括以下步骤: 1. **定义权限**: 在Android项目的`AndroidManifest.xml`文件中,使用`<permission>`标签...
4. 配置`AndroidManifest.xml`,在服务标签中声明你的`InputMethodService`,并赋予相应的权限。 5. 在应用程序中,用户需要在系统设置中选择你的自定义键盘作为当前输入法,才能使用它。 接下来,我们讨论如何...
授权(Authorization)是判断用户是否有执行某个操作的权限,这正是我们实现按钮权限的关键。我们可以将角色和权限信息存储在数据库中,然后通过Shiro的权限API进行查询和校验。 在实现按钮级别的权限控制时,我们...
同时,需要在`frameworks/base/core/res/AndroidManifest.xml`文件中声明权限的保护级别、所属的权限组以及权限的标签和描述。 6. App申请权限的实现: App需要在其AndroidManifest.xml文件中声明其需要使用的权限...
首先,我们要了解`NetworkUtil`这一标签所代表的知识点。`NetworkUtil`通常是一个工具类,用于封装网络状态检查的相关方法。它可能包括检测网络是否可用、获取网络类型(如Wi-Fi、4G、3G)以及网络连接状态变化监听...
根据`onRequestPermissionsResult()`中的回调,应用可以判断权限是否已被授予,并相应地执行或不执行需要权限的操作。 总结来说,`DefinePermissionTestApp`和`UseDefinePermissionTestApp`为我们展示了Android中...
这里的 `<x:auth>` 是一个自定义标签,它包含了权限检查的逻辑表达式。标签内的内容只会在满足表达式的条件下显示或执行,为权限控制提供了动态和灵活的方式。 3. **解析器**:逻辑表达式解析器是程序的一部分,它...
在CicadasCMS中,Beetl负责页面渲染,允许开发者使用强大的模板语言来创建动态网页,同时支持自定义标签库,使得模板更加灵活和模块化。 关于自定义内容模型,CicadasCMS允许用户根据需求定义不同的数据结构,例如...