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
原创粉丝点击