`

Struts2简述及工作原理

阅读更多
Struts2是实现MVC(Model-View-Controller)设计模式的Web应用框架。

Struts2工作原理:指在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,各组件的工作。


1、客户端(Client)向服务器发送一个请求(request)
2、客器(Container)通过web.xml映射请求,并获得控制器(Controller)的名字。
3、容器(Container)调用控件器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1之后调用StrutsPrepareAndExecuteFilter。
4、控制器(Controller)通过ActionMapper获得Action的信息。
5、控制器(Controller)调用ActionProxy。
6、ActionProxy读取struts.xml文件读取相应的action和interceptor stack的信息。
7、ActionProxy把request请求传递给ActionInvocation。
8、ActionInvocation依次调用action和interceptor。
9、根据action执行结果,产生result。
10、Result信息返回给ActionInvocation。
11、产生一个HttpServletResponse响应。
12、将产生的响应返回给客户端。






1、struts2的整个生命周期开始于来自客户端的request请求,然后通过servlet容器执行相应的filter。
2、FilterDispatcher被调用,它通过查找ActionMapper决定哪一个Action将会被执行。
3、若ActionMapper中找到可以执行的Action,FilterDispatcher将控制权委托给ActionProxy。
4、ActionProxy读取struts.xml配置文件,ActionProxy创建一个ActionInvocation实例,并将控制权交给ActionInvocation实例。
5、ActionInvocation(其采用的是命令行设计模式)实例逐个调用Interceptors,然后调用相应的Action。
6、一旦Action有返回,ActionInvocation在struts.xml中寻找相应的action返回结果。
7、拦截器再以相反的顺序执行和响应返回到过滤器。然后将result返回到servlet容器并发送到窗户端。



可以说Struts2本质还是一个Servlet(在S1中用于整体控制的是一个Servlet;S2中是一个Filter,其实也可把它看作是Servlet),只是对Servlet进一步的封装罢了

打个比方:做Web项目,好比建房子。Servlet好比木材,用一根根的木材搭,也可盖起房子,只是速度慢而已;

而Struts2好比是用木材做好的一个房子大概结构,要建房子时,只需把它拿过来,再往其里面添砖加瓦,修修补补,就能很快盖好房子,这要比直接使用Servlet要快得多






  • 大小: 54.5 KB
  • 大小: 75.5 KB
分享到:
评论

相关推荐

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    struts1工作原理 struts2工作原理 struts1和struts2比较 spring mvc工作原理 struts和spring mvc比较

    JAVA WEB典型模块与项目实战大全

    3.4 实现spring、struts2.x和hibernate框架集成  3.5 小结  第2篇 典型模块开发  第4章 在线文本编辑器(fckeditor)  4.1 分析fckeditor在线文本编辑器  4.2 fckeditor在线文本编辑器初级应用  4.3 ...

    java面试宝典

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    java面试题

    72.3. 请写出Struts的工作原理、工作机制 67 72.4. struts的处理流程。 67 72.5. Struts 2框架的大致处理流程如下: 68 72.6. Struts体系结构中的组件 69 72.7. struts如何实现国际化 70 72.8. struts2.0的常用标签 ...

    Java面试宝典2020修订版V1.0.1.doc

    6、struts2的核心组件有哪些? 89 7、Strus2的执行过程 89 8、为什么要使用struts2? 90 9、openSession和getCurrentSession 90 10、拦截器的作用?拦截器和过滤器的区别? 91 11、struts.xml中result的type有哪些...

    最新Java面试宝典pdf版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    千方百计笔试题大全

    96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101...

    Java面试宝典2010版

    8、说说struts1与struts2的区别。 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 11、iBatis与...

    Java面试笔试资料大全

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    JAVA面试宝典2010

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典-经典

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    java面试题大全(2012版)

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    Java面试宝典2012版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11...

    java面试宝典2012

    8、说说struts1与struts2的区别。 132 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 133 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 133 11、...

    Java面试宝典2012新版

    8、说说struts1与struts2的区别。 121 9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、...

    史上最全java面试,103项重点知识,带目录

    68. 说一下 session 的工作原理? 31 69. 如果客户端禁止 cookie 能实现 session 还能用吗? 31 70. spring mvc 和 struts 的区别是什么? 31 71. 如何避免 sql 注入? 33 72. 什么是 XSS 攻击,如何避免? 33 73. ...

Global site tag (gtag.js) - Google Analytics