struts2应用技术层,拦截器,struts2标签

Struts2 中拦截器的工作原理及其执行顺序 【代码】Struts2 中拦截器的工作原理及其执行顺序。 阅读详情
拦截器和过滤器的区别



拦截器:
只能拦截action

过滤器:过滤器理论上可以任意内容,比如html,jsp,servlet ,图片内容

servlet action 区别

servlet 默认第一次访问时候创建,创建一次,单实例对象

action 每次访问时候创建,创建多次,多实例对象。     

在 struts2里面有很多拦截器, 这些拦截器是struts2封装的功能
但是在实际开发中  struts2 里面的拦截器中可以没有使用的功能
这个时候就需要自己定义拦截器


拦截器结构
1) 参看拦截器的内部结构
继承类

class ModelDrivenInterceptor extends AbstractInterceptor

class AbstractInterceptor implements  Interceptor

void init()
void destory()

String interceptor(ActionInvocation invocation)


开发中
建议使用另外一种方式
写类,继承MethodFilterInterceptor类实现
让action 里面某个方法不进行拦截

让拦截器和action有关系

不是在action调用拦截器的方法,而是通过配置文件方式让建立关系


自定义登录拦截器
   
       需求分析:在项目中,有很多的action的超链接,实现只有登录的状态
才可以点击action的超链接实现功能,如果不是登录状态,点击action超链接
返回到登陆页面


登录状态,使用session域对象实现
1))登录成功之后,把数据放到session里面
2))判断 session时候有值,可以知道是否是登录状态。


3  先实现登录基本功能

1) 查询数据库判断用户名和密码

2)  登录的方法

 //属性封装
 public String login(){
      //得到request对象
      HttpServletRequest request=ServletActionContext.getRequest();
      String username=request.getParameter("username");
      String password=request.getParameter("password");
      //作业:查询数据库判断用户名和密码
      if("admin".equals(username )&&"250".equals(password)){
       //成功, 向session里面放值
       request.getSession().setAttribute("username",username);
       
       return "loginsuccess";
       
     }else{
       //失败
       return "login";
     }
      return "login";
 }


//添加登录拦截器功能
1)  判断是否登录, 判断session里面是否有名称有username的值
2) 拦截器实现过程

第一步: 创建类, 继承MethodFilterInterceptor 类

第二步:重新MethodFilterInterceptor 类里面的方法写拦截器逻辑

第三步:配置action和拦截器关系(拦截器关系)


public class LoginInterceptor extends MethodFilterInterceptor{
   protected String doInterceptor(ActionInvocation invocation) throws
   Exception{
      //判断session里面是否有名称有username的值
      //得到session
      HttpServletRequest request=ServletActionContext.getRequest();
      Object obj=request.getSession().getAttribute("username");
      //判断
      if(obj!=null){
             //登录状态,
             //做类似于放行操作,执行action方法
              return invocation.invoke();
        
      }else{
               //不是登录状态,
               //不到登录,不执行action方法,返回登录页面      
               //到result标签里面找到名称是login的值,到配置路径里面
               return "login";
      }
      
   }
}


第三步: 配置action和拦截器关系(注册拦截器)
1) :在要拦截的action标签所在的package标签里面声明拦截器

    定义拦截器  (定义action外面)
2):<interceptors>
      <interceptor name="loginintercept" class="cn.itcast.interceptor.loginInterceptor">
      </interceptor>
    </interceptors>

<action>
   使用自定义拦截器 在action里面调用)
   <interceptor-ref name="logininterceptor></interceptor-ref>

</action>
备注=====配置拦截器,对action的里面所有的方法都进行拦截

3) 把默认拦截器执行一次
   <interceptor-ref name="defaultStack"></interceptor-ref>




在action里面有login 方法 这个方法被拦截不能进行登录

解决: 让login不进行拦截

通过配置方式让action里面某些方法不进行拦截


配置:
<interceptor-ref name="logininterceptor">
   <!--  excludeMethods 值, action不拦截方法名称   -->
   <param name="excludeMethods">login</param>
</interceptor-ref>


如果登录状态, 直接到登陆页面, 如果不是登录显示登录页面
登录之后出现小问题

实现方法:设置表单的属性 target="_parent">  解决该问题



struts2 标签库
   1.s:property  和ognl表达式在jsp页面获取值占数据
   2.s:iterator 遍历list集合
   3.s:debug

   html表单标签
    1) form : action  method enctype

    2) 输入项
     大部分在input 里面封装type="值"
     text  普通输入项
     password 密码输入项
     radio 单选输入项
     checkbox 复选输入项
     file 文件上传项
     hidden  隐藏域
     button  普通按钮
     submit  提交按钮
     image 图片提交
     reset:重置

     select 下拉输入项
     textarea 文本域

<!--form标签-->
<s:form theme="simple">
    <!--1.普通输入项-->
    <s:textfiled name="username" label="username"></s:textfield>
    <s:password name="password" label="password"></s:password>
    <!--单选输入项  value和显示的值一样-->
    <s:radio list="{'男','女'}"  name="sex" label="性别"></s:radio>
    <s:radio list="#{'nv':'女','nan':'男'}" name="sex1" label="性别"></s:radio>

    <s:checkboxlist list="{'吃饭','睡觉','敲代码'} name="love" label="爱好">
    </s:checkboxlist>

    <s:select list="{'幼儿园','破时候','教授'}" name="college" label="学历"></s:select>

    <s:file name="file"  label="上传文件"></s:file>
    <s:hidden name="hid" value="abcd"></s:hidden>
    <s:textarea rows="10" cols="3" name="wenb"></s:textarea>
    <s:submit value="提交"></s:submit>
     
    <s:reset value="重置"></s:reset>
</s:form>
   

 

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比) 本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。 阅读详情

相关推荐

基于RTL8367S与XS2184的工业级POE交换机硬件设计全解析

本文深入解析基于RTL8367S与XS2184芯片的工业级POE交换机硬件设计,涵盖核心价值、芯片选型、原理图设计、PCB布局及可靠性验证等关键环节。重点探讨双芯片协同工作优势,如RTL8367S的自适应调度算法和XS2184的智能功率分配功能,为工业环境下的稳定供电与数据传输提供专业解决方案。

weixin_42614269的博客 458

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

Struts2 拦截器拦截器在概念上与servlet过滤器或JDK代理类相同。拦截器允许横切功能,把action以及框架分开实现。你可以使用拦截器实现以下操作:在调用action之前提供预处理逻辑。在调用action后提供后处理逻辑。捕获异常,以便可以执行备用处理。Struts2框架中提供的许多功能都是使用拦截器实现的,包括异常处理,文件上传,生命周期回调和验证等。事实上,由于Struts2将其大...

weixin_40663800的博客 5555

XCAT集群管理实战:从裸机到节点批量部署

在数据中心与HPC集群运维中,裸机配置与操作系统批量部署是关键环节。PXE引导、IPMI带外管理等基础技术为自动化装机提供了底层支持,而集群管理工具则将这些能力整合为可扩展的运维体系。XCAT作为一款开源集群管理工具,通过数据库驱动的方式统一管理DHCP、TFTP、HTTP等服务,实现从裸机发现、系统安装到电源控制的全流程自动化。本文从XCAT的核心设计出发,详细介绍了环境准备、安装配置、节点定义、镜像分发及常见问题排查,帮助运维人员快速构建高效的集群部署流程,降低规模化管理的复杂度。

weixin_30899023的博客 241

ssh之struts2篇(二)拦截器&常用标签

主要是拦截器的基础知识,掌握配置和使用方法,学会如何配置和使用自定义拦截器。 运用struts2标签库的标签开发出功能强大的视图页面。

阿U的博客 1261

CH341的I2C流模式(StreamI2C)到底怎么用?从EEPROM读写到自定义设备,一篇讲清参数配置逻辑

本文详细解析了CH341的I2C流模式(StreamI2C)的使用方法,从EEPROM读写到自定义设备的参数配置逻辑。通过深入分析I2C协议基础、StreamI2C参数映射关系及典型设备配置示例,帮助开发者快速掌握StreamI2C的应用技巧,解决实际开发中的常见问题。

weixin_30932215的博客 448

Ubuntu下为RK3568开发板搭建Qt交叉编译环境:手把手教你配置Qt Creator和远程调试

本文详细介绍了在Ubuntu系统下为RK3568开发板搭建Qt交叉编译环境的完整流程,包括工具链配置、Qt源码交叉编译、Qt Creator环境设置以及远程调试技巧。通过手把手教程,开发者可以快速掌握RK3568平台的Qt开发环境搭建方法,实现高效的应用开发和部署。

weixin_30776273的博客 374

【SSH】Struts2学习(四)拦截器、struts2标签

一、自定义拦截器 1、拦截器3种创建方式 (1)实现 Interceptor接口 /** * 拦截器第一种创建方式 * * @author Administrator 拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 */ public class MyInterceptor implements Interceptor { @Override // 销毁方法 publ

麦客子 619

给IC设计新人的Tessent Scan入门指南:从RTL到ATPG的完整DFT流程解析

本文为IC设计新手提供Tessent Scan的完整DFT流程指南,从RTL代码检查到ATPG测试向量生成,详细解析扫描链配置、插入及验证的关键步骤。通过实战案例和工具命令示例,帮助工程师快速掌握Tessent工具链的应用技巧,提升芯片可测试性设计的效率和质量。

weixin_32541663的博客 451

Struts2之拦截器

目录标题

Atkx's Blog 2774

spring-ai学习(四)-MCP

创建一个springai项目1.依赖。

zql1455890112的博客 1384

【Conda虚拟环境】新建 + 激活 + 安装 + 查看 + 退出 + 删除 + 复制 + 导出 + 导入 + 更改

(1)创建虚拟环境(2)激活虚拟环境(4)查看虚拟环境(3)退出虚拟环境(5)删除虚拟环境(6)复制虚拟环境(7)导出虚拟环境(8)导入虚拟环境(9)更改虚拟环境的安装路径(10)在指定路径下,配置虚拟环境

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4万+

04 Struts2中的拦截器和标签库

一、写在前面的话 现在是19年的二月17号,一个很好的日子,可是心情却不是很好。我已经失恋4天,可是我并没有忘记这些回忆。 在一起的日子总是短暂的,没有人能命令别人做任何事,只有程序会按照你的想法走,这或许就是生活吧,希望各位均安好! 二、Struts2中的拦截器 1、什么是拦截器 2、Struts2的执行流程 客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter)方法。在...

一个成长中的程序员,期待用技术的眼光生活 338

《Scratch图形化等级考试(1~4级)历届真题解析》专栏总目录

❤️ 专栏名称:《🌸 专栏介绍:中国电子学会《全国青少年软件编程等级考试》Scratch图形化等级考试(1~4级)历届真题解析。🚀 订阅专栏:原价 99.9,🔥 火爆订阅中 🔥,限时 19.9。订阅后可阅读专栏内所有文章,本专栏持续更新中,欢迎订阅!

人生就是一个不断学习的过程 1万+

Struts2(四)Struts的拦截器&标签库

文章目录Struts2的拦截器什么是拦截器Struts2的执行流程编写拦截器类对拦截器进行配置Struts2的标签库通用标签库判断标签UI标签库(方便数据回显) Struts2的拦截器 什么是拦截器 Interceptor:拦截器,起到拦截Action的作用。 Filter:过滤器,过滤从客户端向服务器发送的请求。 Interceptor:拦截器,拦截是客户端对Action的访问。更细粒度化的...

最白の白菜的博客 284

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【struts2】struts2拦截器

/** *刘梦冰发表于2015-6-5 */struts2提供面向切面(AOP)编程的机制,拦截器便是一种成熟的AOP编程思想的实现,它提供一种机制使开发者能把相对独立的代码抽象出来,配置到action前后执行。拦截器interceptor类似于Filter,在执行action方法前后执行。就像多个Filter组成了Filter链,多个拦截器也组成了拦截器链。struts2中称拦截器链为拦截器栈

lmb55的专栏 1416

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Struts2学习笔记四:Struts2拦截器学习、拦截器实现案例、Struts2标签学习

文章目录1. Struts2学习笔记四:拦截器学习1.1. struts.xml全局配置1.2. 利用OGNL表达式获取栈顶信息1.3. Struts2拦截器创建1.4. Struts.xml配置拦截器2. 案例一:登录拦截器2.1. 登录拦截器的用途2.2. 代码实现2.3. 解决登录页面出现在框架中,而不是出现在整个页面中的问题3. Struts通用标签 1. Struts2学习笔记四:拦截器...

公子&小白的博客 505

lwip-2.0.3

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

Struts2框架(四):控制器&其他OGNL标签&拦截器

文章目录  1、上一章内容回顾   2、Struts2的拦截器(*****)  3、CRM的权限拦截器   4、Struts2的标签库

oZuoShen123的博客 357

struts2拦截器,拦截指定方法

Struts.xml配置文件&lt;?xml version="1.0"encoding="UTF-8"?&gt; &lt;!DOCTYPE strutsPUBLIC "-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0....

展望未来 1万+

struts2拦截器

struts2的拦截机制 拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你 在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重 用的类。Struts2中的很多特性都是由拦截器来完成的。拦截器是AOP(面向切面编程,在特定的切面做处 理)的一种实现。 拦截器链(Intercep...

Snow、杨 652

Struts2拦截器和标签

一、struts2拦截器   1、struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面。   2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每次执行默认的拦截器。   3 struts2里面默认拦截器位置,在struts2-core.jar jar包里面有一个struts-default.xml文件,在里面配置了默认...

144

Struts2 的核心——拦截器[Interceptor]

详细介绍了 Struts2中拦截器的执行原理、什么是拦截器、拦截器的配置和使用。

乐乐的专栏 3171

Java Web之Struts2高级技术的应用(OGNL、标签库、拦截器、数据验证)

Java Web之Struts2高级技术的应用(OGNL、标签库、拦截器、数据验证)

showswoller的博客 516

Struts2拦截器介绍

Interceptor拦截器类似于过滤器,是可以在action执行前后执行的代码。是我们做web开发时经常用的技术。比如:权限控制、日志等。我们也可以将多个Interceptor连在一起组成Interceptor栈。 拦截器的工作原理如上图,每一个Action请求都包装在一系列的拦截器的内部。拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作。 每一个Action...

person_on_pyramid的博客 811

struts2_拦截器与注解开发

Struts拦截器概述在struts2中,拦截器(Interceptor)是用来动态拦截Action执行的对象。 拦截器是struts2的一个重要特性,Struts2框架的大多数核心功能都是通过拦截器来实现的,像避免表单重复提交、类型转换、对象组装、验证、文件上传等,都是在拦截器的帮助下实现的。拦截器之所以称为“拦截器”,是因为它可以在Action执行之前和执行之后拦截调用优点Struts2将它的

hugo1208的博客 339

Struts2学习总结(五):拦截器

在Struts中,拦截器可以在Action执行之前或之后被调用。Struts2框架的大多数核心功能都是作为拦截器来实现的。 例如为action动态的添加 输入验证(验证用户输入的是否正确) 对象组装(将用户输入的数据转换为对象的属性) 权限控制(如访问者为登录用户) 日志记录(记录action的执行情况) 这些操作都可以通过拦截器实现,而不用修改action 拦截器的工作流程如...

知且行的博客 1173

JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现...

一、自定义拦截器   1.架构      2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implements Interceptor{} //创建方式2: 继承AbstractInterceptor -> struts2的体贴 //帮...

depiaozhanyou66348的博客 247
上一篇: 常用字符与ASCII代码对照表
下一篇: Liunx下安装字体(Windows)
modelsetget
博客等级 码龄12年 1015粉丝 237原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值