您的位置:首页 > 编程语言 > Java开发

【Java EE 学习 76 上】【数据采集系统第八天】【角色授权】【用户授权】【权限的粗粒度控制】【权限的细粒度控制】

2015-12-19 11:11 701 查看

一、角色管理

  单击导航栏上的"角色管理"超链接,跳转到角色管理界面,在该界面上显示所有角色,并提供角色的增加和删除、修改超链接。

  1.增加新角色(角色授权)

    流程:单击增加新角色超链接->Action查询出所有的权限保存到值栈并转到添加新角色页面->填写表单并提交->Action保存表单->重定向到角色管理Action

    技术点:表单提交的权限列表时一个整型数组,需要在Action中进行接收并调用相关方法转换成Rright列表;使用到了一些JQuery技术实现更友好的前端交互。

    

/*
* $Id: SubmitTag.java 681101 2008-07-30 16:06:15Z musachy $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0 *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
* 该类对应着<s:submit>标签,重写该类实现对权限细粒度的划分
*/

package org.apache.struts2.views.jsp.ui;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;

import org.apache.struts2.components.Component;
import org.apache.struts2.components.Submit;

import com.kdyzm.utils.ValidateUtils;
import com.opensymphony.xwork2.util.ValueStack;

/**
* @see Submit
*/
public class SubmitTag extends AbstractClosingTag {

private static final long serialVersionUID = 2179281109958301343L;

protected String action;
protected String method;
protected String align;
protected String type;
protected String src;

public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
return new Submit(stack, req, res);
}

protected void populateParams() {
super.populateParams();

Submit submit = ((Submit) component);
submit.setAction(action);
submit.setMethod(method);
submit.setAlign(align);
submit.setType(type);
submit.setSrc(src);
}

public void setAction(String action) {
this.action = action;
}

public void setMethod(String method) {
this.method = method;
}

public void setAlign(String align) {
this.align = align;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public void setSrc(String src) {
this.src = src;
}
//Submit标签需要重写两个方法才行
@Override
public int doStartTag() throws JspException {
boolean result=ValidateUtils.hasRight(getFormNamespace(), getFormActionName(), (HttpServletRequest)pageContext.getRequest(), null);
if(result==false){
return SKIP_BODY;
}else{
return super.doStartTag();
}
}
@Override
public int doEndTag() throws JspException {
//        System.out.println("表单标签:"+getFormNamespace()+getFormActionName());
boolean result=ValidateUtils.hasRight(getFormNamespace(), getFormActionName(), (HttpServletRequest)pageContext.getRequest(), null);
if(result==false){
return SKIP_BODY;
}else{
return super.doEndTag();
}
}
public String getFormNamespace(){
Tag tag=this.getParent();
while(tag!=null){
if(tag instanceof FormTag){
FormTag formTag=(FormTag) tag;
String namespace=formTag.namespace;
if(namespace==null||"/".equals(namespace)){
namespace="";
}
return namespace;
}else{
tag=tag.getParent();
}
}
return "";
}
public String getFormActionName(){
Tag tag=this.getParent();
while(tag!=null){
if(tag instanceof FormTag){
FormTag formTag=(FormTag) tag;
String actionName=formTag.action;
if(actionName!=null&&actionName.endsWith(".action")){
actionName=actionName.substring(0, actionName.indexOf("."));
return actionName;
}else{
actionName="";
return actionName;
}
}else{
tag=tag.getParent();
}
}
return "";
}
}


org.apache.struts2.views.jsp.ui.SubmitTag.java

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: