黑马程序员——对struts2的理解总结
来源:互联网 发布:d3.js 百度百科 编辑:程序博客网 时间:2024/05/29 07:44
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Struts2是在WebWork基础发展而来的。webwork是一个面向切面的开源框架,而webWork是基于xwork发展而来的,
Xwork它是一个命令模式 Struts2也属于MVC框架。把webwork改了一个名字就变成了strust2,
来源:struts2为了解决Struts1表现层的单一以及与Servlet API的严重耦合而出现的, 使应用难于测试。属于侵入性框架。所以产生了在webwork的基础上发展起来的struts2。
2. strust2的优缺点
优点:支持Ajax
支持Ognl标签
提供了强大的拦截器
线程安全 因为每次请求都会产生一个实例
缺点:耦合度低 比较复杂,源代码不好调试。
国际化 :提供了全局范围、包范围和Action范围的国际化资源文件
struts2有30多个拦截器,但我们最常用的有18个拦截器
拦截器的好处:可以进行面象切面编程
4.经验和教训:strust2双向类型转换(页面----action----页面回显)
1.关闭开发模式
3.不要使用不需要的拦截器 因为会把每个类都拦截一次,这样
会导致性能比较慢
4.尽量使用页面缓存
5.web-inf下创建一个freemarker.properties文件,因为strust的标签都是freemarker做的
6.使Freemarker模版定制标签缓存
7.不要在session里面放东西。尽量放在request里面
ActionSupport:1.实现了Action接口;2.实现了国际化;3.实现了校验
继承ActionSupport的好处:
继承了Action,Action提供了5个常量:SUCCESS、ERROR、LOGIN、INPUT、NONE。
实现了国际化
实现了校验(struts2中Action要实现国际化和校验必须继承ActionSupport)
Struts2请求处理流程
1、客户端发送请求 (客户端初始化一个指向Servlet容器(如Tomcat)的请求)
2、请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等),ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action 如果不是调用action 则直接执行你的资源
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,
5、ActionProxy通过Configuration Manager询问Struts配置文件(Struts.xml),找到需要调用的Action类。
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation通过一系列的拦截器调用真正的Action,当然这涉及到相关拦截器的调用
8、Action执行完毕,ActionInvocation创建Result并返回,返回结果前要做些动作也是可以的
Filter与servlet的区别:
Filter必须实现javax.Servlet.Filter接口,并且必须定义以下三个方法:init(),destory(),doFilter().
Servlet一般继承HttpServlet,当Url匹配这个Servlet时候运行处理请求;如果加上load-on-start为1时候,Web应用启动时候加载此Servlet;
struts2与struts1的比较
1 核心控制器改为了过滤器
2 struts1要求我们的业务控制器必须继承action或者dispatchaction struts2不强制你这么做
只需提供一个返回string类型的execute方法
3 绑定值到业务类 struts1 通过actionform struts2直接绑定到action属性
4 struts1严重依赖于servle方法的校验。struts2则不然
5 管理action struts1 单例因为仅有Action的一个实例来处理所有的请求。 struts2 每个请求都会产生一个实例 (原型)
6 从表达式的支持上,struts2不仅支持jstl,还支持功能更为强大的ognl表达式
7 strust1类型转换是单向的(页面到ActionForm),strust2双向类型转换(页面----action----页面回显)
8 校验 strust没有针对具体方法的校验 当然它有自己的针对path验证
9 struts2支持的视图技术除了jsp之外 还有freemaker velocity 源代码等 struts1只是单一的表现层技术jsp
截等功能。
10 Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦
11 提供了全局范围、包范围和Action范围的国际化资源文件管理实现
- 黑马程序员——对struts2的理解总结
- 黑马程序员——我对循环结构的理解
- 黑马程序员—关于对指针的理解
- 黑马程序员——对IO流的总结
- 黑马程序员————Java基础日常笔记---对集合的理解与总结一
- 黑马程序员————Java基础日常笔记---对集合的理解与总结二
- [黑马程序员]浅谈对'对象'的理解
- 黑马程序员 对字符串的一些理解
- 黑马程序员---对委托的一点理解
- 黑马程序员--对IO的理解
- 黑马程序员--对File类的理解
- 黑马程序员--对String类的理解
- 黑马程序员--对多线程的理解
- 黑马程序员--对异常的理解
- 黑马程序员--对IO的理解
- 黑马程序员--对多线程的理解
- 黑马程序员--对String的理解
- 黑马程序员——对io流的flush与close方法的理解
- JSP学习笔记(二):JSP内置对象
- 一种分布式框架设计(二)
- Solr调研总结(转载)
- 通过实现一个 TableView 来理解 iOS UI 编程 (个人感觉写的很棒!)
- Welcome to the skynet wiki!
- 黑马程序员——对struts2的理解总结
- 使用py2.7登陆和提交表单
- SpringMVC和jQuery的Ajax简单文件上传下载示例
- android-system_structure-dalvik
- Lucene4.10使用教程(一):常用概念(转载)
- 机器学习技法-2-Dual Support Vector Machine
- JSP学习笔记(三):JSP配置与EL表达式
- JavaWeb学习总结——使用Session防止表单重复提交
- JS 中 DateTime日期时间及方法函数