文章列表
文章翻译自Struts 2官方文档。
开发模式(也称为“devMode”)
部署应用到生产环境之前请关掉这个选项 - 它会暴露你的应用的敏感数据。
Struts 2有一个称为devMode(= development mode)的设置(可以在struts.properites文件中设置为tr ...
文章翻译自Struts 2官方文档。
现代IDE提供了优秀的程序调试支持。此外,框架提供了在运行时查看框架对象的支持。
调试拦截器提供了三种洞察页面背后的数据的调试模式。xml模式用XML文档格式化相关的框架对象。console模式提供了一个接受运行时表达式的OGNL命令行,browser模式添加一个显示来自值栈(Value Stack)的对象的交互页面。
为了使用调试功能,首先确保struts.devMode的值已经通过struts.properties文件或struts.xml文件设置为了true,像这样:
<constant name="str ...
文章翻译自Struts 2官方文档。
程序概要分析软件寻找程序执行过程中的瓶颈。除了IDE提供的概要分析服务和独立的分析软件之外,框架提供了程序概要分析的内部支持。
程序概要分析的概貌
Struts2程序概要分析的概貌包括下面的内容:
ActionContextCleanUp
FreemarkerPageFilter
DispatcherFilter
Dispatcher
creation of DefaultActionProxy
creation of DefaultActionInvocation
creation of Action
...
文章翻译自Struts 2官方文档。
依赖注入将对象创建和连接的责任从对象他们自己移到了一个工厂。这个工厂通常由控制反转(IoC)容器提供。关于控制反转容器的概况和依赖注入模式,请参考Martin Fowler的文章。
在Struts内部,框架使用它自己的依赖注入容器,这个容器和Google Guice非常像。它们最开始都是由Bob Lee开发的。可以使用插件应用和将其他IoC容器(例如Spring插件,Plexus插件)集成起来。应用的依赖注入需求甚至可以使用本地的Google Guice。
提示:使用Spring插件Action任然可以通过Spring配置文件实例化 ...
文章翻译自Struts 2官方文档。
AJAX是Asynchronous JavaScript and XML的首字母缩略词。本质上,JavaScript能产生一个HTTP请求并立即更新部分页面,而不是通过传统的POST或者GET方式并更新整个页面。然而更好的是,一个页面可以包含若干产生同步(异步)请求的JavaScript。
关键点是当一个脚本产生一个“AJAX请求”(XHR)时,服务器不知道这个请求来自一个脚本,并且像其他请求一样处理它。AJAX如此成功的一个原因是,它和现有的包括Struts在内的服务器技术一起工作得很好。
不是Ajax请求不同,而是Ajax响应 ...
文章翻译自Struts 2官方文档。
Apache Struts 2体系结构简介
web浏览器请求一个资源(/mypage.action,/reports/myreport.pdf,等等)
过滤器分发器(Filter Dispatcher)查看请求(request)并确定合适的Action
拦截器(Intercepter)自动在请求上应用公共功能,例如工作流(workflow),验证(validation),和处理文件上传
执行Action的方法,通常保存数据到数据库和/或从数据库取回数据
Result渲染输出到浏览器,可能是HTML,图片,PDF,或者其他东西
...
文章翻译自Struts 2官方文档。
对象工厂(ObjectFactory)实例化框架创建的所有的对象。对象工厂提供了框架集成IoC容器,例如Spring,Pico,Plexus等等,的方法。
定制
继承ObjectFactory
定制ObjectFactory必须继承ObjectFactory或它的子类,并且要有一个默认的无参的构造器。
为了注册一个定制的ObjectFactory,在struts.properties添加或编辑一条条目
struts.objectFactory=foo.bar.MyCustomObjectFactory
其中foo.bar ...
文章翻译自Struts 2官方文档,初次翻译,请指正。
下面的图片描述了框架的体系结构。
在上图中,一个初始请求(request)到达Servlet容器(例如Jetty或者Resin),这个请求通过一个标准的过滤器链。过滤器链包含(可选的)ActionContextCleanUp过滤器,这个过滤器在使用集成技术,例如SiteMesh Plugin,时非常有用。下一步,必须的FilterDispatcher被调用,FilterDispatcher反过来查阅ActionMapper,从而决定这个请求是否需要调用action。
如果ActionMapper确定需要调用action ...
原文链接:https://doctorjw.wordpress.com/2012/01/11/hibernate-collections-and-duplicate-objects/
It’s interesting that Hibernate doesn’t take care of this under the covers, but forces developers to realize they may get duplicate objects under some circumstances.
The story: at work yesterday, a b ...