在struts2.0中,可以通过ServletActionContext.getRequest()获取request对象。 在action的方法中return一个字符串,该字符串对应struts.xml中的result标签的name相同,result标签中包含的就是跳转页面, 其原理,我的理解是这样的: 一.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action” 二.请求被提交到一系列(主要是三层)的过滤器(Filter),如ActionContextCleanUp,FilterDispatcher等 三.FilterDispatcher是控制器的核心,FilterDispatcher进行初始化并启用核心doFilter 四.FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 五、ActionProxy通过(struts.xml)询问框架的配置文件,找到需要调用的Action类. 六、ActionProxy创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action。但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)
ActionInvocation工作原理: 1. ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。 2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。 3. 旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果

可以说Struts2本质还是一个Servlet(在S1中用于整体控制的是一个Servlet;S2中是一个Filter,其实也可把它看作是Servlet),只是对Servlet进一步的封装罢了
打个比方:做Web项目,好比建房子。Servlet好比木材,用一根根的木材搭,也可盖起房子,只是速度慢而已;
而Struts2好比是用木材做好的一个房子大概结构,要建房子时,只需把它拿过来,再往其里面添砖加瓦,修修补补,就能很快盖好房子,这要比直接使用Servlet要快得多
具体对比

1.开发时间。这个的对比是struts比servlet低。因为struts有一些配置文件,如果有些不注意思,出错的机会比servlet大,不如使用jsp+servlet开发随意。 2.代码的规范。因为jsp+servlet开发随意。规范性应差。控制语句到处有,为维护及修改带来不便。也使接手的人为解读代码带来不便。 3.安全性。web开发最不安全的就是session的使用.servlet的开发离不开request。有了request,那也就有了session,以前我们有个组开发,乱用session,使系统的性能很着。而且有很多保密信息外漏。如果你在serlet中封装request,那你就会发现越来越象struts。而struts的值都保存在ActionForm中,所以进行简单的封装就可以使底层人员,看不到requet,又不影响取值。 4.维护性。这个基本处于项目后期,这个的比较,就是struts远胜于servlet。只在PM控制的好。那么struts项目的代码分层很清晰。数据层,页面表示,页面控制,业务处理,这些都会分好模块。这给后期维护带来了很大的方便。因为后期的话,谁也不想引入新的BUG,如果用servlet,代码结构不清晰,很空易引入新BUG。这也是struts最强势的地方。
struts最受人指责的地方就是前期布署,开发比较费时。所以现在的方向是便捷开发易编创护框架的开发。

转载于:https://www.cnblogs.com/heartstage/p/3416684.html

Struts2与Servlet之间的关系相关推荐

  1. spring和servlet之间得关系

    servlet.filter和listener是javaweb得三大组成部分. 其中servlet通常是由web.xml统一管理. 而springmvc核心是disparcherservlet为入口. ...

  2. springmvc、struts2、servlet的联系与区别

    一 servlet - 体系(组织)结构图 图1 - servlet体系(组织)结构图 - 网 参考: Servlet学习笔记五(相关接口与类) - 哔哩哔哩 Servlet继承体系 - 码农岛 错题 ...

  3. service、servlet和WebService三者之间的关系

    学习Java很久了,但是一直没怎么弄清楚过service和servlet的区别,下午找了同学聊了聊才发现,一直以来的理解都有错误,下面就为大家好好理清一下他们的关系. 一.service 我们一般理解 ...

  4. (转)Struts2访问Servlet的API及......

    http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...

  5. httpservlet.java:131_Servlet学习1:Http状态码、多个Servlet之间调用规则、多个Servlet之间数据共享实现方案...

    Http状态码 1.介绍: 1)由三位数字组成的一个符号. 2)Http服务器在推送响应包之前,根据本次请求处理情况将Http状态码写入到响应包中[状态行]上 3)如果Http服务器针对本次请求,返回 ...

  6. java httpserver 多个接口_多个Servlet之间数据共享实现方案

    1.数据共享:OneServlet工作完毕后,将产生数据交给TwoServlet来使用 Servlet规范中提供四种数据共享方案 1.ServletContext接口 2.Cookie类 3.Http ...

  7. 控制层远程调用业务层_如何应用数据访问服务层分离系统中的业务层和持久层之间耦合关系...

    软件项目实训及课程设计指导--如何应用数据访问服务层分离业务层和持久层之间耦合关系 作者已经在本系列文章<软件项目实训及课程设计指导--如何正确地设计J2EE应用系统持久层中的各个组件结构及关系 ...

  8. Spring各模块的功能及互相之间的关系

    目录 spring-framework 的源码目录 Spring FrameWork 结构图 各个模块功能(该部分参考结构图来看) 模块概述(该部分参考源码目录来看) 核心容器 AOP和Instrum ...

  9. UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...

最新文章

  1. windows中安装Node.js-安装angular-cli
  2. 设计模式详解(总纲)
  3. ITK:将像素缓冲区导入到图像中
  4. 【Java】NIO中Selector的select方法源码分析
  5. I/O复用之 EPOLLONESHOT 事件
  6. linux ping 8.8.8.8 不通,ping www.baidu.com和ping 8.8.8.8出现ping不通
  7. 工程建设智能综合管控平台、建筑工地、智慧工地、工程建筑、数据分析中心、地图总览、项目筹划、进度管理、安全管理、质量管理、风险管理、经济管理、人事管理、分包管理、设备管理、材料管理、报表审阅、视频监控
  8. 负债会让你有多大改变?
  9. manjaro linux下查看硬件温度
  10. iOS 进阶 第二十二天(0603)
  11. 陪集编码(Coset coding)
  12. 【数据结构】EOJ 1006. 线性链表的插入与删除
  13. 女诗经,男楚辞
  14. 备战蓝桥杯—2014(4)史丰收速算
  15. 『暗香记忆』十世成佛
  16. vue-pdf插件不翻页预览
  17. yum search htppd 的意思
  18. python爬虫代理的使用_从零开始写Python爬虫 --- 2.4 爬虫实践:代理的爬取和验证...
  19. 【App数据运营分析】
  20. 关于弱酸性次氯酸水,你需要了解更多!

热门文章

  1. git 创建webpack项目_Webpack入门:从安装到配置
  2. python统计图教程_Python利用matplotlib绘制约数个数统计图示例
  3. python tkinter详解 博客园_python tkinter-布局
  4. solr java 全量,Solr实时创建增量或全量索引
  5. 浸会大学计算机专业硕士排名2019,2019软科世界大学学术排名香港浸会大学排名第701-800...
  6. python代码异常对照表格_Python表格py错误(pandas错误?)
  7. php面向对象代码_PHP面向对象之抽象类详解(代码实例)
  8. springmvcdate类型接收不到_无线电小课堂:如何在市区环境有效接收短波信号,选什么天线?...
  9. 不停机上线服务_【必看】10月25日本市增值税发票管理系统停机前,这些事一定要办...
  10. 美国无人机在火星首飞成功,创造历史,3米飞行高度悬停30秒