struts2 学习日记1
struts2 简介
struts2的前身可以说是framework。strut1作为当时很流行的框架,但是有很多的不足之处,framework出生后,它带来了很好的框架,但是很多人已经习惯了strut1.所以问津framework的人不多。后来framework被apache收购,改名为struts2.这就是struts2的由来
struts2比struts1的优点之处
struts2的核心是基于xwork的,struts2使用了ognl表达式语言,a.用于更灵活的访问对象中的各种属性。b.在jsp页面中访问session或request内容时,提供了更加简便的方式,而且让我们使用标签的方式去遍历或迭代。减少了jsp中java代码的数量
struts2理论知识:
framework是基于http协议的web框架(因为它是基于请求响应(request-response)模式的应用)
1.framework的逻辑结构:
(1)控制器(controller):相当于中央调度器,它的所有处理都由他来完成,(j2ee用servlet事先控制器)
(2)业务逻辑层:提供基础组件供开发人员完成真正的业务实现
(3)数据逻辑层(Data logic):没有提供,struts2只是提供了前端到服务器端的交换过程,也就是基于web端的交换过程
struts1的视图层就是jsp。
struts2由jsp taglib 和 servlet组成。基于struts2框架的web设计模式基本上符合jsp model2(jsp model2是MVC设计模式的一种变化)的设计标准。
这时不得不说下jsp的三种模式:1jsp:html+java代码
2jsp model1:html+java代码+javabean
3jsp model2:html+java代码+javabean+servlet
struts2是建立在jsp和servlet之上的,对他们做了良好的封装,用于web服务器层端
最后说一下struts2的工作流程
结合图
首先我们知道form表单中action值能够被struts接受,若action中值没有后缀名,则此默认为.action
form表单提交,向struts2提交请求,首先被struts的过滤器接受到,然后再去struts.xml文件中寻找对应名字为***的action。再由action中对应的class去处理提交来的请求,在class文件中将成员变量生成对应的getter和setter方法。用于得到页面上面的值和将值response到页面上。然后去执行处理数据的方法(默认的是execute()方法,也可以在astruts.xml的对应action中设置method方法)此方法将返回一个字符串给struts.xml中对应的action。然后在action中寻找result的名字为返回字符串的值,然后返回到对应的页面
其实 其实,说白了就是匹配,找到对应的信息,servlet由tomcat管辖,而struts是由过滤器管辖,所以过滤器相当于controller(控制器)。其中set和get方法是通过反射机制动态生成的,而不是真正存在,在setter执行完之后,将信息放到request作用域中。
过滤器是用来接管我们的请求的、
通过查看过滤器文件,得知,过滤器实现了dofilter、destory方法