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

OpenCode:开源代码智能代理平台的全面解析

OpenCode是一个开源代码智能代理平台,采用模块化微服务架构,支持多种AI模型集成。该系统包含前端交互层、代理服务层和模型集成层,提供Build、Plan和General三种代理模式,分别负责代码编写、分析和复杂任务处理。OpenCode支持跨平台安装,具备权限验证、上下文感知等安全机制,并集成LSP协议实现深度代码理解。相比竞品,其开源特性、终端优先设计和提供商无关架构具有明显优势,适用于个人开发、团队协作等多种场景,为开发者提供强大的AI辅助编程能力。

Aaron_945的博客 1424

struts2拦截器的一个使用实例

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

Evan_love的博客 1863

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 219

TI C2000 DSP CLA实战:用F28069的协处理器实现ADC采样与PWM相位实时联动控制

本文详细介绍了如何利用TI C2000系列DSP的CLA协处理器在TMS320F28069上实现ADC采样与PWM相位的实时联动控制。通过CLA的零周期上下文切换和硬件级任务触发特性,显著提升了电机控制和数字电源应用的实时性能,特别适用于需要亚微秒级响应的场景。

weixin_30932215的博客 3968

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

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

diku9497的博客 147

STM32G474片内运放实战:从独立模式到PGA与ADC采样链路

在嵌入式控制系统中,运放是连接模拟信号与数字处理的关键环节。传统方案依赖外部分立运放搭建放大电路,存在成本高、PCB布局敏感、一致性差等痛点。STM32G474在MCU内部集成多路可编程运放(OPAMP),支持独立模式、跟随器、PGA以及比较器模式,配合内部ADC和DMA可构成完整模拟采集链路。通过片内互联,信号路径大幅缩短,抗干扰性和通道一致性显著提升,尤其适用于电机电流采样、数字电源等场景。本文以STM32G474为例,详解从独立模式到PGA增益配置,再到ADC与DMA联动调试的完整过程,并给出采样时间

weixin_29194255的博客 246

Struts2拦截器简单模拟

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

KasoGG的专栏 585

【一看就会】autoware universe项目结构解析——从一层一层直到control源码

下载安装autoware universe花了一天。下载好之后,按照网上说的跑了一下仿真是能跑的,证明下的代码没问题。然后就得看一下各模块实现的源码了。但是当我打开这些文件的时候。我勒个豆。这么多是个玩意儿。我连该启动哪个launch文件,哪个文件夹是干啥的都不知道。在我慢慢弄懂之后,我也记录这个庞大的项目的各个文件夹和里面的文件以及项目,以及自己使用时应该启动哪些launch文件。这篇文章目的就是通过找到control部分的源码,来帮助我们梳理这个庞大项目的各个文件的功能。

weixin_48386130的博客 2037

Android Framework SurfaceFlinger面试题及参考答案

请简述 SurfaceFlinger 在 Android 系统中的作用。 SurfaceFlinger 是 Android 系统中一个非常关键的服务。它主要负责将多个应用程序的 Surface 合成到一个屏幕显示内容中。 从应用程序的角度来看,每个应用都有自己的 UI 界面,这些 UI 界面实际上是由一系列的图层(Surface)构成。例如,一个应用可能有背景图层、按钮图层、文本图层等。应用通过向 SurfaceFlinger 提供这些 Surface 来请求显示。 SurfaceFl

大模型大数据攻城狮的专栏 1185

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

【Embabel Agent】生产级最佳实践与避坑指南

本文围绕架构师最关心的 8 大维度展开:测试策略(FakeOperationContext 实现 Action 级单元测试、Prompt 质量与敏感信息校验)、MCP 集成实战(STDIO/HTTP 双模式、自建 Server、Docker MCP 生态)、RAG 检索增强、OpenTelemetry 全链路可观测性与追踪、Docker/K8s 生产部署、API Key 管理与 @Tool 安全防护、模型选择/缓存/并行等性能优化,以及过度依赖 LLM、忽略错误处理等 8 大常见反模式避坑指南。

program哲学 307

编写一个简单的Struts2 拦截器

xiaolong0211的专栏 508

在Allegro设计界面中如何修改封装焊盘

在高密度板的情况下,SUIPLA(支持内层没有的焊盘摘掉)打勾,在高密度板的情况下,内层没有的焊盘摘掉可以增加走线的空间。3、修改完焊盘后,选择File→Update to Design(更新到设计)。然后关闭焊盘修改对话框即可。,将会定期不定期更新技术文章,互相学习交流。或者点击Options选项卡下要修改的焊盘,然后点击Edit修改。在Allegro PCB设计界面中修改封装焊盘的方法。2、然后点击封装上要修改的焊盘,右击选择Edit。修改完成后如下图所示。

bhxc809751502的博客 7806

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

CjfBlog的博客 1897

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Struts2拦截器注解的简单例子

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

jadewoo的专栏 183

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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、付费专栏及课程。

余额充值