课堂课题:
Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?
关联任务:
任务五
直播时间:
2019-06-11 15:00:00
课堂内容:
视频链接:
PPT链接:
提交按钮:
小课堂内容格式
标题:
【修真院xx(职业)小课堂】课题名称
开场语:
大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX
(1)背景介绍:
背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。
(2)知识剖析:
讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。
(3)常见问题:
最少列出1个常见问题。
(4)解决方案:
写清楚常见问题的解决方案。
(5)编码实战:
尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。
(6)拓展思考:
知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。
(7)参考文献:
引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。
(8)更多讨论:
Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答
(9)鸣谢:
感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。
(10)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
【修真院java小课堂】SpringMVC和Struts的区别是什么,为什么更倾向于使用SpringMVC?
大家好,我是IT修真院成都分院第17期的学员刘旭晗,一枚正直纯洁善良的Java程序员,今天给大家分享一下,修真院官网java任务二,深度思考中的知识点——SpringMVC和Struts的区别是什么,为什么更倾向于使用SpringMVC?
(1)背景介绍:
Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架
2006年,WebWork与Struts的Java EEWeb框架的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。在2008年12月,Struts1发布了最后一个正式版(1.3.10),而2013年4月5日,Struts开发组宣布终止了Struts 1的软件开发周期。
(2)知识剖析:
Struts的工作原理?
1)客户端(Client)向Action发送一个请求(Request);
2)Container通过web.xml映射请求,并获得控制器(Controller)的名字;
3)容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher);
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)产生的响应行为发送给客户端;(3)常见问题:
Struts和SpringMVC的区别,为什么更倾向使用SpingMVC?
(4)解决方案:
1)SpringMVC是基于方法开发的,而Struts2是基于类开发的;
2)SpringMVC的入口是servlet,Struts2的入口是filter;
3)性能上SpinrgMVC比Struts2要强一些;
4)过程中存储数据的方式不同:Struts2采用值栈存储请求和相应的数据,通过OGNL存取数据,SpringMVC通过参数绑定期将request请求内容解析,并给方法形参赋值;(5)编码实战:
(6)拓展思考:
(7)参考文献:
(8)更多讨论:
Q1:Struts和SpringMVC最本质的区别是什么?
A1:SpringMVC基于方法开发,Struts基于类开发;
Q2:为什么说使用Struts只能多线程开发?
A2:因为Struts是基于类开发的,网页每发一次请求过来,都会调用整个类,包括其中的成员变量,而当有多个请求同时发送时,由于没有像SpringMVC一样,每个请求都会生成一个新的service对象,所以Struts处理请求时的类会同时被两个请求调用,所以就需要多线程开发;
Q3:为什么说Struts比起SpringMVC不安全?
A3:就像A2中说的,成员变量同时被几个请求去运行,难免会发生混乱,另外由于Struts中没有像SpringMVC一样把各个层封装分离,导致会把代码暴露给用户,发布到网上时很容易受到攻击;
(9)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~