Struts2拦截器简单实例

2023-05-16

利用拦截器实现权限控制  用户admin 有全部的访问访问权限,用户zhangsan a.jsp,b.jsp 访问权限  用户lisi a.jsp、c.jsp访问权限,如果用户没有访问权限 页面统一跳转到  permissionDenied.jsp

页面:

<form action="user!login.action">
    用户名:<input type='text' name="user.userName"/>
    密码:<input type='password' name="user.passWord"/>
   <input type="submit" value="登录">   
    </form>    
  <a href='user!goA.action'>去A页面</a>
  <a href='user!goB.action'>去B页面</a>
  <a href='user!goC.action'>去C页面</a>
Struts配置:
<package name="user" namespace="/" extends="struts-default">
		<!-- 定义权限拦截器 -->
		<interceptors>
			<interceptor name="permission"
				class="com.test.user.PermissionInterceptor"></interceptor>
			<interceptor-stack name="permissionStack">
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="permission" />
			</interceptor-stack>
		</interceptors>
		<!-- 定义全局结果 -->
		<global-results>
			<result name="success">/success.jsp</result>
			<result name="error">/err.jsp</result>
			<result name="noPermission">/noPermission.jsp</result>
		</global-results>
		<action name="user" class="com.test.user.action.UserAction">
		  <result name="a">/a.jsp</result>
		  <result name="b">/b.jsp</result>
		  <result name="c">/c.jsp</result>
		  <!-- 引用权限拦截器-->
		  <interceptor-ref name="permissionStack" />
		  </action>
	</package>

拦截器方法:

@Override
	public String intercept(ActionInvocation invocation) throws Exception {
        System.out.println("进入拦截器");
		HttpSession session=ServletActionContext.getRequest().getSession();
        User user =(User) session.getAttribute("user");
        //获取当前请求的url
        String actionname=invocation.getProxy().getActionName();
        if(user==null||"".equals(user.getUserName())){
        	return "noPermission";
        }else if("zhangsan".equals(user.getUserName())&&"c".equals(actionname)){
        	return "noPermission";
        }else if("lisi".equals(user.getUserName())&&"b".equals(actionname)){
        	return "noPermission";
        }else{
        	return invocation.invoke();
        }
	}

后台action:

public String login() {
		// 获取session
		HttpSession session = ServletActionContext.getRequest().getSession();
		// 存入session
		if (!"".equals(user.getUserName())) {
			session.setAttribute("user", user);
			return SUCCESS;
		} else {
			return "error";
		}
	}

	public String goA() {
		return "a";
	}

	public String goB() {
		return "b";

	}

	public String goC() {
		return "c";

	}

这样就可以简单的实现,登录用户不同、访问页面也不同。







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2拦截器简单实例 的相关文章

随机推荐

  • 一文加强对React的记忆(2021 年 6 月更新),收藏再也不用查看文档、教程了

    我不经常使用 React xff0c 所以每当我需要在 React 中做最小的事情时 xff0c 我都必须查看文档 教程或在论坛上发布问题 这就是我决定做这个记忆辅助工具的原因 xff0c 鉴于我的记忆力不是那么好 xff0c 我想为什么不
  • 13.实现鼠标中断处理

    简介 上节实现了对键盘中断服务子程序的处理和修改优化了中断程序 xff0c 但只是简单的在中断服务子程序中记录断码或通码 xff0c 缓冲区使用效率不高 目标 实现鼠标中断处理 优化中断缓存 pc中8259A中断控制器连接模型如下 1 鼠标
  • 【Linux】在Linux上安装VNC

    有幸能够亲自在服务器上面操作一下 xff0c 这篇博客来说一说 xff0c 如何在Linux上安装VNC 首先要知道的是 xff0c VNC是什么 VNC xff08 Virtual Network Computing xff09 xff0
  • win10开启自带的手机投屏功能方式

    本篇文章主要讲解win10开启自带的手机投屏方式 日期 xff1a 2023年1月15日 作者 xff1a 任聪聪 开启后效果 点击连接 打开连接或通过手机其他网络进行连接 连接步骤 xff1a 步骤一 打开手机端的wifi网络设置 xff
  • TensorFlow学习(三):tf.scatter_nd函数

    scatter nd indices updates shape name 61 None 根据indices将updates散布到新的 xff08 初始为零 xff09 张量 根据索引对给定shape的零张量中的单个值或切片应用稀疏upd
  • text to image(八):《Image Generation from Scene Graphs》

    最近在翻阅文本生成图像的相关工作 xff0c 目前比较新的有突破性的工作是李飞飞工作团队18年cvpr发表的 Image Generation from Scene Graphs 论文地址 xff1a https arxiv org abs
  • text to image(四):《Stackgan》

    继续介绍文本生成图像的相关工作 xff0c 本文给出的是2016年12月10日发表于 arXiv 的文章 Stackgan Text to photo realistic image synthesis with stacked gener
  • text to image(六):《AttnGAN》

    继续介绍文本生成图像的工作 xff0c 本文给出的是CVPR 2018 的文章 AttnGAN Fine Grained Text to Image Generation with Attentional Generative Advers
  • image caption笔记(二):《Show and Tell : A Neural Image Caption Generator》

    一 基本思想 CNN 43 RNN CNN用的是VGG16 RNN部分用的是LSTM 换成resnet101效果会更好 二 模型结构 四 代码分析 xff1a 首先是训练的部分 xff08 1 xff09 准备数据 COCO数据集中的cap
  • L1惩罚项和L2惩罚项

    x即为参数 L2正则化参数 从公式5可以看到 xff0c 越大 xff0c j j衰减得越快 另一个理解可以参考图2 xff0c 越大 xff0c L2圆的半径越小 xff0c 最后求得代价函数最值时各参数也会变得很小
  • COCO数据集介绍

    转载自 xff1a https zhuanlan zhihu com p 29393415 COCO的 全称是Common Objects in COntext xff0c 是微软团队提供的一个可以用来进行图像识别的数据集 MS COCO数
  • image caption笔记(九):《Unsupervised Image Captioning》

    无监督的caption 文章使用一个图像数据集 xff08 MSCOCO xff09 和一个文本语料库 xff08 从Web上抓取的200多万个句子组成图像描述语料库 xff09 来做无监督caption 没有任何配对集合 1 模型结构 x
  • PyTorch中使用指定的GPU

    转载自 http www cnblogs com darkknightzh p 6836568 html PyTorch默认使用从0开始的GPU xff0c 如果GPU0正在运行程序 xff0c 需要指定其他GPU 有如下两种方法来指定需要
  • 七大主流排序算法时间效率比较(基于C语言)

    这段时间在温故一些常见的排序算法 xff0c 顺手便把常见的一些比较著名的排序算法对同一个目标样本做了个比较 样本存于文件中 xff0c 可以根据需要进行替换 我调试的数据量较小 xff0c 发现简单算法 xff08 冒泡 xff0c 选择
  • image caption笔记(十):一些实现过程中的小细节

    1 beam search 一方面可以提升指标 xff0c 另一方面也可以解决生成的句子不通顺的问题 因此 xff0c 不管是在训练测试的过程中都要开beamsearch xff0c 对提高指标有帮助 还有就是 xff0c 如果训练的时候
  • C# 多进程之间的通讯方式

    前言 C 中可能大多数人针对于多线程之间的通讯 xff0c 是熟能生巧 xff0c 对于AsyncLocal 和ThreadLocal以及各个静态类中支持线程之间传递的GetData和SetData方法都是信手拈来 xff0c 那多进程通讯
  • setInterval()之坑

    首先看下面这个例子 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title gt
  • window.open()session丢失问题解决方法

    最近要实现两个项目间的跳转 xff0c 避免二次登录 xff0c 出现了window open session丢失问题 xff0c 说下解决方法 一开始是这样写的 A项目调用B的登录请求 xff0c 返回成功 xff0c 即跳到B项目相应页
  • Java解析XML和json几个小例子

    一 DOM4J解析xml 案例1 xff1a 解析如下xml lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt employee gt lt name gt 张三 lt na
  • Struts2拦截器简单实例

    利用拦截器实现权限控制 用户 admin 有全部的访问访问权限 用户 zhangsan有 a jsp b jsp的 访问权限 用户 lisi有 a jsp c jsp的 访问权限 如果用户没有访问权限 页面统一跳转到 permissionD