jsp权限配置、初始化、查询控制的解决方案
来源:互联网 发布:java manifest.mf 编辑:程序博客网 时间:2024/05/18 01:40
问题提出:
实现方式:将专业和年级用"@23@"的形式存数据库,判断like则有权限
CREATE TABLE `notice` (`notice_id` INT(11) NOT NULL AUTO_INCREMENT,`content` LONGTEXT NULL COMMENT '内容' COLLATE 'utf8_bin',`create_date` DATETIME NOT NULL COMMENT '创建时间',`user_id` INT(11) NOT NULL COMMENT '创建人主键',`user_name` VARCHAR(50) NOT NULL COMMENT '创建人名字' COLLATE 'utf8_bin',`publish_date` DATETIME NOT NULL COMMENT '发布时间',`title` VARCHAR(300) NOT NULL COMMENT '标题' COLLATE 'utf8_bin',`visible_orgs` VARCHAR(300) NULL DEFAULT NULL COMMENT '可见机构' COLLATE 'utf8_bin',`visible_type` SMALLINT(6) NOT NULL COMMENT '1:按机构选择(机构下的教师和学生都可见) 2年级下对应专业学生可见(毕业离校通知和其他通知处理方式不一致)',`visible_grades` VARCHAR(300) NULL DEFAULT NULL COMMENT '添加年级作为通知权限控制,保存年级的id,@隔开' COLLATE 'utf8_bin',`type_id` INT(11) NOT NULL COMMENT '通知类型',`pk_id` INT(11) NULL DEFAULT NULL,PRIMARY KEY (`notice_id`))COLLATE='utf8_bin'ENGINE=InnoDBSELECT DISTINCT N.notice_id,N.title,N.publish_date,N.user_id,N.user_name,N.visible_type,N.visible_orgs, IFNULL(NR.isread,0) AS isreadFROM (SELECT *FROM commonuser.noticeWHERE type_id= 14 AND publish_date >= '2014-09-01 00:00:00')NLEFT JOIN commonuser.notice_user_record NR ON (NR.notice_id=N.notice_id AND NR.info_id = 738)WHERE (N.visible_type=1 AND N.visible_orgs LIKE '%@21@%') -- 组织机构 OR (N.visible_type = 2 AND N.visible_orgs LIKE '%@25@%' AND N.visible_grades LIKE '%@7@%') -- 年级和专业ORDER BY publish_date DESC
页面:
<input type="hidden" id="visibleOrgs_in" value="${notice.visibleOrgs}" /><input type="hidden" id="visibleGrades_in" value="${notice.visibleGrades}" /><pre name="code" class="html">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><%@ taglib prefix="limit" uri="http://www.yineng.com/limit"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%String path = request.getContextPath();%><div style="margin-left: 120px;"><table cellpadding="8" cellspacing="8"> <tr> <c:forEach var="x" step="1" items="${requestScope.gradeList}" varStatus="status"> <td> <td valign="top"><input type="checkbox" name="grade_ids" value="${x.gradeId }" onclick="allSel_specity(this)" /> </td> <td valign="top"> ${x.gradeName } </td> </td> </c:forEach> </tr></table><table cellpadding="8" cellspacing="8"> <tr> <c:forEach var="x" step="1" items="${requestScope.voList}" varStatus="status"> <td valign="top"> <input type="checkbox" name="specSubiect_ids" value="${x.speSubjectId }" onclick="allSel_speSubject(this,'${x.speSubjectId }')" /> </td> <td valign="top"> ${x.speSubjectName }</br> <c:forEach var="y" step="1" items="${x.specityVos}" varStatus="sta"> <input id="specityIds${y.specityId }" type="checkbox" name="specityIds${x.speSubjectId }" value="${y.specityId }" /> ${y.specityName }</br> </c:forEach> </td> <c:if test="${(status.index+1) % 5 == 0 }"> 每5个则换行 </tr> <tr> <td height="10px;"></td> </tr> <tr> </c:if> </c:forEach> </tr></table></div><script type="text/javascript">$(function(){ //初始化年级 var visibleType=$("input[type=radio][name=visibleType]:checked").val(); if(visibleGrades != undefined && visibleGrades != null && visibleGrades != ""){ $("input[name ='grade_ids']").each(function(){ if(("@"+$(this).val()+"@").indexOf(visibleGrades) != -1){ $(this).attr("checked",'true');// 初始化已经选择的选项 } }); } var visibleType=$("input[type=radio][name=visibleType]:checked").val(); if(visibleOrgs != undefined && visibleOrgs != null && visibleOrgs != ""){ visibleOrgs = visibleOrgs.substring(1,visibleOrgs.length-1); var orgs = visibleOrgs.split("@"); for(var i = 0;i<orgs.length;i++){ var ch_id = "specityIds" + orgs[i]; $("#" + ch_id).attr("checked",'true');// 初始化已经选择的选项 } } load_button_css(); //加载btn样式});</script>
主要的js方法
function allSel_speSubject(obj,id){var ischeck = obj.checked;var ch_name = "specityIds" + id;if(ischeck){ $("[name="+ch_name+"]").attr("checked",'true');//全选 } else{$("[name="+ch_name+"]").removeAttr("checked");//取消全选}}function allSel_specity(obj){var ischeck = obj.checked;if(ischeck){ $("[name=specSubiect_ids]").attr("checked",'true');//全选 $("input[name^='specityIds']").attr("checked",'true');//全选 } else{ if($("input[type=checkbox][name=grade_ids]:checked").length == 0){$("[name=specSubiect_ids]").removeAttr("checked");//取消全选$("input[name^='specityIds']").removeAttr("checked");//取消全选} }}//保存通知的可见范围saveOrUpdateVisiblePerson = function(){ var visibleType=$("input[type=radio][name=visibleType]:checked").val();//可见类型 是机构还是年级+专业 var orgIds = ''; //组织机构 var specityIds = '';//专业的选择id var gradeIds='';//年级的选择项id var s = '@'; if(visibleType ==2){ $("input[name *='grade_ids']:checked").each(function(){ //获取选择年级 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择年级!','信息', 'error'); return; } gradeIds = s; //选择的年级 s = '@'; $("input[name *='specityIds']:checked").each(function(){ //获取选择专业 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择专业!','信息', 'error'); return; } specityIds = s;//选择的专业 }else{ $("input[name *='org_ids']:checked").each(function(){ //获取选择的组织机构 if($(this).attr('checked')){ s += $(this).attr('value')+"@"; } }); if(s.length <= 1){ $.ligerDialog.alert('请选择组织机构!','信息', 'error'); return; } orgIds = s; } $.ligerDialog.waitting('请稍候...'); $.ajax({ type: "POST", url: '<%=path%>/notice/notice!saveOrUpdateVisiblePerson.action', dataType:"html", data:{ 'noticeId':noticeId, 'visibleType':visibleType, 'orgIds':orgIds, 'gradeIds':gradeIds, 'specityIds':specityIds }, success: function(response){ $.ligerDialog.closeWaitting(); backIndexPage(); $.ligerDialog.alert('操作成功!','信息', 'success'); }, error:function(){ $.ligerDialog.closeWaitting(); $.ligerDialog.alert('加载失败!','信息', 'error'); } });};
0 0
- jsp权限配置、初始化、查询控制的解决方案
- JSP权限控制
- JSP权限控制源码
- 配置系统未能初始化 错误的解决方案
- JSP+XML的带权限控制的类似QQ的菜单(只需配置xml就能生成菜单)
- 关于svn权限控制的配置
- Shiro基于JDBC的配置权限控制
- 权限控制与认证解决方案
- 权限如何控制页面控件显示的解决方案
- 通用数据级权限控制解决方案的实现
- JSP权限控制(一)
- JSP权限控制(二)
- JSP权限控制(二)
- JSP标签 shiro权限控制
- 自定义jsp标签实现页面元素的权限控制
- mongoose实现权限查询控制
- App.config"配置系统未能初始化" 错误的解决方案
- 如何解决“配置系统未能初始化“ 错误的解决方案?
- Android UI开发详解之ActionBar
- Delphi XE7 发布了
- PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4
- 苹果App Store审核指南中文翻译(2014.9.1更新)
- htmlparser学习总结
- jsp权限配置、初始化、查询控制的解决方案
- sprintf与snprintf的区别
- CentOS下mysql密码本地重置
- android的Log输出在logCat不显示
- JAVA随记
- int (*(*p)())[4]
- 矩阵运算——平移,旋转,缩放
- MapReduce(五): TaskTracker的初始化
- CentOS 6.5 生产环境编译安装LNMP