基于jsp自定义标签,实现用户鉴权

共分为4大部分:

1、自定义标签PermissionTagHandler应用场景

2、PermissionTagHandler类的实现

3、配置PermissionTagHandler

4、使用PermissionTagHandler



1、自定义标签PermissionTagHandler应用场景

   用户列表userList.do需要,查看权限UserList

2、PermissionTagHandler类的实现

import com.cicc.admin.AdminConstant;
import com.cicc.enums.Permission;
import java.io.IOException;
import java.util.Arrays;
import java.util.Set;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;

/**
 *
 * @author superxg
 */
public class PermissionTagHandler extends SimpleTagSupport {

    private String permissions;

    @Override
    public void doTag() throws JspException, IOException {
        Set<Permission> granted = getGrantedPermissions();
        if (permissions != null && granted != null) {
            List<Permission> permissionList = Arrays.asList(permissions.split(",")).stream().map(x -> Permission.valueOf(x)).collect(Collectors.toList());
            if (permissionList.stream().anyMatch(x -> granted.contains(x))) {
                getJspBody().invoke(null);
            }
        }
    }

    public void setPermissions(String permissions) {
        this.permissions = permissions;
    }

    /**
     * 获得当前登录员工的权限
     *
     * @return
     */
    private Set<Permission> getGrantedPermissions() {
        EmployeeBeanSession session = getSession();
        if (session != null) {
            return session.getPermissions();
        } else {
            return null;
        }
    }

    /**
     * 获取当前Session
     *
     * @return
     */
    private EmployeeBeanSession getSession() {
        JspContext context = getJspContext();
        Object session = context.getAttribute(AdminConstant.SESSION_KEY, PageContext.SESSION_SCOPE);
        if (session != null && session instanceof EmployeeBeanSession) {
            return (EmployeeBeanSession) session;
        }
        return null;
    }
}

  

3、配置PermissionTagHandler

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
    <tlib-version>1.0</tlib-version>
    <short-name>gg</short-name>
    <uri>/WEB-INF/tld/platform</uri>
    <tag>
        <name>permission</name>
        <tag-class>com.cicc.admin.web.PermissionTagHandler</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
            <name>permissions</name>
            <required>false</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
</taglib>

  

4、使用PermissionTagHandler

<gg:permission permissions="USER_LIST">
                        <li id="li_users_list" <c:if test="${modelType==‘userList‘}">class="active"</c:if>  >
                                <a href="user/list.do"><span class="glyphicons glyphicons-group"></span> 用户列表 </a>
                        </li>
 </gg:permission>
时间: 2024-11-10 08:37:17

基于jsp自定义标签,实现用户鉴权的相关文章

基于JSP 自定义标签使用实例介绍

添加JSP自定义标签: 先添加一个tld文件到WEB-INF文件夹中<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://

JSP自定义标签开发入门《转》

JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 目标1:自定义一个用表格显示用户信息的简单标签 效果图: 在jsp页面使用此自定义标签: 假设我们有一个UserInfo的javabean,那

整理一份jsp自定义标签以及权限控制标签

jsp自定义标签使用场景因地制宜,可以实现自定义的标签输出功能也可以实现权限的管理 1:先定义标签类 1-1:页面输出标签 package com.suyin.web.jspsectag; import java.io.IOException; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.Tag; public cla

JSP自定义标签开发入门

一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 目标1:自定义一个用表格显示用户信息的简单标签 效果图: 在jsp页面使用此自定义标签: 假设我们有一个UserInfo的javabean,那么在JSP页面使用此标签只

【Jsp】JSP自定义标签与MODEL1、MODEL2标准

在JSP2.0之后支持自定义标签,现在一般都是jsp2.4的版本了,所以无须考虑版本的问题.直接使用就可以了.虽然一般开发的过程中,很少会自己定义JSP标签,但是通过一个JSP自定义标签的学习,可以从一定程度上理解struts等框架把好好的JSP标签改得面目全非的机理.正如Jquery本质是Javascript一样,SSH实际上Jsp.其实也没有什么,一个简单的例子就能够完全说明如何在JSP中自定义的标签. 通过自定义标签就能够达到所谓的MODEL2标准,在展示层VIEW给别人看的网页中不得出现

JSP自定义标签开发

一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 一, 自定义标签  :实现了特定接口的java类,封装了java代码编写的预定义行为.  * 在运行时,标签被替换成相应的预定义java代码. * JSP 自定义标记提

JSP自定义标签入门实例详解

JSP自定义标签主要能用到的两个包 javax.servlet.jsp.*;javax.servlet.jsp.tagext.*; 自定义标签<userInfo:showUserInfo/>实现对用户的展现. 效果图如下 定义用户累User.java  get set就不在赘述. private String userName; private Integer age; private String email; public User(){ this.userName="张三&qu

JSP自定义标签渲染时报Illegal to flush错误

javax.servlet.ServletException:Illegal to flush within a custom tag 此错误是因为在JSP页面中的某一个自定义标签的doStartTag或doEndTag中用了out.flush,而其他的自定义标签没有导致.可以去掉out.flush. JSP自定义标签渲染时报Illegal to flush错误,布布扣,bubuko.com

JSP 自定义标签 生命周期

1. 2. JSP 自定义标签 生命周期,布布扣,bubuko.com