struts2处理机制探索

Struts2工作机制解析
本文介绍了Struts2框架的工作原理及配置方式。通过解析struts.xml配置文件,利用反射机制和拦截器处理用户请求,实现了MVC模式下简洁高效的开发流程。

初学Struts2,对其工作机制的一点猜测与总结:
首先在不使用struts的情况下,一般采用jsp+servlet+javabean的模式来进行开发
这种开发也可以形成MVC模式,但当servlet的数量比较多的时候,web.xml的配置就会非常的复杂
需要为每一个servlet进行配置操作。
struts的使用简化了servlet的配置操作,只需要在web.xml中加入一个过滤器对用户所输入的路径进行过滤处理
找到合适的Action来响应用户的请求。

 
 其次struts如何通过url来找到合适的Action呢?从struts的配置文件中,可以猜测其处理机制。
一般框架的编写最后都会抽象到一个配置文件中去,这样会使框架的使用和配置变得更加灵活,
Struts也不例外,将配置信息写到struts.xml文件中,然后通过解析器对配置文件进行解析,
获取信息后在利用java的反射机制进行处理操作。
struts配置文件的层级结构和每个标签的主要属性大致如下大致如下:


其中struts可以定义多个package,每个package也可以定以多个action
在每一个package中,action的name属性可以作为该包中action的唯一标识;
而package的namespace属性,我们也可理解为是表示每一个包的标识.
这样通过namespace+actionName就可以定位到每一个Action的配置
而用户所输入的url请求格式就是/namespace/actionName.action

没有看过struts2的源代码,如果单独参照它的配置文件自己实现的话,我会选择用一个HashMap来存储每个Action的信息。
其中的key值就是刚才提到的namespace+actionName;
value值是一个Object,该Object封装了所有有关该Action的信息,
包括该Action的具体实现类(class属性),调用实现类中的哪一个方法(method属性),
执行method方法前的拦截操作(interceptor-ref标签)以及执行后可能跳转的页面集合(result标签)。

这样通过namespace+actionname的key值获取到Action信息的封装对象之后
首先取出其class属性,利用java的反射机制实例化这个Action的具体实现类;
然后将所实例化的对象作为参数传递到<interceptor-ref>所定义的拦截器链中进行指定方法执行前的拦截处理操作
比较常用的拦截操作如:Field赋值(paramatersInteceptor),表单验证(ValidationInterceptor)等等;
其次获取Action封装对象的method属性,如果为空默认为execute方法,利用反射机制执行这个方法。
执行完该方法后会返回一个String字符串,该字符串会作为key值找到合适的返回页面(返回页面的定义是通过Map实现的,key值是<result>的name属性值),
最后通过request.dispatcher的形式跳转到指定页面完成一次请求-响应操作。

欢迎大虾们给与指正,骂人的闪。

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值