struts2拦截器の简单实现(日语系统,请忽略乱码,重在实现)

1.创建类实现interceptor接口或者继承abstractinter~~~类

package com.mi.intercepter;

import java.util.Date;

import com.mi.action.LoginAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class Intercep implements Interceptor{

    private static final long serialVersionUID = 1L;

    private String name;
    @Override
    public void destroy() {
        System.out.println("destroy is run************");
    }

    @Override
    public void init() {
        System.out.println("init is run************");
    }

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        LoginAction loginAction = (LoginAction) invocation.getAction();

        System.out.println(getName()+"the***starttime is***  "+new Date());
        long start = System.currentTimeMillis();
        String result = invocation.invoke();

        System.out.println("the endtime***  "+new Date());
        long end = System.currentTimeMillis();

        System.out.println(getName()+"the costtime is ***  "+(end-start)+"毫秒");
        System.out.println("result s result***  "+result);
        return result;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.在struts.xml文件中配置已经创建的拦截器,并且配置要拦截诶的action

<?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.i18n.encoding" value="utf-8" />

    <package name="lee" extends="struts-default">

        <interceptors>
            <interceptor name="simple" class="com.mi.intercepter.Intercep">
                <param name="name">简单拦截器</param>
            </interceptor>
        </interceptors>

        <!-- 用户注册的Action -->
        <action name="regist" class="com.mi.action.RegistAction">
            <!-- 类型转换失败、输入校验失败,转入input对应的视图 -->
            <result name="input">/content/registForm.jsp</result>
            <result>/content/show.jsp</result>
        </action>

        <action name="login" class="com.mi.action.LoginAction">
            <result name="error">/content/error.jsp</result>
            <result name="success">/content/welcome.jsp</result>
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <interceptor-ref name="simple">
                <param name="name">改名后的拦截器</param>
            </interceptor-ref>
        </action>
        <action name="*">
            <result>/content/{1}.jsp</result>
        </action>

    </package>
</struts>

3.我的loginAction

package com.mi.action;

import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private String username;
    private String password;

    // username??setter??getter????
    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    // password??setter??getter????
    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public String execute() throws Exception {
        System.out.println("??execute??????????..........");
        Thread.sleep(1500);
        if (getUsername().equals("tangxiujuan") && getPassword().equals("tangxiujuan")) {
            return SUCCESS;
        }
        return ERROR;
    }
}

4.此时控制台会打印出如下内容,请忽略乱码!!!重点在于拦截器!

时间: 2024-10-23 21:54:23

struts2拦截器の简单实现(日语系统,请忽略乱码,重在实现)的相关文章

struts2拦截器-简单实现非法登录验证

概念:什么是拦截器 拦截器实现了面向切面的组件,它会影响多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现高度内聚,确保业务对象的整洁!   为什么使用拦截器 拦截器消除了动作组件中的横切任务,为系统处理每一个请求完成的管理任务!     拦截器的工作原理 当框架接受到一个请求的时候,它首先必须决定这uri映射到哪一个动作组件,这动作组件的实例就会被加入到一个新创建的Actionlnvocation实例中,然后框架将会验证哪一些拦截器将会被激活触发(xml文件中的配置),

Struts2 拦截器

一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器. 比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源:否则,系统直接转入登陆页面.对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用.因为大部分Action里的权限检查代码都大同小异,故将这些权

Struts2拦截器详解

作者:禅楼望月 1. Struts2内置拦截器 Struts2内置了大量的拦截器,如下图: 图片来自:刘水镜的博客:菜鸟学SSH(四)--Struts2拦截器 这些拦截器以name-class的形式配置在struts-default.xml中: <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/> <interceptor n

Struts2拦截器原理以及实例

Struts2拦截器原理以及实例 一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack).Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用. 二.实现Struts2拦截器原理 Struts 2的拦截器实现相对

Struts2.x教程(三) Struts2拦截器

一.Struts2拦截器介绍 Struts2拦截器是使用AOP实现的,主要是针对action对象进行拦截,可以在访问action的某个方法.字段之前或之后实施拦截. 可以为action配置多个拦截器,Struts2会将这一组拦截器按照一定顺序组织成一个拦截器栈.action可以直接引用某个拦截器栈来实现配置多个拦截器的目的. 对于继承struts_default的package中的action,都会默认引用name=defaultStack的拦截器栈(在struts_default中定义了Str

ssh2——struts2 拦截器

虽然没学过struts1吧,但是了解到struts1中并没有拦截器,  到Struts2才有,它是基于WebWork发展起来的, 顾名思义,说到拦截器大家首先肯定会想到它是拦截东西的,起到一个限制的作用,那么好,在这里它是拦截什么的呢?在struts2中拦截器是用来拦截Action的,在执行Action之前拦截器会起一定的作用,执行一些预先处理的代码, 接着去执行Action中相关的方法,之后,又会回到拦截器里面,接着去执行后续的一些操作.刚刚学习,如果我理解的不对的话,请大家留言指正啊. St

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

大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证. 修改数据库 在user表中增加password字段,将初始密码都设为123,因为是示例所以采用明码,实际开发中,当然不能这样做,需要进行加密处理.再将name改为username,其实name字段可以不用改名,我这样做是为了命名规范,请注意,如果字段改为username,User类中的对应属性也要进行相应变化(如果你加注

Struts2 拦截器(Interceptor )原理和配置

一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器. 比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源:否则,系统直接转入登陆页面.对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用.因为大部分Action里的权限检查代码都大同小异,故

笔记:Struts2 拦截器

配置拦截器 Struts.xml 配置文件中,使用<interceptor-/>来定义拦截器,有属性 name 表示拦截器的名称,class 表示拦截器的具体首先类,可以使用<param-/>子元素来配置拦截器的参数,配置示例: <package name="包名称" extends="抽象包名称"> <interceptors> <interceptor name="拦截器名称" class