struts2_11_实现自己的拦截器的定义
1)登录界面代码:
<%
//设置session的值keyword为user
request.getSession().setAttribute("user", "Enter");
%>
用户已登录
2)退出界面的代码:
<%
//取消session中设定的值,即user为null request.getSession().removeAttribute("user");
%>
用户已经退出登录
3)拦截器类PermissionInterceptor的代码:
public class PermissionInterceptor implements Interceptor {
public void destroy() {// 销毁时调用
}
public void init() {// 启用时调用
}
// 该方法返回视图名称
public String intercept(ActionInvocation invocation) throws Exception {
// 取得user的内容
Object user = ActionContext.getContext().getSession().get("user");
// 假设user不为null表示用户已经登录,同意运行Action
if (user != null) {
return invocation.invoke();// 调用Action
}
// 假设user为空,不调用Action,而且向session中存入字符串"你没有权 限运行该操作"
ActionContext.getContext().put("message", "你没有权限运行该操作");
return "success";
}
}
3)struts.xml文件的配置:
<struts>
<package name="packageName" namespace="/test"
extends="struts-default"> <!--定义拦截器群 -->
<interceptors>
<interceptor name="permission" class="permissionInterceptor.PermissionInterceptor" />
<!-- 自己定义拦截器栈 -->
<interceptor-stack name="permissionStack">
<!--系统自己定义拦截器栈,先于自己定义拦截器引入 -->
<interceptor-ref name="defaultStack" />
<!--引入自己定义拦截器 -->
<interceptor-ref name="permission" />
</interceptor-stack>
</interceptors> <!-- 定义默认全局拦截器
<default-interceptor-ref name="permissionStack" />
--> <!--定义全局视图 -->
<global-results>
<result name="success">/index.jsp</result>
</global-results> <action name="hello*"
class="interceptor.interceptorAction" method="{1}">
<!-- 手动调用系统拦截器,当使用手动调用时该拦截器时,定义的 系统默认拦截器不会使用 -->
<interceptor-ref name="permissionStack" />
<!-- 当调用自己定义拦截器时,仅仅有将系统拦截器,先调用 採用同
时使用自己定义拦截器和系统拦截器 -->
<interceptor-ref name="interceptorName" />
</action> </package>
</struts>
版权声明:本文博主原创文章,博客,未经同意不得转载。
struts2_11_实现自己的拦截器的定义的更多相关文章
- spring拦截器的定义
(一).拦截器的定义 1.为什么需要拦截器:在做身份认证或者是进行日志的记录时,我们需要通过拦截器达到我们的目的 2.什么事拦截器:在AOP(Aspect-Oriented Programming)中 ...
- Struts2他们拦截器实例定义—登陆权限验证
版本号:struts2.1.6 这种情况下实现功能:用户需要指定username登陆,进入相应的页面运行成功登陆作战,否则,它返回到着陆的登录页面,当直接进入操作页面(登陆访问页面后的能力)如果不同意 ...
- springmvc中拦截器的定义和配置
package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...
- Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
上一篇<更加简练的编程体验>提供了最新版本的Dora.Interception代码的AOP编程体验,接下来我们会这AOP框架的编程模式进行详细介绍,本篇文章着重关注的是拦截器的定义.采用“ ...
- spring mvc <mvc:annotation-driven/> 自定义拦截器不走
<mvc:annotation-driven/> 这个便签会注册2个自定义拦截器,所以导致请求过来就会自己去走注册的这2个拦截器和定义的一堆bean 但是这个便签是必须得定义的 直接贴代码 ...
- Struts2学习笔记(拦截器配置添加)
一.拦截器工作原理: 根据Struts2的工作原理图,拦截器在action执行前进行顺序调用,之后执行Action并返回结果字符串,再逆序调用拦截器.(结构类似递归方式...)大部分时候,拦截器方法都 ...
- ASP.NET MVC案例——————拦截器
摘要 本文将对“MVC公告发布系统”的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法. 一个小难题 我们继续完善“MVC公告发布系统”, ...
- struts2 拦截器和actioninvocation、PreResultListener
Interceptor说明 Interceptor的接口定义没有什么特别的地方,除了init和destory方法以外,intercept方法是实现整个拦截器机制的核心方法.而它所依赖的参数Act ...
- struts 拦截器 Interceptor
拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用.正如上面 Struts2的Reference中讲述的,Stru ...
随机推荐
- ORACLE使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下
在做项目的过程中,一个页面使用类似例如以下的SQL查询数据.为了保密和使用方便,我把项目中有关的表名和字段替换使用ORACLE数据库中的系统表和字段. 在我所做的项目中.类似ALL_TABLES ...
- [D3] Animate Chart Axis Transitions in D3 v4
When the data being rendered by a chart changes, sometimes it necessitates a change to the scales an ...
- Codeforces Round #367 (Div. 2) (A,B,C,D,E)
Codeforces Round 367 Div. 2 点击打开链接 A. Beru-taxi (1s, 256MB) 题目大意:在平面上 \(n\) 个点 \((x_i,y_i)\) 上有出租车,每 ...
- ganglia错误解决
1. 运行: 解决: 这时重新启动gmetad,输入命令: service gmetad stop 显示: Shutting down GANGLIA gmetad: ...
- Nginx 虚拟主机及正向代理设置
添加虚拟主机 # vim /usr/local/nginx-1.9.0/conf/vhost/proxy.conf server { resolver 8.8.8.8; listen ; locat ...
- 通过 Microsoft iSCSI Software Target 提供存储服务
软件下载地址: Microsoft iSCSI Software Target 3.3 下载完后成解压软件包如下: 安装官方的描述Target 端也就是服务端 只支持Windows Server 20 ...
- 【z12】&&【b092】hankson的趣味问题
描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解了 ...
- addSubview 与 removeFromSuperview
//当前视图的父视图添加和本视图同级的视图 [self.view.superview addSubview:showview.view]; //从父视图移除当前视图 [self.view remove ...
- Codeforces Round #Pi (Div. 2) B Berland National Library
B. Berland National Library time limit per test1 second memory limit per test256 megabytes inputstan ...
- linux中的rootfs/initrd/ramfs/initramfs
什么是ramfs?ramfs是空间规模动态变化的RAM文件系统.它非常简单,是用来实现Linux缓存机制(缓存page cache and dentry cache)的文件系统.通常情况下,Linux ...