1. Webwork 与 Xwork

搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,WebWork2 被构建在XWork之上,以XWork为基础。通过使用XWork的命令模式框架和拦截器框架,提供了一个支持Web功能、能快速构建Web应用的命令模式框架。而XWork是一个标准的Command模式实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证、IoC容器、类型转换、强大的表达式语言OGNL等......

可以参考下上篇博客:Webwork 学习之路(二)前端OGNL试练

2.Webwork配置

一切Web项目开始的地方,都是web.xml。web.xml 具体都能干什么,都能配置什么,根据需求自己配置了,俺这里就不多说了。下面的webwork框架在在我的项目 web.xml 里面配置项。

 <servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher //核心启动类 com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern> // 映射所有的 .action 请求到 servlet
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>500</error-code>
<location>/doError.action</location>
</error-page>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<jsp-config>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/webwork.tld</taglib-location> //加载webwork 便签库
</taglib>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern> //设定便签库的所影响的范围
<el-ignored>true</el-ignored> //若为 true,表示不支持 EL 语法
</jsp-property-group>
</jsp-config> <load-on-startup>1</load-on-startup> //启动顺序,大于等于0,自动启动。数字越小优先级越高,这一行是我自己添加的,没有用的,如果serlvet 没有添加这个节点,说明它是不用在启动的时候去启动的。

3.核心类 ServletDispatcher 和 它的初始化

终于转的正题了。介绍下WebWork 最核心调度类 com.opensymphony.webwork.dispatcher.ServletDispatcher.

a. ServletDispatcher是默认的处理Web Http请求的调度器,它是一个JavaServlet,是WebWork框架的控制器。

b. 所有对Action调用的请求都将通过这个ServletDispatcher调度。

c. ServletDispatcher接受客户端的HTTP请求,将JavaServlet的很多相关对象进行包装。

再传给我们的XWork框架由我们的XWork框架去解析 xwork.xml 配置文件。

根据配置文件的信息,创建对应的Action,组装并调用相应的拦截器,执行Action,返回执行结果。

 public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
if ("true".equalsIgnoreCase(Configuration.getString("webwork.configuration.xml.reload"))) {
FileManager.setReloadingConfigs(true);
}
if (Configuration.isSet("webwork.i18n.encoding")) {
encoding = Configuration.getString("webwork.i18n.encoding");
}
if (Configuration.isSet("webwork.locale")) {
locale = localeFromString(Configuration.getString("webwork.locale"));
}
servletConfig.getServletContext().setAttribute("webwork.servlet", this);
if (servletConfig.getServletContext().getServerInfo().indexOf("WebLogic") >= 0) {
log.info("WebLogic server detected. Enabling parameter access work-around.");
this.paramsWorkaroundEnabled = true;
} else {
log.debug("Parameter access work-around disabled.");
}
}

上面是核心类 ServletDispatcher 的初始化方法,init()只有在使用框架第一次调用action时被使用,框架类 只初始化一次,来具体看看它都做了点什么?

a. 检查是否支持配置文件重新载入功能。如果webwork.configuration.xml.reload(见webwork.properties文件)设置为true,每个request请求都将重新装载xwork.xml配置文件(说是这样说,亲测没什么卵用)

在开发环境使用将会非常方便,但在生产环境必需设置为false;

b. 设置一些文件上传的信息,比如:上传临时目录,上传的最大字节等。都设置在webwork.properties文件里,如果在classpath中找不到这个属性文件,它会去读取默认的default.properties;

c. 设置编码方式、语言环境;

d. 针对WebLogic应用服务器做了相应的优化设置。

e. 告诉Servlet 上下文,我webwork 已经产生了。

差不多,先总结到这里吧。还有许多不明朗的地方需要在多研究研究,本文中如有不正确的地方还请各位看客老爷们斧正。

Webwork【03】核心类 ServletDispatcher 的初始化的更多相关文章

  1. Webwork 学习之路【03】核心类 ServletDispatcher 的初始化

    1. Webwork 与 Xwork 搭建环境需要的的jar 为:webwork-core-1.0.jar,xwork-1.0.jar,搭建webwork 需要xwork 的jar呢?原因是这样的,W ...

  2. yii 核心类classes.php详解(持续更新中...)

    classes.php在yii运行的时候将被自动加载,位于yii2文件夹底下. <?php /** * Yii core class map. * * This file is automati ...

  3. Activiti源码分析(框架、核心类。。。)

    http://jiangwenfeng762.iteye.com/blog/1338553 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要 ...

  4. SpringMVC源代码深度分析DispatcherServlet核心的控制器(初始化)

    SpringMVC是非常优秀的MVC框架,每一个框架都是为了我们提高开发效率,我们试图通过对SpringMVC的源码去了解这个框架,了解整个设计思想,框架要有扩展性,这里用的比較多是接口和抽象,是框架 ...

  5. PHP MVC框架核心类

    PHP MVC框架核心类 现在我们举几个核心框架的例子演示:在framework/core下建立一个Framework.class.php的文件.写入以下代码: // framework/core/F ...

  6. 从字节码和JVM的角度解析Java核心类String的不可变特性

    1. 前言 最近看到几个有趣的关于Java核心类String的问题. String类是如何实现其不可变的特性的,设计成不可变的好处在哪里. 为什么不推荐使用+号的方式去形成新的字符串,推荐使用Stri ...

  7. laravel 核心类Kernel

    vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php.是laravel处理网络请求的最核心类,在app容器准备好了之后, ...

  8. Java入门到精通——框架篇之Spring源码分析Spring两大核心类

    一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...

  9. Hibernate核心类和接口具体介绍

    一.hiobernate核心类和接口预览图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGxnZW4xNTczODc=/font/5a6L5L2T/fo ...

随机推荐

  1. 吸血鬼猎人巴菲第一至八季/全集Buffy迅雷下载

    本季看点:<吸血鬼猎人巴菲>故事背景在现代,话说于每一个世代都会出现一个年青的女孩子,在人世间寻找及对付一些妖魔鬼怪,例如有吸血鬼.坏女巫等等邪恶的势力,而这个年青的女孩子则被称为Slay ...

  2. 绝命毒师第一季/全集Breaking Bad迅雷下载

    本季Breaking Bad Season 1(2008)看点:新墨西哥州的高中化学老师沃尔特·H·怀特(布莱恩·科兰斯顿 Bryan Cranston 饰)是拮据家庭的唯一经济来源.他大半生安分守己 ...

  3. 关于chrome插件编写的小结

    一个插件的大致目录结构如下: 其中manifest文件最为重要,它定义/指明插件应用的相关信息(权限.版本.功能说明等),点此查看Manifest的详情>>   这里有一篇chrome官方 ...

  4. 调用人人网API

    大致步骤与上篇调用新浪微博API类似.只是感觉新浪微博的做的更好一些,人人网的非常多要手动操作 与新浪微博类似,先在人人网开放平台http://dev.renren.com/注冊站内应用, 把该填的填 ...

  5. RAISR: rapid and accurate image super resolution

      准确地说,RAISR并不是用来压缩图像的,而是用来upsample图像的. 众所周知,图片缩小到半分辨率后,在拉回原大小,会出现强烈的锯齿.从80年代开始就有很多super sampling的方法 ...

  6. [转]mysql变量使用总结

    From : http://www.cnblogs.com/wangtao_20/archive/2011/02/21/1959734.html set语句的学习: 使用select定义用户变量的实践 ...

  7. 样条之EHMT插值函数

    核心代码: ////////////////////////////////////////////////////////////////////// // 埃特金插值 ////////////// ...

  8. C#微信接口之推送模板消息功能示例

    本文实例讲述了C#微信接口之推送模板消息功能.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...

  9. 查看LINQ Expression編譯後的SQL語法(转)

    在用了LINQ語法之後的一個月,我幾乎把SQL語法全部拋到腦後了,不過 LINQ好用歸好用,但是實際上操作資料庫的還是SQL語法,如果不知道LINQ語法 編譯過後產生怎樣的SQL語法,一不小心效能就會 ...

  10. zTree怎么判断树有节点展开或者完全关闭的

    树节点有个open属性,引用API: 记录 treeNode 节点的 展开 / 折叠 状态.1.初始化节点数据时,如果设定 treeNode.open = true,则会直接展开此节点2.叶子节点 t ...