struts2(struts2的工作流程)
本文目录
- struts2的工作流程
- java struts2是干什么用的
- struts2为什么用拦截器有什么好处起什么作用
- 搭建struts2环境,在web.xml中加入过滤器的代码后访问任何页面都是404错误请大家帮帮忙
- java.lang.ClassNotFoundException: ora.apache.struts2.dispatcher.FilterDispatche报错怎么解决啊
- struts2漏洞是什么
- struts2 的最大特点
- org.apache.struts2.dispatcher.FilterDispatcher.class这个类有什么作用
struts2的工作流程
在Struts2框架中的处理大概分为以下几个步骤:
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及ActionMapper 。
扩展资料:
应用流程注解
当Web容器收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器。
经过Other filters(SiteMesh ,etc),需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求哪个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。
FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象。
ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N)一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)然后执行这个Result Result会调用一些模版(JSP)来呈现页面。
拦截器(Interceptor N)会再被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)。
参考资料:百度百科-Struts 2
java struts2是干什么用的
因为struts2的Action就具备了struts1中ActionForm的功能;ActionForm的功能无非三个:初始化数据;封装数据;验证数据格式;对于struts2,都有相应的解决方式:通过Action实现Preparable接口,实现对数据初始化;Action继承ActionSupport,重写validate(),显示数据的验证,在Action中配置属性以及对应的getter和setter方法,实现数据封装。而且类型转换方面,struts2通过OGNL实现的效果要比ActionForm更灵活。spring的声明事务依赖AOP;以代理的方式实现事务;通过AOP和tx命名空间组合成一个事务切面,声明式的方式注入给某个需要的业务对象;可以很方便的为某个业务对象添加或删除事务。
struts2为什么用拦截器有什么好处起什么作用
1、拦截器是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。2、好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。3、作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。
搭建struts2环境,在web.xml中加入过滤器的代码后访问任何页面都是404错误请大家帮帮忙
楼主,我记得struts2的核心过滤器是这样配的。《filter》 《filter-name》struts2《/filter-name》 《filter-class》org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter《/filter-class》 《/filter》 《filter-mapping》 《filter-name》struts2《/filter-name》 《url-pattern》/*《/url-pattern》 《/filter-mapping》
java.lang.ClassNotFoundException: ora.apache.struts2.dispatcher.FilterDispatche报错怎么解决啊
应该是这句的问题:《filter-class》ora.apache.struts2.dispatcher.FilterDispatcher《/filter-class》 把类换成这个看看:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2漏洞是什么
1. Struts2的重定向漏洞根据Apache给出的漏洞修复方案,只是升级了jar包版本2.3.16升级完成后所有页面访问都出现了404,如下bug:There is no Action mapped for namespace associated with context path.... 解决办法:当时好像使用了Dynamic Method Invocation 动态方法调用,然后Struts.xml文件都修改了通配符和占位符匹配。2. Struts2 OGNL的高危漏洞S-045Struts使用的Jakarta解析文件上传请求包不当,当远程攻击者构造恶意的Content-Type,可能导致远程命令执行。针对此问题做出如下修改: (1)根据Apache给出的漏洞修复方案,升级Struts2相关jar到2.3.32 (2)关于上传文件部分做出如下验证《1》上传文件非空验证;《2》上传文件格式验证;《3》上传文件验证MimeType;《4》文件是否可被修改高宽或裁剪(本次项目上传完文件为图片)《5》文件保存路径重命名。学习java知识,推荐北京尚学堂,我们拥有多年编程培训经验,会让你在学习的时候快人一步!
struts2 的最大特点
struts2 的最大特点: 1、Action类完全是一个POJO,因此具有很好的代码复用性。 2、 Action类无需与Servlet API耦合,因此进行单元测试非常简单。 3、 Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可映射到任何的视图,甚至是另一个Action。
org.apache.struts2.dispatcher.FilterDispatcher.class这个类有什么作用
概要说明 FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.!StrutsPrepareAndExecuteFilter的优势 StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的,这样的改革当然是有好处的.!为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.!给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.! 如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,否则,用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。 从Struts2.1.3开始,将废弃ActionContextCleanUp过滤器,而在StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。 三个初始化参数: 1、config参数:指定要加载的配置文件。逗号分割。 2、actionPackages参数:指定Action类所在的包空间。逗号分割。 3、configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割.《filter》 《filter-name》struts2《/filter-name》 《filter-class》 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 《/filter-class》 《init-param》 《param-name》actionPackages《/param-name》 《param-value》com.cjm.web.action《/param-value》 《/init-param》 《/filter》 《filter-mapping》 《filter-name》struts2《/filter-name》 《url-pattern》/*《/url-pattern》 《/filter-mapping》 如果程序报类找不到异常,且后面有 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter等信息,可能是你的版本问题.解决方法是确定你的struts版本,如果是2.1.3之前的版本,用org.apache.struts2.dispatcher.FilterDispatcher,以后的版本则配置org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
更多文章:
小米游戏本redmig怎么样(Redmi G 2022游戏本系列炫酷出场,预计明日开启预售)
2024年7月17日 10:31
固态硬盘和机械硬盘的区别图片(固态硬盘和机械硬盘的区别是什么)
2024年9月22日 15:30
本友会 precision5520(我买的戴尔precision m5520 在设备管理器里看不到独立显卡怎么办)
2024年5月28日 17:13
thinkpadt420s屏幕分辨率有两种吗(thinkpad的屏幕分辨率是多少)
2023年9月2日 23:40
南昌华硕电脑售后维修服务网点(华硕笔记本电脑南昌西湖区去哪里维修)
2024年7月24日 01:58
什么叫移动硬盘盒,是干嘛用的?移动硬盘和硬盘+硬盘盒的优劣有那些
2023年11月29日 20:20
商用台式机和家用台式机的区别(家用台式机与商用台式机有什么不同)
2023年7月29日 02:00
defaultstring笔记本电脑(这笔记本配置怎么样,多少钱买合适)
2024年1月6日 03:25
笔记本配置高但是玩游戏卡(电脑明明配置很高,为什么玩游戏却很卡顿)
2024年6月12日 02:50
华硕k420(华硕K420笔记本主板温度在60度左右,请问正常吗)
2024年7月5日 05:53
nvidia geforce gt 240m(Nvidia GeForce GT 240M的问题)
2024年6月26日 14:04
微星笔记本电脑桌面颜色怎么调整(怎么改变笔记本电脑桌面的颜色)
2023年6月8日 12:20