拦截器代码: 

package mycrm.interceptor;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

import mycrm.domain.User;

public class PrivilegeInterceptor extends MethodFilterInterceptor {

    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        //判断session是否有用户信息
        User existUser = (User) ServletActionContext.getRequest().getSession().getAttribute("existUser");
        if(existUser == null){
            //没有登陆,给出提示信息,回到登录页面
            //获取当前Action
             ActionSupport actionSupport = (ActionSupport) invocation.getAction();
             actionSupport.addActionError("没有权限,请登录后再访问!");
             //回到登录页面
             return actionSupport.LOGIN;
        }else{
            //已经登录,放行,执行下一个拦截器
            return invocation.invoke();
        }
    }

}

向配置文件添加拦截器:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>

<package name="action" extends="struts-default" namespace="/">

<!-- 定义拦截器 -->
<interceptors>
<interceptor name="privilegeInterceptor" class="mycrm.interceptor.PrivilegeInterceptor"/>
</interceptors>

<!-- 全局页面 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results>

<!-- 配置Customer的Action -->
<action name="customer_*" class="mycrm.action.CustomerAction" method="{1}">

<result name="findAll">/jsp/customer/list.jsp</result>
<result  name="add">/jsp/customer/add.jsp</result>
<result name="addSuccess">/jsp/customer/list.jsp</result>

<!-- 添加拦截器,登录和注册不拦截 -->
<interceptor-ref name="privilegeInterceptor">
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>

</action>

<!-- 配置User的Action -->
<action name="user_*" class="mycrm.action.UserAction" method="{1}">

<result name="login">/login.jsp</result>
<result type="redirect">/index.jsp</result>

<!-- 添加拦截器,登录和注册不拦截 -->
<interceptor-ref name="privilegeInterceptor">
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>

</action>

</package>
</struts>

 设置表单target放置页面嵌套:

  <FORM id=form1 name=form1 action="${pageContext.request.contextPath }/user_login.action" method=post target="_parent">                        

附:Struts2-CRM,拦截器实现权限访问的更多相关文章

  1. Struts2使用拦截器完成权限控制示例

    http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求:    要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...

  2. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  3. Spring的AOP,Struts2的拦截器(Interceptor),以及springMVC的(interceptor)

    参考外链:http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilter/ 1.首先,spring的AOP作用范围很广,可以使用Aspec ...

  4. struts2总结六: Struts2的拦截器

    一.Struts2的系统结构图

  5. Struts2中拦截器的使用与配置

    一,拦截器是什么? 拦截器是在Action执行之前和之后执行的代码,是一个类似于过滤器的类: 二,拦截器的作用 拦截器拦截Action的请求,在Action之前或之后实现某项功能: 三,拦截器的特点 ...

  6. java之struts2之拦截器

    1.struts2能完成数据的设置,数据的封装,数据的类型转换,数据的校验等等.struts2是如何来完成这些功能的?struts2的所有功能都是由拦截器来完成的. 2.拦截器是struts2的核心. ...

  7. (六)Struts2的拦截器

    一.简介 拦截器体系是struts2重要的组成部分.正是大量的内建拦截器完成了该框架的大部分操作. 比如params拦截器将请求参数解析出来,设置Action的属性.servletConfig拦截器负 ...

  8. Struts2 自定义拦截器

    自定义拦截器(权限管理),包含了对ajax和表单请求的拦截 package com.interceptor; import java.io.IOException; import java.io.Pr ...

  9. struts2之拦截器

    1. 为什么需要拦截器 早期MVC框架将一些通用操作写死在核心控制器中,致使框架灵活性不足.可扩展性降低, Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选择和组合,增强了灵活性,有利于 ...

随机推荐

  1. 作业1:使用go搭建一个web-server

    todo1:搭建web-server的原理 todo2:go实现web-server

  2. C#中的循环:while do...while for

    循环:重复将相同或类似规律的代码进行反复执行 减少代码冗余  可维护  可扩展 while(bool) { ...; } 代码块中可以使用break或者continue中断 break:中断整个循环 ...

  3. Kali2.0中peda与pwntools的安装

    MarkdownPad Document *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...

  4. VS2017出现不存在从"CString"到"const char*"的适当转换函数

    出现不存在从CStrign到const char*的转换,可以将项目属性的字符集设置从"使用Unicode字符集“转换为”使用多字字符集“. 点击”项目“----“属性”----“配置属性” ...

  5. 在Linux系统下安装nginx教程

    最近学习了nginx,就打算nginx安装在Linux系统下,于是我就把安装步骤记录下来了,分享给大家,希望能对大家有帮助! 我的博客地址:https://www.cnblogs.com/themys ...

  6. Python 高级特性介绍 - 迭代的99种姿势 与协程

    Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...

  7. Django跨域:

    下包 pip install django-cors-headers 下面的操作在setting里 添加到appps里 INSTALLED_APPS = [ ... 'corsheaders', .. ...

  8. vscode 双击选中用中划线拼接的名称和几个常用的扩展

    左下角点击图标-选择设置,然后搜索editor.wordSeparators,然后去掉中划线-就可以了 `~!@#$%^&*()=+[{]}\|;:'",.<>/? 这样 ...

  9. list-style: none;

    表明list项前面没有什么修饰(一片空白).

  10. 你了解真正的 restful API 吗?

    本文原创地址,博客:https://jsbintask.cn/2019/03/20/api/restful-api-best-practices/(食用效果最佳),转载请注明出处! 前言 在以前,一个 ...