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中一个自定义拦截器的使用的更多相关文章

  1. 在struts2中配置自定义拦截器放行多个方法

    源码: 自定义的拦截器类: //自定义拦截器类:LoginInterceptor ; package com.java.action.interceptor; import javax.servlet ...

  2. 使用struts2中默认的拦截器以及自定义拦截器

    转自:http://blog.sina.com.cn/s/blog_82f01d350101echs.html 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Acti ...

  3. JavaEE开发之SpringMVC中的自定义拦截器及异常处理

    上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...

  4. struts2框架之自定义拦截器和配置

    struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3 ...

  5. 整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input

    这个真的是整死我了,还好看见了一篇博客提示了我, 解决方法: 在spring的bean配置中我没有设置action的作用域为prototype,也就是多例的,如果不设置则就会是默认的singleton ...

  6. SpringBoot中设置自定义拦截器

    SpringBoot中设置自动以拦截器需要写一个类继承HandlerInterceptorAdapter并重写preHandle方法 例子 public class AuthorityIntercep ...

  7. Struts2中过滤器和拦截器的区别

    拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...

  8. struts2学习(6)自定义拦截器-登录验证拦截器

    需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...

  9. java中配置自定义拦截器中exclude-mapping path是什么意思?

    <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/>//过滤全部请求 & ...

随机推荐

  1. JavaScript判断对象的类型

    JavaScript判断对象的类型 最近阅读了一些关于JavaScript判断对象类型的文章.总结下来,主要有constructor属性.typeof操作符.instanceof操作符和Object. ...

  2. PhoneGap+Xcode6环境配置

    安装PhoneGap,请先安装好NodeJS $ sudo npm install -g phonegap 创建项目 $ phonegap create my-app 编译项目 $ cd my-app ...

  3. TCP/IP capture/analysis tools in Unix/Linux

    There are some useful tools in Unix/Linux to check out how the system is going on. Here is a short s ...

  4. 线程内唯一对象HttpContext

    在asp.net中,HttpContext是主线程内唯一对象.在web应用中开启多线程,在另外一个线程中是无法访问HttpContext. 如果需要在另外一个线程中使用HttpContext.Curr ...

  5. 分区数据库oracle自动分区

    首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 oralce在linux下主动备份并删除5天前备份 导出脚本: export ORACLE_BASE=/opt/oracle         ...

  6. 【Scala】Scala之String

    一.前言 大数据领域的Spark.Kafka.Summingbird等都是由Scala语言编写而成,相比Java而言,Scala更精炼.由于笔者从事大数据相关的工作,所以有必要好好学习Scala语言, ...

  7. shell编程其实真的很简单(二)

    上篇我们学会了如何使用及定义变量.按照尿性,一般接下来就该学基本数据类型的运算了. 没错,本篇就仍是这么俗套的来讲讲这无聊但又必学的基本数据类型的运算了. 基本数据类型运算 操作符 符号 语义 描述 ...

  8. Perception(0-1.1)

    The perception modules run in the context of the process Cognition. They detect features in the imag ...

  9. 如何得到AdoConnection.execute(sqlstr)执行的返回结果

    如何得到AdoConnection.execute(sqlstr)执行的返回结果? 1: TAdoConnection.execute有procedure.function的两种定义,function ...

  10. mysql解压版的配置安装

    先在CMD进入编辑筐,用管理员身份运行 切换到mysql的解压目录的bin目录下并输入mysqld -install 这个时候启动服务, 发现出错!!! 检查这两个文件 这里的路径一定要核对 再次启动 ...