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,登录注册等,为提高实用性,

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

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

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

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

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

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

前两天因有事就没来得及写.今天刚刚好空了.这次写的是对角色和管理员对页面按钮之间的控制.先看页面效果 说明:先根据角色设置好角色的权限,然后管理员在对应的角色下的权限去设置其权限. 在设置角色权限的时候 当某个角色对应某个页面的按钮都是未选中的时候,则设置它的IsShow为0,反之则为1,这样有利于设置管理员的时候方便查询需要设置的页面. 当isshow为0的时候删除管理员表对应的该页面Id的记录. 角色和管理员页面按钮显示这块到这里就结束了. 百度网盘源码下载地址

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

1.1.       Ignite Grid展示数据 Ignite UI提供了基于HTML5与CSS3的控件,需要添加程序集引用Infragistics.Web.Mvc,相应的CSS与JS,该框架需要JQuery UI.Bootstrap和modernizr. 1.1.1.      修改BundleConfig Ignite所需的css与js引用,统一放在BundleConfig中配置. //jquery-ui bundles.Add(new ScriptBundle("~/bundles/j

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

1.1.       Permission管理 参考1:Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理 参考2:ASP.NET MVC三个重要的描述对象:ActionDescriptor 这里Permission指的是Action,即供用户调用的功能. 1.1.1.      新建ApplicationPermission 修改IdentityModel.cs,新增ApplicationPermission,此处设计了属性Id.Controller.Action.Pa