最近在学习框架,很多人建议我直接学SSM,SSM看了一段时间后发现很多东西虽然可以用了,但是并不是很了解,所以我打算重新来过.从SSH开始学习,前面已经大致的学习了Hibernate,对于Hibernate有了更深刻的认识,下面开始做Struts2的梳理.
什么是Struts2?
Struts2是非常优秀的MVC框架.是油传统Struts1和Xwork两个框架发展出来的.
Struts2和Struts1最大的不同点是什么?
Struts1严重依赖struts1 API,有侵入性,Struts1写写action 和FormBean的时候必须实现Struts的Action类, 而Struts2之所以以WebWork的设计思想为其核心,不需要集成action类,任何一个javabean类都可以作为业务处理类.
Struts1是使用ActionServlet做为其中心处理器,Struts2则使用一个拦截器(FilterDispatcher)做为其中心处理器,这样做的一个好处就是将Action类和Servlet API进行了分离
Struts2的简单处理流程是什么?
浏览器发送请求
中心处理器根据struts.xml文件查找对应的action类
WebWork的拦截器链自动对请求应用通用功能,例如:WorkFlow、Validation等功能
如果Struts.xml中配置了Method参数,则寻找对应的参数,如果没有则调用默认的execute()方法来处理用户请求
将Action类中的对应方法返回的结果响应给浏览器
Strtus2与Struts1进行对比
Action类的实现方式 Struts1必须扩展Action类或者Action的子类,Struts2的Action类实现的时候可以不用实现任何类和接口,虽然Struts2中提供一个ActionSupport类,但是,不是必须的。
Struts1的Action类是单例模式,必须设计成线程安全的,Struts2则为每一个请求产生一个实例
Struts1的Action类依赖与Servlet API,从其execute的方法签名可看出,execute方法有两个Servlet的参数HttpServletRequest和HttpServletResponse,Struts2则不依赖于Servlet API
Struts1依赖于Servlet API这些Web元素,因此对Struts1的Action进行测试的时候是很困难的,需要借助与其他的测试工具,Struts2的Action可以象测试其他的一些Model层的Service类一样进行测试
Struts1的Action与View通过ActionForm或者其子类进行数据传递,虽然也有LazyValidationForm这样的ActionForm的出现,但是,还是不能象其他层面那样通过一个简单的POJO进行数据传递,而Struts2将这样的奢望变成了现实
Struts1绑定了JSTL,为页面的编写带来方便,Struts2整合了ONGL,也可以使用JSTL,因此,Struts2下的表达式语言更加强大
Struts2的必须jar包分析
struts2-core-2.3.1.1.jar:Struts2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xeork
ognl-3.0.3.jar: 对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.2.jar:文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.0.1.jar:传文件依赖的jar包
commons-lang-2.5.jar:对java.lang包的增强
一个Struts项目,需要我们写那些东西?
首先我们要写前台界面jsp 这里需要知道Struts2框架默认接受.action的请求
struts2的核心控制器拦截器,所以要在在web.xml配置filter,指定filter-class为org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
及时过滤器配置/* , 但是struts2 默认处理.action结尾请求,分发到相应Action类
在scr下配置struts.xml
需要写action类业务逻辑处理
需要写结果视图
在一个SSH项目中,最为关键的也是最特色的就是struts.xml和hibernate.xml的配置 ,下面我们学习下struts.xml如何配置,此处很关键.
Struts2框架加载struts2配置的顺序(先后顺序)
default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar 内含大量拦截器和结果集