struts2.xml 内容

<?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> <constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="msg"></constant>
<constant name="struts.action.extension" value="action,free"></constant>
<package name="test1" extends="struts-default" abstract="true">
<interceptors>
<!--用于显示拦截器的生命周期和调用时间 -->
<interceptor name="i1" class="com.free.Interceptor.MyInterceptor">
</interceptor> <interceptor name="i2"
class="com.free.Interceptor.MethodIntercepter"> </interceptor> <interceptor-stack name="my1">
<!--这里引入struts里面的默认拦截器 -->
<interceptor-ref name="i2">
<!-- login方法不用拦截 -->
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="i18n" />
<interceptor-ref name="prepare" />
<interceptor-ref name="chain" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="multiselect" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
<interceptor-ref name="conversionError" />
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="debugging" />
<interceptor-ref name="i1"> </interceptor-ref> </interceptor-stack> </interceptors>
<!--配置该包的默认拦截器,且每个包只能指定一个默认拦截器 -->
<default-interceptor-ref name="my1"> </default-interceptor-ref>
</package> <package name="test4" extends="test1">
<action name="delete" class="com.free.Action.loginAction"
method="delete">
<result>/success.jsp</result>
<result name="login">/login1.jsp</result> </action>
<action name="add" class="com.free.Action.loginAction" method="save">
<result>/success.jsp</result>
<result name="login">/login1.jsp</result> </action>
<action name="login1" class="com.free.Action.loginAction"
method="login">
<result>/admin1.jsp</result>
<!-- 若出现错误,则转入login1.jsp,就是重新登录 -->
<result name="login">/login1.jsp</result>
</action> </package>
</struts>

action类

package com.free.Action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class loginAction extends ActionSupport {
public String save() {
System.out.println("save");
return SUCCESS;
} public String delete() {
System.out.println("delete");
return SUCCESS;
} public String login() {
System.out.println("login方法"); //这里要创立一个标记,建立session
HttpSession _Session = ServletActionContext.getRequest().getSession();
_Session.setAttribute("user", "user");
return SUCCESS;
}
}

自定义拦截器内容

package com.free.Interceptor;

import java.awt.Desktop.Action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.free.testDemo.action1;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
//import com.opensymphony.xwork2
public class MethodIntercepter extends MethodFilterInterceptor { // 方法拦截器,对于要拦截的方法,放行or不放行
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();
//判断有误登录标记,有:放行;没有:返回登录的逻辑页面
Object attribute = session.getAttribute("user");
if(attribute !=null) {
System.out.println("检测到了session放行");
return invocation.invoke();
} else {
System.out.println("没有检测到session,转入登录页面");
return com.opensymphony.xwork2.Action.LOGIN; } } }

struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证的更多相关文章

  1. SSM-SpringMVC-11:SpringMVC中ParameterMethodNameResolver参数方法名称解析器

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 或许曾经的我们也见过一种方式http://localhost:8080/项目名/后台servlet?actio ...

  2. [java] 更好的书写equals方法-汇率换算器的实现(4)

    [java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]>   [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...

  3. struts2拦截器interceptor的三种配置方法

    1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...

  4. Springboot关于tomcat容器配置、三大组件配置、拦截器配置

    原文地址:http://www.javayihao.top/detail/172 1.tomcat配置 Springboot默认使用的就是嵌入式servlet容器即tomcat,对于web项目,如果使 ...

  5. Struts2拦截器登录验证

    Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...

  6. Struts2基础-4-2 -struts拦截器实现权限控制案例+ 模型驱动处理请求参数 + Action方法动态调用

    1.新建项目,添加jar包到WEB-INF目录下的lib文件夹,并添加到builde path里面 整体目录结构如下 2.新建web.xml,添加struts2核心过滤器,和默认首页 <?xml ...

  7. 基于SSH2框架Struts2拦截器的登录验证实现(转)

        大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证.     修改数 ...

  8. Struts2拦截指定方法的拦截器

    作者:禅楼望月 默认情况下,我们为一个Action配置一个拦截器,该拦截器会拦截该Action中的所有方法,但是有时候我们只想拦截指定的方法.为此,需要使用struts2拦截器的方法过滤特性. 要使用 ...

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

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

随机推荐

  1. iOS第三方解决键盘遮挡-IQKeyboardManager

    百度云:http://pan.baidu.com/s/1yg5ae githun:https://github.com/hackiftekhar/IQKeyboardManager AppDelega ...

  2. java 如何连接MySql数据库

    利用jdbc方式连接数据库. 1.添加mysql驱动jar包 我用的是这个驱动包mysql-connector-java-5.1.26-bin.jar 添加方式: 2.加载MySql驱动类 priva ...

  3. select into from和insert into select from两种表复制语句区别

    select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...

  4. iOS多线程 GCD

    iOS多线程 GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. dispatch queue分成以下三种: 1)运行在主线程的Main que ...

  5. Discuss!X3.2 绑定微信

    完整程序 http://pan.baidu.com/s/1jGL5veQ 密码kgga Discuz!X3.2 在继承和完善 Discuz!X3.1 的基础上,针对社区移动端进行了新的尝试.新版本主要 ...

  6. C++不能显式调用构造函数,会生成匿名对象,这点与Java完全不一样!

    Java可以直接调用同名构造函数,仅仅起初始化的功能,并不构造新的对象,但是C++里面没有.看一下这段代码: class A { public: A() { printf("A() \n&q ...

  7. 修改webapp底图

    从webapp目录可以看出地图归mapManager处理,所以在MapManager.js中找关于加载地图的方法, 很容易在里面找到showMap方法: 下面有另一个方法_showMap方法,查看定义 ...

  8. 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符

    [重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符   1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...

  9. 文章投稿 latex 生成 pdf的字体Embeded问题解决(转自兵马俑BBS)

    此法可以把所有字体转为Embedded,先生成*.ps文件,下载ghostscrip8.51和GSView4.7 安装,用gsview4.7转换*.ps->*.pdf,在gsview中File- ...

  10. HDOJ ——统计难题

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...