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. Webwork 学习之路【06】Action 调用

    一路走来,终于要开始 webwork 核心业务类的总结,webwork 通过对客户端传递的 web 参数重新包装,进行执行业务 Action 类,并反馈执行结果,本篇源码分析对应下图 WebWork ...

  3. Webwork 学习之路【04】Configuration 详解

    Webwork做为经典的Web MVC 框架,个人觉得源码中配置文件这部分代码的实现十分考究. 支持自定义自己的配置文件.自定义配置文件读取类.自定义国际化支持. 可以作为参考,单独引入到其他项目中, ...

  4. Webwork 学习之路【07】文件上传下载

    Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺 ...

  5. ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)

    在AbpBootstrapper中的两个至关重要的属性:IIocManager 和 IAbpModuleManager  public class AbpBootstrapper : IDisposa ...

  6. Webwork 学习之路【08】结合实战简析Controller 配置

    虽然现在 MVC 框架层出不穷,但做为 Struts 前身的 webwork. 其经典程度不亚于贝利之于足球,双 11 之于淘宝特卖. 本篇将结合 webwork controller 配置文件 xw ...

  7. Webwork 学习之路【01】Webwork与 Struct 的前世今生

    Struts 1是全世界第一个发布的MVC框架,它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,Struts ...

  8. ReactNative新手学习之路03真机调试

    React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...

  9. Webwork 学习之路【05】请求跳转前 xwork.xml 的读取

    个人理解 WebWork 与 Struts2 都是将xml配置文件作为 Controler 跳转的基本依据,WebWork 跳转 Action 前 xml 文件的读取依赖 xwork-1.0.jar, ...

随机推荐

  1. yii2 GridView常见操作

    作者:白狼 出处:http://www.manks.top/article/yii2_gridview 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...

  2. == 与 equals 区别

          同: ==和equals都比较两个值是否相等.相等为true 否则为false:   异:      1. == 是一个运算符;equals则是string对象的方法,可以.(点)出来.  ...

  3. 从Prototype学习JavaScript面向对象编程

    概述 JavaScript是一种基于对象的编程语言.它是灵活的,既有面向过程(也就是面向函数)的编程,也有面向对象的编程.因此我称它是基于对象的编程语言. 对于JavaScript的面向过程的编程特性 ...

  4. c# winform插件

    插件接口 namespace IMsg { ///<summary> /// 这是插件必须实现的接口,也是主程序与插件通信的唯一接口 /// 换句话说,主程序只认识插件里的这些方法 /// ...

  5. python极客学院爬虫V1

    定向爬取极客学院视频,原本只有年费VIP只能下载,经过分析,只要找个免费体验VIP即可爬取所有视频 涉及的基本技术:python xpath 正则 com+ 通过python调用迅雷从组件,实现自动创 ...

  6. linux权限补充:rwt rwT rws rwS 特殊权限

    众所周知,Linux的文件权限如: 777:666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件.所以我们只需要将bash复制出来到另一个地方,然后用root加上U ...

  7. Mysql数据库笔记

    出错记录: 1.mysql服务启动不了,进程意外终止 1067    错误显示:can not connect to mysql server on local hosts(1061)    解决方法 ...

  8. Nagios监控ganglia的指标

    这是nagios与ganglia整合的一部分内容 . 通常我们会把ganglia的监控发送给一个主机,我们可以在这个主机上执行nc localhost 8649 可以获取到所有发往这个主机的信息,以x ...

  9. [PHP]Yii2框架的坑

    [PHP]Yii2框架的坑.md-/Users/zjh/Documents/我的文章/[PHP]Yii2框架的坑 html{font-family: sans-serif;-ms-text-size- ...

  10. file_get_contents模仿浏览器头(user_agent)获取数据

    本篇文章是对file_get_contents模仿浏览器头(user_agent)获取数据进行了详细的分析介绍,需要的朋友参考下     什么是user agentUser Agent中文名为用户代理 ...