Struts2中一个自定义拦截器的使用
1、自定义的拦截器的类:
package it.web.interceptor;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; @SuppressWarnings("serial")
public class PermissionInterceptor implements Interceptor { public void destroy() {
} public void init() {
}
//invoke调用的意思
/**
* invocation:action的调用者
*/
public String intercept(ActionInvocation invocation) throws Exception
{
Object user = ActionContext.getContext().getSession().get("user"); /*
* 如果user不为null,代表用户已经登录,允许执行action中的方法
*/
if(user!=null)
{
return invocation.invoke();
} /*
* 否则,不允许执行,并在上下文中放入一个提示信息
*/
ActionContext.getContext().put("message", "你没有权限执行该操作"); return "success";
} }
2、在struts-xml配置文件中用到拦截器:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts>
<constant name="struts.action.extendsion" value="do,action"/> <package name="interceptor" namespace="/interceptor" extends="struts-default">
<interceptors>
<interceptor name="permission" class="it.web.interceptor.PermissionInterceptor"/> <!-- 自定义的拦截器 -->
<interceptor-stack name="permissionStack">
<interceptor-ref name="defaultStack"/> <!--Struts2自带的默认的拦截栈-->
<interceptor-ref name="permission"/>
</interceptor-stack>
</interceptors> <global-results>
<result name="success">/WEB-INF/demo/message.jsp</result>
</global-results> <action name="permission_*" class="it.web.action.PermissionAction" method="{1}">
<interceptor-ref name="permissionStack"/> <!--使用拦截器-->
</action>
</package>
</struts>
3、permissionAction类:
package it.web.action;
public class PermissionAction {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String addUI(){
this.message = "addUI";
return "success";
}
public String execute(){
this.message = "execute";
return "success";
}
}
4、jsp页面:
<1>、user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
request.getSession().setAttribute("user", "user_load");
%>
用户登录
<2>、message.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String user = (String)request.getSession().getAttribute("user");
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head> <body>
用户:${user}<br>
${message}
</body>
</html>
Struts2中一个自定义拦截器的使用的更多相关文章
- 在struts2中配置自定义拦截器放行多个方法
源码: 自定义的拦截器类: //自定义拦截器类:LoginInterceptor ; package com.java.action.interceptor; import javax.servlet ...
- 使用struts2中默认的拦截器以及自定义拦截器
转自:http://blog.sina.com.cn/s/blog_82f01d350101echs.html 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Acti ...
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...
- struts2框架之自定义拦截器和配置
struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3 ...
- 整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input
这个真的是整死我了,还好看见了一篇博客提示了我, 解决方法: 在spring的bean配置中我没有设置action的作用域为prototype,也就是多例的,如果不设置则就会是默认的singleton ...
- SpringBoot中设置自定义拦截器
SpringBoot中设置自动以拦截器需要写一个类继承HandlerInterceptorAdapter并重写preHandle方法 例子 public class AuthorityIntercep ...
- Struts2中过滤器和拦截器的区别
拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- java中配置自定义拦截器中exclude-mapping path是什么意思?
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/>//过滤全部请求 & ...
随机推荐
- eclipse配置自动提示EXTJS和jQurey
extjs-2.3.0下载地址1:http://dev.sencha.com/deploy/ext-2.3.0.zip 下载地址2:http://www.sencha.com/products/ext ...
- JavaScript面向对象编程(一)原型与继承
原型(prototype) JavaScript是通过原型(prototype)进行对象之间的继承.当一个对象A继承自另外一个对象B后,A就拥有了B中定义的属性,而B就成为了A的原型.JavaScri ...
- Kemaswill 机器学习 数据挖掘 推荐系统 Ranking SVM 简介
Ranking SVM 简介 排序一直是信息检索的核心问题之一,Learning to Rank(简称LTR)用机器学习的思想来解决排序问题(关于Learning to Rank的简介请见我的博文Le ...
- mapreduce框架详解
hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...
- 利用命令行来安装应用到android虚拟机
1.首先将将android sdk中的adb添加到环境变量中确保在任意目录下运行adb都可以执行 2.将命令行切换到应用安装包所在未知 3.运行:adb install 应用名称即可
- azkaben任务调度器
azkaban学习笔记总结 01.工作流调度器azkaban 1. 任务调度概述 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive ...
- 回溯法、数独与N阶可达问题
回溯法是剪了枝的穷举,这是字面上的说法,不太好理解,不如讲解实例来的酸爽,于是引出了N阶可达问题: 有N个国家,每个国家有若干城市,小明要从中国(任意一个城市)出发,遍历所有国家(假设这个遍历顺序已经 ...
- ASP.NET MVC 异步Excel数据选择导出
以前习惯用一些框架来实现Excel文件数据导出,工作中也经常用到:比如extJs.easyUI.angularJs等,最近在做mvc程序的时候要实现该功能,相信这种功能在我们实际工作中是很常见,尤其是 ...
- C#Dictionary集合的使用
题目:输入一串字符串字母,比如:Welcome to China,比较每个字母出现的次数,不区分大小写. 解决这道题的方法很多.可能一百个人有一百个思路.当时第一眼看到这个题我的思路是:先将接受的一串 ...
- Kattis - Fenwick Tree(树状数组区间更新单点求值)
Fenwick Tree Input The first line of input contains two integers NN, QQ, where 1≤N≤50000001≤N≤500000 ...