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. 在linux服务器上装svn版本管理,自动部署代码到项目

    在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw ...

  2. POJ 2101

    #include <iostream> #include <algorithm> #include <cmath> using namespace std; int ...

  3. pku 1182(种类并查集)

    题目链接:http://poj.org/problem?id=1182 解题思路来自discuss:http://poj.org/showmessage?message_id=152847 #incl ...

  4. NIM博弈的必胜取法

    #include<stdio.h> ; int a[Max]; int main() { int i,n,ans; int tmp; while(scanf("%d", ...

  5. hdu 2964 Prime Bases(简单数学题)

    按照题意的要求逐渐求解: #include<stdio.h> #include<string.h> #include<algorithm> using namesp ...

  6. RTP-实时协议

    RTP,实时协议被用来为应用程序如音频,视频等的实时数据的传输提供端到端(end to end)的网络传输功能.传输的模型可以是单点传送或是多点传送.数据传输被一个姐妹协议——实时控制协议(RTCP) ...

  7. Linux下查看进程和线程

    在linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册 ...

  8. JavaWeb笔记——注册登录系统项目思路

    功能:   > 注册   > 登录 --------------------------------- JSP:   * login.jsp  --> 登录表单   * regist ...

  9. ThinkPHP:读取数据库数据 (2)

    项目配置文件Conf/config.php中添加数据库连接信息: // 添加数据库配置信息 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'loc ...

  10. swift:入门知识之协议与扩展

    swift中使用protocol声明一个协议接口 swift中类.枚举和结构体都可以实现协议接口 swift中类中的方法都可以修改成员变量的值 swift中结构体中的方法默认是不能修改成员变量的,添加 ...