权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项

权限模块__使用权限__实现主页面的效果

HomeAction.java

public class HomeAction extends ActionSupport {
    public String index() {
        return "index";
    }
    public String top() {
        return "top";
    }
    public String bottom() {
        return "bottom";
    }
    public String leaf() {
        return "leaf";
    }
    public String right() {
        return "right";
    }
}

index.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>Itcast OA</title>
        <%@ include file="/WEB-INF/jsp/public/commons.jspf"%>
        <script type="text/javascript"
            src="${pageContext.request.contextPath}/script/jquery_treeview/jquery.cookie.js"></script>
    </head>

    <frameset rows="100,*,25" framespacing=0 border=0 frameborder="0">
        <frame noresize name="TopMenu" scrolling="no"
            src="${pageContext.request.contextPath}/home_top.action">
        <frameset cols="180,*" id="resize">
            <frame noresize name="menu" scrolling="yes"
                src="${pageContext.request.contextPath}/home_left.action">
            <frame noresize name="right" scrolling="yes"
                src="${pageContext.request.contextPath}/home_right.action">
        </frameset>
        <frame noresize name="status_bar" scrolling="no"
            src="${pageContext.request.contextPath}/home_bottom.action">
    </frameset>

    <noframes>
        <body>
        </body>
    </noframes>
</html>

top.jsp

bottom.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
    <title></title>
    <LINK href="${pageContext.request.contextPath}/style/blue/statusbar.css" type=text/css rel=stylesheet>
</head>

<body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>

<div id="StatusBar">
    <div id="Online">
        在线人员:共 <span class="OnlineUser" id="onlineUserNum"></span> 人<span class="OnlineView">
        <a href="javascript:void(0)">[查看在线名单]</a>
</span></div>

    <div id="Info">
        <a href="http://www.itcast.cn" title = "传智播客首页" target=_blank >传智播客首页</a> |
        <a href="http://bbs.itcast.cn" title = "传智播客BBS" target=_blank >传智播客BBS</a>
    </div>

    <DIV id=DesktopText>
        <a href="javascript:void(0)"><img border="0" src="${pageContext.request.contextPath}/style/images/top/text.gif"/> 便笺</a>

        <span id=TryoutInfo>

        </span>
        <span id="Version">
            <a href="javascript:void(0)">
                <img border="0" width="11" height="11" src="${pageContext.request.contextPath}/style/images/top/help.gif" />
                <img border="0" width="40" height="11" src="${pageContext.request.contextPath}/style/blue/images/top/version.gif" />
            </a>
        </span>
    </DIV>
</div>

</body>
</html>

left.jsp

right.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>无标题文档</title>
    </head>

    <body>
    </body>
</html>

WebRoot下的index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%-- 重定向到指定的页面,访问另外一个地址,request.getContextPath()加上当前应用程序名称
    转发:相当于方法调用,在一个应用程序内执行
--%>
<%
    response.sendRedirect(request.getContextPath() + "/home_index.action");
%>

再次访问首页http://localhost:8080/ItcastOA重定向到了http://localhost:8080/ItcastOA/home_index.action

权限模块_使用权限_显示左侧菜单1

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>导航菜单</title>
        <%@ include file="/WEB-INF/jsp/public/commons.jspf"%>
        <link type="text/css" rel="stylesheet" href="style/blue/menu.css" />
    </head>
    <body style="margin: 0">
        <div id="Menu">
            <ul id="MenuUl">
                <%--显示一级菜单 --%>
                <s:iterator value="#application.topPrivilegeList">
                    <li class="level1">
                        <div onClick="menuClick(this);" class="level1Style">
                            <img src="style/images/MenuIcon/FUNC20082.gif" class="Icon" />
                            ${name}
                        </div>
                        <ul style="display: none;" class="MenuLevel2">
                            <%-- 显示二级菜单 --%>
                            <s:iterator value="children">
                            <li class="level2">
                                <div class="level2Style">
                                    <img src="style/images/MenuIcon/menu_arrow_single.gif" />
                                    <a target="right" href="System_Role/list.html"> 岗位管理</a>
                                </div>
                            </li>
                            </s:iterator>
                        </ul>
                    </li>
                </s:iterator>
            </ul>
        </div>
    </body>
</html>

InitListener.java

public class InitListener implements ServletContextListener {

    //获取容器与相关的Service对象

    public void contextInitialized(ServletContextEvent sce) {
        ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); 

        PrivilegeService privilegeService = (PrivilegeService) ac.getBean("privilegeServiceImpl");

        //找到所有的顶级列表,放到最大的作用域中
        //准备数据:topPrivilegeList
        List<Privilege> topPrivilegeList = privilegeService.findTopList();
        sce.getServletContext().setAttribute("topPrivilegeList", topPrivilegeList);
        System.out.println("-----------> 已准备数据 <-----------");

    }

    public void contextDestroyed(ServletContextEvent arg0) {

    }

}

PrivilegeService.java

public interface PrivilegeService extends DaoSupport<Privilege> {
    //查询所有顶级的权限
    List<Privilege> findTopList();
}

PrivilegeServiceImpl.java

@Service
@Transactional
public class PrivilegeServiceImpl extends DaoSupportImpl<Privilege> implements PrivilegeService{

    public List<Privilege> findTopList() {
        return getSession().createQuery(//
                "FROM Privilegea p WHERE p.parent IS NULL")//
                .list();
    }
}

web.xml增加

   <!-- 用于做初始化工作的监听器,一定要配置到spring的 contextConfigLocation之后,因为要用到spring的容器对象-->
    <listener>
        <listener-class>cn.itcast.oa.util.InitListener</listener-class>
    </listener>

懒加载

登录时加载了用户,用户关联的对象都没有加载,但在第二个请求又访问了用户关联的对象,抛懒加载异常

Privilege.hbm.xml

User.hbm.xml

Role.hbm.xml

访问http://localhost:8080/ItcastOA/home_index.action

全部显示

图标问题

打开收回

权限模块__使用权限__显示左侧菜单2__只显示有权限的菜单项

leaf.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>导航菜单</title>
        <%@ include file="/WEB-INF/jsp/public/commons.jspf"%>
        <link type="text/css" rel="stylesheet" href="style/blue/menu.css" />
        <script type="text/javascript">
            function menuClick(menu){
                //$("#aa").hide();
                //$("#aa").show();
                $(menu).next().toggle();
            }

        </script>

    </head>
    <body style="margin: 0">
        <div id="Menu">
            <ul id="MenuUl">
                <%--显示一级菜单 --%>
                <s:iterator value="#application.topPrivilegeList">
                    <s:if test="#session.user.hasPrivilegeByName(name)"><!-- ognl表达式中调用方法 -->
                        <li class="level1">
                            <div onClick="menuClick(this);" class="level1Style">
                                <img src="style/images/MenuIcon/${id}.gif" class="Icon" />
                                ${name}
                            </div>
                            <ul style="" class="MenuLevel2" id="aa">
                                <%-- 显示二级菜单 --%>
                                <s:iterator value="children">
                                    <s:if test="#session.user.hasPrivilegeByName(name)">
                                        <li class="level2">
                                            <div class="level2Style">
                                                <img src="style/images/MenuIcon/menu_arrow_single.gif" />
                                                <a target="right" href="${pageContext.request.contextPath }${url}.action"> ${name}</a>
                                            </div>
                                        </li>
                                    </s:if>
                                </s:iterator>
                            </ul>
                        </li>
                    </s:if>
                </s:iterator>
            </ul>
        </div>
    </body>
</html>

User.java中增加

/**
     * 判定本用户是否有指定名称的权限
     * @param name
     * @return
     */
    public boolean hasPrivilegeByName(String name) {
        //超级管理员有所有的权限
        if(ifAdmin()) {
            return true;

        }
        //普通用户要判断是否含有这个权限
        for(Role role : roles) {
            for(Privilege priv : role.getPrivileges()) {
                if(priv.getName().equals(name)) {
                    return true;
                }
            }
        }
        return false;
    } 

    /**
     * 判断本用户是否是超级管理员
     */
    public boolean ifAdmin() {
        return "admin".equals(loginName);
    }
时间: 2024-10-11 22:19:24

权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项的相关文章

系统管理模块_岗位管理_改进_使用ModelDroven方案_套用美工写好的页面效果_添加功能与修改功能使用同一个页面

改进_使用ModelDroven方案 @Controller @Scope("prototype") public class RoleAction extends ActionSupport implements ModelDriven<Role>{//把ModelDriven放到栈顶,帮我们封装参数 //在Action里面要用到Service,用注解@Resource,另外在RoleServiceImpl类上要添加注解@Service @Resource private

EasyUI--根据用户权限显示左侧菜单(一)数据库表设计

CREATE DATABASE EasyUi_RoleManage GO USE EasyUi_RoleManage GO --权限表 CREATE TABLE tb_role ( roleId INT IDENTITY(1,1) PRIMARY KEY , roleName VARCHAR(50) NOT NULL ) INSERT INTO tb_role VALUES('超级管理员'), ('中级操作员'), ('普通操作员'), ('游客') --用户表 CREATE TABLE tb_

权限模块_使用权限_显示有权限的链接_思路分析_拦截验证每个请求的权限_完善权限的分类_一些细节

权限模块__使用权限__显示有权限的链接1__思路分析 实现功能 导入源文件,找到AnchorTag.java类复制到工程中 AnchorTag.java package org.apache.struts2.views.jsp.ui; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspException;

权限模块_整体方案说明_设计实体&amp;映射实体_实现初始化权限数据的功能

权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个URL. 2,例如添加或修改功能,对应两个URL:..add, ..addUI 权限模型 权限方案: 用户 *----* 角色 *----* 权限 与权限相关的功能具体有哪些: 初始化数据:... 分配权限:... 使用权限:... 具体有哪些功能 初始化数据(安装) 权限数据. 超级管理员. 分配

权限模块_分配权限_实现分配权限(登录与注销)的基本功能

权限模块_分配权限_实现分配权限的基本功能 选哪个就能存起来那个,能回显.有依赖关系 把一组相关功能放在一起 RoleAction.java /** * 设置权限页面 */ public String setPrivilegeUI() { //准备回显的数据 Role role = roleService.getById(model.getId()); ActionContext.getContext().getValueStack().push(role);//放到栈顶,从栈顶找对象 if(r

权限模块_分配权限_显示树状结构_页面中的选中效果

权限模块__分配权限__显示树状结构1 显示树状结构:依赖关系 setPrivilegeUI.jsp <!-- 显示权限树 --> <td> <!--用它回显 <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist> --

从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理

从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表).编辑页面.多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了. 1.如图先创建菜单列表与编辑页面 MenuInfoList.aspx 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MenuInfoList.aspx.cs" Inherits=&quo

Web应用程序系统的多用户权限控制设计及实现-权限模块【10】

前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的权限配置模块.页面模块涉及到的数据表为权限表.权限配置模块是按照用户组和页面,栏目结合组成的.通过配置一个用户组可以访问的页面即完成了该类型用户的访问权限管理. 1.1权限域 为了更规范和方便后期系统的二次开发和维护,对应特定的业务模块采用Area(域)的方式开发,权限模块的开发域如下图所示: 由于在Areas下还建立了一个新的目录SystemManage,故需要改变原来的路由.权限模块的路由文件名称为R

ASP.NET MVC4快速开发框架权限模块开发要点

另外献上在<线体验Demo地址>希望大家也能从中得到一些启发.地址:http://121.40.148.178:8080/ . 用户名:guest,密码:123456 一.前言 权限管理是开发框架中很重要的一个模块,因为每套管理系统都会涉及到权限管理,如果我们的开发框架中的权限模块做得很好,很灵活,那么就要可以在所有的项目中通用从而节省大量的时间降低开发成本. 这篇博文会详细地介绍权限开发的重点. 二.权限的模块管理 一套系统会由一个个的功能模块构成,那么权限管理起码要能管到每个功能的准入权限