个人笔记--struts2对Action的权限拦截
一、编写一个类实现com.opensymphony.xwork2.interceptor.Interceptor 接口
PermissionInterceptor.java
<pre name="code" class="java">package cn.sky.bookshop.interceptor; import org.apache.struts2.ServletActionContext; import cn.sky.bookshop.utils.DateUtil; import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; public class PermissionInterceptor implements Interceptor { private static final long serialVersionUID = -1908127830415801520L; private String includeUrl; public void destroy() {
} public void init() {
} public String intercept(ActionInvocation invocation) throws Exception {
//会话session中取出uname
Object obj = ServletActionContext.getRequest().getSession().getAttribute("uname");
//获取访问路径
String path = ServletActionContext.getRequest().getServletPath();
//如果存在uname或者访问路径包含在includeUrl中
if (obj != null || includeUrl.contains(path)) {
return invocation.invoke(); //继续调用下一个拦截器,如果没有则执行Action
}
ServletActionContext.getRequest().setAttribute("errorInfo","No permission to operate the page");//保存错误信息
return "disallow";//返回视图
} public String getIncludeUrl() {
return includeUrl;
} public void setIncludeUrl(String includeUrl) {
this.includeUrl = includeUrl;
}
}
二、配置struts.xml 文件
(1)定义一个自己的默认包:
<package name="my-struts-default" namespace="/" extends="struts-default"> <interceptors>
<!-- 这里是定义一个拦截器 -->
<interceptor name="permission" class="cn.sky.bookshop.interceptor.PermissionInterceptor">
<!-- 拦截器的初始化注入参数 -->
<param name="includeUrl">/user/user_login.action,/getcode</param>
</interceptor>
<!-- 这里定义一个拦截器栈 -->
<interceptor-stack name="myDefalutStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="permission"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!--设置默认的拦截器栈(访问Action前默认调用)-->
<default-interceptor-ref name="myDefalutStack"></default-interceptor-ref>
<!-- 全局result -->
<global-results>
<result name="disallow" type="redirect">/login.jsp</result>
</global-results>
<action name="getcode" class="cn.sky.bookshop.action.VerifyCodeAction">
</action> </package>
(2)以后的包都继承上面my-struts-default
注意:这里只能实现对访问Action时实现拦截,对jsp的访问不可能实现拦截。(可以将自定义拦截器栈中的默认拦截器
<pre name="code" class="html">defaultStack注释掉,访问jsp发现根本没执行过此拦截器。可想而知,在拦截器工作之前对jsp的页面请求已经做出响应了。)
个人笔记--struts2对Action的权限拦截的更多相关文章
- 个人笔记--Servlet之过滤器实现权限拦截
一.编写一个Java类实现javax.servlet.Filter接口 package cn.edu.sxu.filter; import java.io.IOException; import ja ...
- java反射--注解的定义与运用以及权限拦截
自定义注解类编写的一些规则: 1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是 ...
- [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2之Action接收请求参数和拦截器
技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API * 需求:提供JSP的表单页面的数据,在Ac ...
- Struts2 In Action笔记_页面到动作的数据流入和流出
因为回答百度知道的一个问题,仔细查看了<Struts2 In Action>,深入细致的看了 “数据转移OGNL 和 构建视图-标签”,很多东西才恍然大悟. 一直觉得国外写的书很浮,不具有 ...
- Struts2的Action继承ActionSupport时,利用AOP来拦截Action出现NoSuchMethodException
参考:http://zhanghua.1199.blog.163.com/blog/static/46449807201111139501298/ 做项目的时候,由于要用到在Struts2的Actio ...
- Struts2使用Interceptor实现权限控制的应用实例详解
Struts2使用Interceptor实现权限控制的应用实例详解 拦截器:是Struts2框架的核心,重点之重.因此,对于我们要向彻底学好Struts2.0.读源码和使用拦截器是必不可少的.少说了. ...
- Struts2学习:interceptor(拦截器)的使用
对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...
- Struts2重新学习之自定义拦截器(判断用户是否是登录状态)
拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interce ...
随机推荐
- HTML左边和右边是固定的宽度但是中间是自动的布局方式
对于这个布局方式我们可以是用绝对定位的方式来实现这个效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- arc项目中使用非arc文件
因为之前没有ARC机制,好多比较好的类库都是使用的非ARC,或是有些大牛还是不喜欢用ARC,封装的类也是非ARC的,想要在自己的ARC项目中使用这些非ARC类库,只需要简单的设置一下就可以了. 1.在 ...
- Mac通过以太网共享网络
在日常工作和学习中,需要WiFi热点而没有路由器,这个时候我们可以用我们工作的Mac来共享网络. 系统偏好设置->共享->互联网共享:设置共享来源和共享端口->WiFi选项:设置网络 ...
- mysql mac 上启动
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist 中内容: <string>/usr/local/o ...
- javascript进击(八)JSON
JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Ob ...
- 初次使用nodejs的问题
使用npm install -g 'xxx' 之后仍然报 Cannot find module 'xxx' 错误,可以通过设置环境变量来解决: export NODE_PATH=/usr/local/ ...
- 20160127 linux 学习笔记
Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...
- SQL Server调优系列基础篇 - 性能调优介绍
前言 关于SQL Server调优系列是一个庞大的内容体系,非一言两语能够分析清楚,本篇先就在SQL 调优中所最常用的查询计划进行解析,力图做好基础的掌握,夯实基本功!而后再谈谈整体的语句调优. 通过 ...
- oc ios 中文字符串 进行 sha1加密 错误?
我在网上找到了一个oc版加密的工具类,但是加密中文就出现大问题 const char *cstr = [self cStringUsingEncoding:encoding]; NSData *dat ...
- swift-02代码流程的控制
// // main.swift // 02-语句 // // Created by wanghy on 15/8/9. // Copyright (c) 2015年 wanghy. All ...