1、J2EE平台的三大核心技术是 Servlet、JSP和EJB
2、Web程序日益复杂,单纯某种技术无法做到快速开发、快速验证和快速部署的最佳境界。人们开始尝试着将已有的Web技术综合起来,形成完整的开发框架或应用模型。
3、控制器调用视图来显示模型的数据。(之前会把请求转发给模型,让模型来处理业务,并返回数据)
4、模型调用视图,显示模型数据的变更。
5、控制器提高了应用程序的灵活性和可配置性。
6、将MVC运用到应用程序中,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。
7、struts-config.xml用于建立Controller和Model之间的关系。
8、Velocity Template,使UI组件可重用
9、struts2是基于webwork框架的,它比strus1.x更简单,更灵活。
10、拦截器是Struts2的核心内容之一。
11、struts.xml是Struts 2框架的核心配置文件
12、Struts2中的Action只是一个普通Java类(POJO),这是同Struts 1.X的重要区别之一。
13、Struts2的优点之一就是提供了标签库。使用标签库,可以使代码变得简洁、可读性大大提高,并给开发人员带来了巨大的便利。
14、Struts2不再支持内建的IOC容器,而是全面使用Spring的IoC容器。
15、FilterDispatcher是Struts的核心控制器。可以和 bpm联合吗?
FilterDispatcher询问ActionMapper是否需要调用某个Action来处理请求,如果需要,FilterDispatcher会把请求交给ActionProxy,他会通过ConfigurationManager询问框架的配置文件,找到需要调用的Action。在调用前,ActionInvocation会加载Action相关的所有拦截器。
最后,ActionInvocation根据struts.xml配置找到对应的返回结果result。
16、Struts2框架的目的就是使用Action来调用业务逻辑模块。Action中不实现任何业务逻辑,只是负责组织调度业务逻辑组件。
(业务控制器Action一般情况下不是直接创建业务逻辑组件实例,而是通过使用工厂模式或从Spring容器中获得业务逻辑组件实例,这样可以提高系统的性能)。
17、Struts1只能支持JSP作为视图资源,Struts2支持其他视图技术,如FreeMarker,Velocity等。
每个result有一个type属性,指定了对应的视图资源类型,如果不写,会使用默认的type类型,即JSP类型的视图资源。
18、Struts2的配置文件时整个框架的联系纽带,也是降低各类组件耦合程度的一种手段。
19、Struts2最大的特点之一,是实现了Action和Servlet API的分离。在Struts1中要复杂很多。
pojo的exec()不用任何参数,只是返回一个字符类型的值。
20、ValueStack和OGNL是Struts2引入的新东西,Webwork中原来就有,但是Strus1中是没有的。
值栈ValueStack和OGNL的一个简单并且强大特性在于,他们不属于Strus2框架中的任何一个组件,它是独立的,与框架分离。
无论拦截器还是result,都可以通过OGNL来访问值栈。
值栈存在于局部线程的ActionContext中。
Struts2框架在处理每一个用户请求的时候,都建立一个单独的线程进行处理,值栈也是伴随着局部线程而存在的。在线程存在过程中,可以随意访问值栈,这就保证了值栈的安全性。
21、FreeMarker页面不能直接通过URL访问,这样访问看到的只能是 freemarker页面源码。。。
一定要通过action进行访问。只有通过action才能把 模板和数据模型结合起来,并返还给用户。
22、Struts配置DTD定义。 (文档格式定义)
<!ELEMENT struts (package|include|bean|constant)*> // 表示package, include, bean和constant并没有顺序要求。
<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)> // 这里使用的是逗号,实际上是有顺序要求的?如default-action-ref必须要定义在action之前。。。
/////////////////////////////////////////////////////////////////////////////////////////////
1、form里,原来提交的action是指向一个JSP页面的。现在是指向某个的Struts Action,可以根据输出,有选择地指向多个JSP页面,或者也可以采用其他视图技术。
2、ActionContext是Action运行的上下文环境(通过继承ActionSupport,可以直接获得该方法)。可以通过静态方法getContext获得 Action的上下文。之后可以通过getApplication()和getSession()对Application和Session的参数进行访问。