SSH系列:(17)角色-权限管理(前台JSP)

1、listUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>角色管理</title>
    <script type="text/javascript">
  	//全选、全反选
	function doSelectAll(){
		// jquery 1.6 前
		//$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked"));
		//prop jquery 1.6+建议使用
		$("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked"));
	}
	//新增角色
	function doAdd(){
		document.forms[0].action = "${basePath}/tax/role_addUI.action";
		document.forms[0].submit();
	}
	//编辑角色
	function doEdit(id){
		document.forms[0].action = "${basePath}/tax/role_editUI.action?role.roleId="+id;
		document.forms[0].submit();
	}
	//删除角色
	function doDelete(id){
		document.forms[0].action = "${basePath}/tax/role_delete.action?role.roleId="+id;
		document.forms[0].submit();
	}
	//批量删除
	function doDeleteAll(){
		document.forms[0].action = "${basePath}/tax/role_deleteSelected.action";
		document.forms[0].submit();
	}
    </script>
</head>
<body class="rightBody">
<form name="form1" action="" method="post">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
                <div class="c_crumbs"><div><b></b><strong>角色管理 </strong></div> </div>
                <div class="search_art">
                    <li>
                        角色名称:<s:textfield name="role.name" cssClass="s_text" id="roleName"  cssStyle="width:160px;"/>
                    </li>
                    <li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>
                    <li style="float:right;">
                        <input type="button" value="新增" class="s_button" onclick="doAdd()"/>&nbsp;
                        <input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/>&nbsp;
                    </li>
                </div>

                <div class="t_list" style="margin:0px; border:0px none;">
                    <table width="100%" border="0">
                        <tr class="t_tit">
                            <td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td>
                            <td width="120" align="center">角色名称</td>
                            <td align="center">权限</td>
                            <td width="80" align="center">状态</td>
                            <td width="120" align="center">操作</td>
                        </tr>
                       	<s:iterator value="roleList" status="vs">
                            <tr <s:if test="#vs.odd">bgcolor="f8f8f8"</s:if> >
                                <td align="center"><input type="checkbox" name="selectedRow" value="<s:property value="roleId"/>"/></td>
                                <td align="center"><s:property value="name"/></td>
                                <td align="center">
                                	<s:iterator value="rolePrivileges">
                                		<s:property value="#privilegeMap[id.code]"/> &nbsp;
                                	</s:iterator>
                                </td>
                                <td align="center"> <s:if test="state == 1">有效</s:if><s:else>无效</s:else> </td>
                                <td align="center">
                                    <a href="javascript:doEdit(‘<s:property value="roleId"/>‘)">编辑</a>
                                    <a href="javascript:doDelete(‘<s:property value="roleId"/>‘)">删除</a>
                                </td>
                            </tr>
                        </s:iterator>	   
                    </table>
                </div>
            </div>
			<div class="c_pate" style="margin-top: 5px;">
		<table width="100%" class="pageDown" border="0" cellspacing="0"
			cellpadding="0">
			<tr>
				<td align="right">
                 	总共1条记录,当前第 1 页,共 1 页 &nbsp;&nbsp;
                            <a href="#">上一页</a>&nbsp;&nbsp;<a href="#">下一页</a>
					到&nbsp;<input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
					max="" value="1" /> &nbsp;&nbsp;
			    </td>
			</tr>
		</table>
        </div>
        </div>
    </div>
</form>

</body>
</html>

知识点(1):从map当中取数据

后台代码

//列表页面
public String listUI(){
	//加载权限集合
	ActionContext.getContext().getContextMap().put("privilegeMap", PrivilegeStatics.PRIVILEGE_MAP);
	roleList = roleService.findAll();
	return "listUI";
}

在JSP页面取出privilegeMap对象中的数据

<s:iterator value="roleList" status="vs">
	<s:iterator value="rolePrivileges">
		<s:property value="#privilegeMap[id.code]"/> 
	</s:iterator>
</s:iterator>	

知识点(2)

在定义的时候,虽然是String类型,但是在JSP页面判断的时候,似乎没有区分

private String state;
<s:if test="state == 1">有效</s:if><s:else>无效</s:else>

2、addUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>角色管理</title>
</head>
<body class="rightBody">
<form id="form" name="form" action="${basePath}/tax/role_add.action" method="post" enctype="multipart/form-data">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
    <div class="c_crumbs"><div><b></b><strong>角色管理</strong>&nbsp;-&nbsp;新增角色</div></div>
    <div class="tableH2">新增角色</div>
    <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >
        <tr>
            <td class="tdBg" width="200px">角色名称:</td>
            <td><s:textfield name="role.name" /></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">角色权限:</td>
            <td>
            	<!-- 
            		This is just a detail of the Java Map API. 
            		Instead, it iterates over Entry objects. 
            		The Entry object has two properties, the key and the value. 
            		By default, the select component’s listKey attribute will be set to key. 
            		Also by default, the listValue attribute will be set to value. 
            		If you’re using Maps, you can sometimes accept these defaults. 
            		因此,如果listKey="key"并且listValue="value",那么这两个值可以省略。
            		另外,如果省略name属性,会报错!
            	 -->
            	<s:checkboxlist list="#privilegeMap" name="privilegeIds" listKey="key" listValue="value"></s:checkboxlist>
            </td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">状态:</td>
            <td><s:radio list="#{‘1‘:‘有效‘,‘0‘:‘无效‘}" name="role.state" value="1"/></td>
        </tr>
    </table>
    
    <div class="tc mt20">
        <input type="submit" class="btnB2" value="保存" />
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />
    </div>
    </div></div></div>
    
   
</form>
</body>
</html>

知识点(1):checklistbox

<!-- 
	This is just a detail of the Java Map API. 
	Instead, it iterates over Entry objects. 
	The Entry object has two properties, the key and the value. 
	By default, the select component’s listKey attribute will be set to key. 
	Also by default, the listValue attribute will be set to value. 
	If you’re using Maps, you can sometimes accept these defaults. 
	因此,如果listKey="key"并且listValue="value",那么这两个值可以省略。
	另外,如果省略name属性,会报错!
 -->
<s:checkboxlist list="#privilegeMap" name="privilegeIds" listKey="key" listValue="value"></s:checkboxlist>

知识点(2):radio 有默认值

<s:radio list="#{‘1‘:‘有效‘,‘0‘:‘无效‘}" name="role.state" value="1"/>

3、editUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>角色管理</title>
</head>
<body class="rightBody">
<form id="form" name="form" action="${basePath}/tax/role_edit.action" method="post" enctype="multipart/form-data">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
    <div class="c_crumbs"><div><b></b><strong>角色管理</strong>&nbsp;-&nbsp;编辑角色</div></div>
    <div class="tableH2">编辑角色</div>
    <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >
        <tr>
            <td class="tdBg" width="200px">角色名称:</td>
            <td><s:textfield name="role.name" /></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">角色权限:</td>
            <td>
            	<s:checkboxlist list="privilegeMap" name="privilegeIds"></s:checkboxlist>
            </td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">状态:</td>
            <td><s:radio list="#{‘1‘:‘有效‘,‘0‘:‘无效‘}" name="role.state"/></td>
        </tr>
    </table>
    <s:hidden name="role.roleId"/>
    <div class="tc mt20">
        <input type="submit" class="btnB2" value="保存" />
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />
    </div>
    </div></div></div>
   
</form>
</body>
</html>

知识点(1):radio 在编辑页面,不需要设置默认值,而是使用它的实际值

<s:radio list="#{‘1‘:‘有效‘,‘0‘:‘无效‘}" name="role.state"/>
时间: 08-17

SSH系列:(17)角色-权限管理(前台JSP)的相关文章

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求为一个具体的功能页面 /// </summary> public class AdminActionMethod : Attribute { /// <summary> /// 页面请求路径 /// </summary> public string ActionUrl {

ASP.NET Identity “角色-权限”管理 1

本文是基于ASP.NET Identity v2的实施的“角色-权限”实验小结,不对基础知识进行介绍,读者需理解面向对象.接口编程.AOP.MVC,掌握ASP.NET MVC.JavaScript和EF. 环境:VS2013 update4,EF6,ASP.NET MVC 5,bootstrap,Automapper,MvcPager等. 1.       前言 VS2013 ASP.NET MVC模板只提供基础的Role-User权限管理,如:账号管理Account,登录注册等,为提高实用性,

RDIFramework.NET ━ 9.9 角色权限管理 ━ Web部分

RDIFramework.NET ━ .NET快速信息化系统开发框架 9.9  角色权限管理 -Web部分 角色权限管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移除指定角色所包含的用户.可以分配或授予指定角色的模块(菜单)的访问权限.可以收回或分配指定角色的操作(功能)权限.可以对所有角色.用户.模块(菜单).操作(功能)权限进行集中批量设置,角色户授权范围的设置(类似于用户授权范围的设置),表字段权限的设置以及表约束条件权限的设置等.角色权限管理主界面如下

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是翔通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基本不用了.还有最主要的原因就是锻炼下自己的能力.好了其他就不多说了,下面来看下我对这个项目的整体概述吧: 目录: 目录我以后会在这边添加上去的 一.Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理 基本设计 项目中使用到的工具: Visual Studio 2013,

SSH系列:(16)角色-权限管理(后台)

1.角色和权限的关系 系统中可以存在多个角色,每个角色可以自由的组合系统定义的权限集合,即角色和权限的关系是多对多的关系.为了保存这种多对多关系,需要一个"角色权限表"来保存. 角色和权限的多对多关系,可以进行拆分:"角色"与"角色权限"的关系."权限"和"角色权限"的关系."角色"与"角色权限"的关系是一对多的关系:而"权限"与"角色权

MongoDB系列---用户及权限管理02

MongoDB-——Privilege 学习大纲: 1.用户权限管理 2.用户操作 知识回顾:  本系列上一篇博文我们讲述了如何搭建环境以及配置我们的MongoDB,通过搭建环境后我们又学习了如何通过简单的命令和配置来启动关闭我们的MongoDB. 一 用户及权限管理 前言: MongoDB 作为时下最为热门的数据库,那么其安全验证也是必不可少的,否则一个没有验证的数据库暴露出去,任何人可随意操作,这将是非常危险的.我们可以通过使用为MongoDB 创建用户的方式来降低风险 1 MongoDB用

ASP.NET MVC:窗体身份验证及角色权限管理示例

ASP.NET MVC 建立 ASP.NET 基础之上,很多 ASP.NET 的特性(如窗体身份验证.成员资格)在 MVC 中可以直接使用.本文旨在提供可参考的代码,不会涉及这方面太多理论的知识. 本文仅使用 ASP.NET 的窗体身份验证,不会使用它的 成员资格(Membership) 和 角色管理 (RoleManager),原因有二:一是不灵活,二是和 MVC 关系不太. 一.示例项目 User.cs 是模型文件,其中包含了 User 类: public class User { publ

ASP.NET Identity “角色-权限”管理 6

1.1.       Role-Permission UserRole是User与Role的关联表,代码见User-Role分析.参考可得Role-Permission的设计,代码图如下,RolePermission是Role与Permission的关联表,保存着RoleId与PermissionId. 1.1.1.      新建RolePermission 在IdentityModels.cs中增加ApplicationRolePermission类. public class Applic

mongodb之用户/认证/角色/权限管理

前言 用户权限管理很重要,只给需要的权限,防止应用系统漏洞导致脱库 认证和授权 Authentication 认证识别,解决我是谁 Authorization 操作授权,我能做什么 认证机制 MONGODB-CR 官方自定义实现认证机制,通过用户名和密码,通过challenge-response方式,来识别和验证授权.SCRAM-SHA-1认证机制有更好的安全性,新版本默认使用SCRAM-SHA-1.不建议使用MONGODB-CR模式. SCRAM-SHA-1 3.0版本新加功能,Mongodb