Struts2拦截器简单示例

struts2 拦截器实例 struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor 立即下载

拦截器(Interceptor )是Struts 2 的核心组成部分。很多功能(Feature )都是构建在拦截器基础之上的,例如文件的上传和下载、国际化、转换器和数据校验等,Struts 2 利用内建的拦截器,完成了框架内的大部分操作。
在Struts 2 文档中对拦截器的解释为——拦截器是动态拦截Action 调用的对象。它提供了一种机制,使开发者可以定义一个特定的功能模块,这个模块可以在Action 执行之前或者之后运行,也可以在一个Action 执行之前阻止Action 执行。同时也提供了一种可以提取Action 中可重用的部分的方式
拦截器在Struts2中的示意图:
从上图可以看出,Struts 2 架构的 Action 被一个或者多个拦截器(拦截器栈)所包围,所有的用户请求都会被拦截器所拦截,然后交给 Action 处理,处理结果以逻辑视图方式返回给用户。而这个调用执行流程,是由 Struts 2 的配置文件来实现的,后面会详细介绍。拦截器是 Struts 2 核心部分之一。
当用户请求到达 Struts 2 的 ServletDispatcher 时, Struts 2 会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表( List ),最后一个一个地调用列表中的拦截器
拦截器时序图如下图所示:
在 Struts 2 架构中, Action 的调用都是通过拦截器来实现的。有的读者可能会疑惑,为什么没有明确说明拦截器,为什么可以直接调用 Action ?那是因为 Struts 2 架构如果不做显式的拦截器配置,则系统会调用默认的拦截器来调用 Action ,在用户看来,好像没有配置拦截器 。
 
Hello World拦截器示例.
程序要演示的是显示地让拦截器调用Action,来体会拦截器的用途。
一般情况下我们都会先写出一个Action,然后配置struts.xml文件
MyAction.java
public   class   MyAction  extends   ActionSupport { 

  //以下属性信息都是从前台(JSP页面获得) 
  private   String username; 
    
  private   String mymsg; 
    
  private   String password1; 
    
  private   String password2; 
    
  private   Date birthday; 

  public   String execute(){ 
    if (username!=null &&this .getPassword1().equals(this .getPassword2())&&!this .getUsername().trim().equals("")){ 
        
      //输出调试信息 
      System.out.println("Action信息,正在执行Action....  " ); 
      return   SUCCESS; 
    }else { 
      return   INPUT; 
    } 
  } 
    
    

  public   String getUsername() { 
    return   username; 
  } 



  public   void   setUsername(String username) { 
    this .username = username; 
  } 



  public   String getMymsg() { 
    return   mymsg; 
  } 

  public   void   setMymsg(String mymsg) { 
    this .mymsg = mymsg; 
  } 

  public   String getPassword1() { 
    return   password1; 
  } 

  public   void   setPassword1(String password1) { 
    this .password1 = password1; 
  } 

  public   String getPassword2() { 
    return   password2; 
  } 

  public   void   setPassword2(String password2) { 
    this .password2 = password2; 
  } 

  public   Date getBirthday() { 
    return   birthday; 
  } 

  public   void   setBirthday(Date birthday) { 
    this .birthday = birthday; 
  } 
    
} 
 
自定义拦截器MyInterceptor.java
public   class   MyInterceptor  extends   AbstractInterceptor { 

  //拦截方法 
  public   String intercept(ActionInvocation invocation)  throws   Exception { 

    MyAction myA=(MyAction) invocation.getAction(); 
    System.out.println("拦截器信息:hello world 拦截器" ); 
    //执行action或者下一个拦截器 
    String result=invocation.invoke(); 
    System.out.println("拦截器信息:Action执行完毕" ); 
    return   result; 
  } 

}
下面我们开始配置struts.xml文件
首先我定义了一个my.xml文件
<? xml   version ="1.0"   encoding ="UTF-8"   ?>  
<!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/struts-2.0.dtd"> 

< struts >  

        < package   name ="mynew"   namespace ="/"   extends ="struts-default" >  
         
          < interceptors >  
            < interceptor   name ="myInterceptor"   class ="com.MyInterceptor" >  
            </ interceptor >  
          </ interceptors >  
     
    < action   name ="myAction"   class ="com.MyAction" >  
      < result   name ="success" > /success.jsp</ result >  
      < result   name ="input" > /index.jsp</ result >  
      <!--  引用默认拦截器  --> 
      < interceptor-ref   name ="defaultStack" > </ interceptor-ref >  
      <!--  引用自定义拦截器  --> 
      < interceptor-ref   name ="myInterceptor" > </ interceptor-ref >  
    </ action >  
        </ package >  
</ struts >  
 
这样的话就要在struts.xml引入,
<? xml   version ="1.0"   encoding ="UTF-8"   ?>  
<!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/struts-2.0.dtd"> 

< struts >  
        < constant   name ="struts.devMode"   value ="true"   />  
  < include   file ="my.xml" > </ include >  
</ struts >  
如果读者不习惯的话完全可以写在struts.xml文件中
 
index.jsp
< %@   page  language ="java"   import ="java.util.*"   pageEncoding ="UTF-8" %>  
< %@   taglib  prefix ="s"   uri ="/struts-tags"   %>  
< html >  
    < head >  
    </ head >  
     
    < body >  
      < s:form   method ="post"   action ="myAction" >     
        < s:textfield   name ="username"   label ="用户名" > </ s:textfield >  
        < s:password   name ="password1"   label ="密码" > </ s:password >  
        < s:password   name ="password2"   label ="确认密码" > </ s:password >  
    < s:submit   value ="注册" > </ s:submit >  
      </ s:form >  
    </ body >  
</ html >  
success.jsp
<%@ page language="java"   contentType="text/html; charset=UTF-8"  
        pageEncoding="UTF-8" %> 
<%@ taglib prefix="s"   uri="/struts-tags"   %> 
<!DOCTYPE html PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type"   content="text/html; charset=UTF-8" > 
<title>Insert title here</title> 
</head> 
<body> 
  <h3>注册成功</h3> 
  用户名:<s:property value="username" /><p> 
  密码:    <s:property value="password1" /> 
</body> 
</html>
后台输出结果:
拦截器信息:hello world 拦截器 
Action信息,正在执行Action....    
2010-11-1 20:39:11 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn 
警告: Could not find property [org.apache.catalina.jsp_file] 
拦截器信息:Action执行完毕

Struts2学习案例(拦截器) 自己写的struts2小案例,DAO是用JPA开发,包含Action,mysq等,mvc模式 立即下载

相关推荐

Struts2拦截器登录验证实例

本篇文章主要介绍了Struts2拦截器登录验证实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

struts2拦截器的应用(检查登录的拦截器案例)

一点废话在上篇文章中我们已经说了如何自定义拦截器。 那么我们就可以使用自定义拦截器来实现日常我们经常遇到的小功能。 例如: 在慕课网 我们找到视频要点击开始学习时,会弹出登录的页面。 在京东网上买商品时,点击结算也会弹出登录的页面 在这里使用我们的自定义拦截器就能够实现这个功能。检查登录的拦截器案例需求 首先说说我们的需求: 1.假设我们共三个页面,登录页面,主页,其它页面

苏苏爱自由 3178

最新版Node.js下载安装及环境配置教程(非常详细)

选择对应你系统的Node.js版本。

DN金猿的博客 12万+

struts2拦截器的一个使用实例

一个关于struts2自定义拦截器使用的例子,觉得很好,记录下来,以备后用。 要求:建立一个拦截器,用户名后缀为“r”的才允许访问“/sec”命名空间下的所有 action。 (拦截器、struts.xml,需 要定义拦截器堆栈、缺省拦截器引用等) 关于拦截器的基础知识可以查看拦截器的使用网上教程一大堆,自己随便搜搜就有了,在此不加探讨。 一、项目结构图 二、主要j...

Evan_love的博客 1863

富士SC2022,C325,C328打印机扫描到网络详细教程

富士打印机SC2022,C328,C325等型号扫描到电脑教程

weixin_41926602的博客 1万+

CSM中一些常见问题的解决方式

CSM中一些常见问题的解决方式 抖动 摄像机在每帧移动或者旋转时,会产生较严重的抖动问题。

小龙虾的博客 2130

Struts2拦截器配置(简单的登陆后的权限验证)

简单登陆后的权限验证 1.UserAction public String login(){ //为防止用户重复提交同一请求(当直接在地址栏输入请求时,) session=context.getSession();//首先获取session User userSession=(User)session.get("user...

diku9497的博客 147

储能BMS三级架构解析:从模组到堆的管理与控制

本文深入解析了储能电池管理系统(BMS)的核心三级架构,即电池模组管理层(BMU)、电池簇管理层(BCMU)和电池堆管理层(BAMS)。文章详细阐述了各级的职能分工与协同机制,从底层数据采集、均衡管理,到中层信息汇总与安全控制,再到顶层的系统总控与对外通信,揭示了该架构如何实现大规模储能电池的精细化、安全与高效管理。

ik678901234的博客 472

Struts2拦截器简单模拟

简单模拟了下Struts2拦截器的原理。 首先定义Interceptor接口: package com.kaso.interceptor; public interface Interceptor { public String intercept(ActionInvocation invocation); } 该接口中引用了ActionInvocation类: p

KasoGG的专栏 585

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记

为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。

2403_85515624的博客 2343

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

jks212454的博客 5577

struts2拦截器(简单)

1.LoginAction.java   package lee; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username; private String password; public String getUser...

梦醒2010 131

C-Lodop打印服务系统存在任意文件读取

C-Lodop打印服务系统存在任意文件读取

weixin_43567873的博客 2875

编写一个简单的Struts2 拦截器

xiaolong0211的专栏 508

2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码

2026华数杯 国际大学生数学建模竞赛 A题 如何防守直接任意球? 解题思路+模型分析+代码。基于视频数据重构进球轨迹,建立空间坐标系并进行曲线拟合,推算初始速度。建立"香蕉球"、"电梯球"、"落叶球"三种典型直接任意球轨迹的动力学模型,分析C罗进球的类型。针对C罗这类强力球员的直接任意球,提出人墙排布策略和守门员防守策略。

YOLO 663

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MyEclipse struts2 拦截器处理用户请求简单实例

Struts2简介 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts

CjfBlog的博客 1897

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Struts2拦截器注解的简单例子

最近开发一个项目,技术架构由spring2+hibernate3+struts2+freemarker搭建。struts2的action视图转发工作,本人觉得用注解直接在代码上配置很方便,想省去了配置struts.xml操作。但就是由于自己懒惰,在开发过程中遇到了一些麻烦,因为对struts2注解的不熟悉,不知道怎样做拦截器的注解,后来经过在网上查资料和自己不断的搞测试,终于把问题搞定了。 下面...

jadewoo的专栏 183

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

struts2的拦截器的简单使用

struts2的拦截器使用

u010931209的专栏 637

Struts2拦截器的一个简单应用

<br />前言:大家都知道Struts2的拦截器和Servlet的过滤器类似.但是个人觉得Struts2的拦截器功能上不如Servlet过滤器的强大.<br />原因有两点: 1、拦截器只能对action进行拦截,而不能拦截JSP页面<br />                 2、拦截器只能在表单提交以后发挥作用,而对直接在地址栏上输入的url无法进行拦截.从而导致不能进行完整的身份认证.<br />在Struts2中我还没有发现能够解决以上两个问题的办法,姑且暂时先用Struts2的拦截器做了一个登陆

mistyGod的"咖啡"世界 1232

struts2实现简单拦截器

struts2实现拦截器的方法有三种:      1:实现Interceptor接口,需要实现init(),destroy(),intercept(ActionInvocation actionInvocation)三个方法。      2:继承AbstractInterceptor,只需要重写intercept(ActionInvocation actionInvocation)方法,他帮我

shizhan1881的专栏 703

struts2实现简单action时间拦截器

//jsp index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+re

大道至简,悟在天成。 608

Struts2中拦截器的简单实现

Struts2的拦截器和Servlet过滤器类似。在执行Action的execute方法之前,Struts2会首先执行struts.xml中引用 的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法。在Struts2的拦截器体系中, Struts2的内建拦截器完成了该框架的大部分操作,所以实际的开发过程中通常都是使用系统的拦截器而已。当然我们也可

scalad 951

struts2简单的自定义interceptor拦截器入门

interceptor拦截器可以对请求在到达Action之前的做出一些预处理,也就是到达Action之前干一些事我们都知道很多网站都有这样的限制,如某宝,只有用户登录了才能查看自己的购物车,订单,收藏夹等,视频网站也会要求你登录以后才能下载视频或文件,就像优快云需要你登录才能下载资料.那么网站是如何知道你有没有登录,又是如何限制用户下载的呢?本文通过简单的案例来入门struts2简单的自定义in...

HHSUVV的博客 377
上一篇: 简介DOM对象和jQuery对象
下一篇: Struts2原理详解
北斗安心联
博客等级 码龄16年 6粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值