- 浏览: 59060 次
- 性别:
- 来自: 北京
最新评论
-
liuyuanhui0301:
深入研究xwork(-) -
sdylag:
spring中session管理opersession,避免页面中数据未输出完session就被关闭 -
liaofeng_xiao:
貌似还有个亚信分公司。。。。至少5k吧
去还是不去沈阳呢,纠结中。。。。 -
armstrong311:
o 对了。。。忘记说了。。。。
沈阳有个叫“oracle”的公 ...
去还是不去沈阳呢,纠结中。。。。 -
os2:
在沈阳找〉4K/M的也不是不可能。找家相对正规点的公司,必须做 ...
去还是不去沈阳呢,纠结中。。。。
这里把webwork的工作流程作一个简单的记录吧,算是这里看源码的总结:
当一个*.action请求过来之后 ,被com.opensymphony.webwork.dispatcher.ServletDispatcher这个类截获,很自然这个Servlet首先会调用
- public void init(ServletConfig servletConfig) throws ServletException {
- super.init(servletConfig);
- DispatcherUtils.initialize(getServletContext());
- }
- public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException
这个方法,剩下所有事情都发生到这里了~~~~
- public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException {
- DispatcherUtils du = DispatcherUtils.getInstance();
- //根据前面的初始数据对字符集、本地化等一些基本信息进行设置
- du.prepare(request, response);
- //(一)、通过request对象,读取URL来得到action的name和methodName
- ActionMapping mapping = ActionMapperFactory.getMapper().getMapping(request);
- if (mapping == null) {
- try {
- response.sendError(404);
- } catch (IOException e) {
- LOG.error("Could not send 404 after not finding any ActionMapping", e);
- }
- return;
- }
- try {
- //对HttpServletRequest进行了包装
- request = du.wrapRequest(request, getServletContext());
- } catch (IOException e) {
- String message = "Could not wrap servlet request with MultipartRequestWrapper!";
- LOG.error(message, e);
- throw new ServletException(message, e);
- }
- //转发继续处理
- du.serviceAction(request, response, getServletContext(), mapping);
- }
在这里有必要看一下上面的(一)发生了什么
首先通过工厂类来得到一个ActionMaper的实例,ActionMaper就是提供一个request到action的mapping(映射),它其实做很少的工作,它并不会去考虑这个映射的合法性。工厂类通过读取default.properties属性文件里的
- webwork.mapper.class=com.opensymphony.webwork.dispatcher.mapper.DefaultActionMapper
得到要实例化那个对象,这个对象会根据URL得到nameSpace,actionnName,methodNamet等信息。最后转发到DispatcherUtils对象的serviceAction(request, response, getServletContext(), mapping);方法继续处理。
在这个方法中做的主要工作就是创建一个DefaultActionProxy对象,它是ActionProxy默认实现,它就是一个从webwork到xwork的action之间的一个桥梁
在DefaultActionProxy的构建函数中,有通过
- config = ConfigurationManager.getConfiguration().getRuntimeConfiguration().getActionConfig(namespace, actionName);//这里完成解析xwork.xml的工作
这段代码解析xwork.xml文件,实际上它最后通过XmlConfigurationProvider这个类进行XML文件的解析,在DefaultActionProxy这个对象的构建过程中还会创建一个DefaultActionInvocation对象,它是ActionInvocation的默认实现,action执行就是在这里完成的,包括所有interptors和action执行后的result的执行,都在这里完成,这个类的关键是invoke()这个方法,
- public String invoke() throws Exception {
- if (executed) {
- throw new IllegalStateException("Action has already executed");
- }
- //执行interceptors,这里用的责任链模式,最好看一下这个模式,才能对这段代码怎么运行有一个更好的理解
- if (interceptors.hasNext()) {
- Interceptor interceptor = (Interceptor) interceptors.next();
- resultCode = interceptor.intercept(this);
- } else {
- //在action之后调用Action类中的方法,并返回result代码
- resultCode = invokeActionOnly();
- }
- // this is needed because the result will be executed, then control will return to the Interceptor, which will
- // return above and flow through again
- // 这里干什么不太清楚
- if (!executed) {
- if (preResultListeners != null) {
- for (Iterator iterator = preResultListeners.iterator();
- iterator.hasNext();) {
- PreResultListener listener = (PreResultListener) iterator.next();
- listener.beforeResult(this, resultCode);
- }
- }
- // 在这里执行result
- if (proxy.getExecuteResult()) {
- executeResult();
- }
- executed = true;
- }
- return resultCode;
- }
这就是一个*.action请的一个大概的执行流程
发表评论
-
记录之spring
2010-05-20 11:30 757如果要在spring所有bean装载完成之后调用某段代码时,可 ... -
linux常用命令
2010-04-21 11:06 703查看8080端口是否被占用 netstat -tln | g ... -
使用Iterable接口
2010-04-20 15:25 1117通过实现Iterable接口,可以给你的类增加foreach能 ... -
mapreduce资料
2010-04-13 11:46 907孟岩的关于mapreduce的文章 http://www.m ... -
问问你的团队这些问题吧
2010-04-06 15:20 738团队的结构是否强调自身的长处,支撑短处,而且支持、激励团 ... -
80/20原则和HTTP Request
2009-04-23 16:50 826原文 80/20性能原则 Vilf ... -
cookie相关知识
2009-04-07 18:09 793Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人 ... -
ant学习笔记
2009-03-31 16:13 02009-03-31 1、使用classpath <pa ... -
2009-03-30
2009-03-31 10:48 8122009-03-30 1、在Ibatis的动态SQL中 ... -
20090223-200927日志
2009-03-27 11:11 7571、在freemark中,有如下代码: <td>& ... -
究竟要不要接口?
2008-10-07 17:14 896解释一下,为什么需要接口而不直接实现类。 在这个帖子里 ... -
Java/JSP中文乱码问题解决心得
2008-08-19 08:42 1843关键字: 中文乱码---经 ... -
Java Annotation手
2008-03-13 11:30 780http://www.blogjava.net/mlh123c ... -
关于ThreadLocal
2008-03-13 10:39 711一片关于ThreadLocal的文章http://hi.bai ... -
Private Members in JavaScript(译)
2007-12-13 17:21 866声明:纯属自己翻着玩的!, javascript的根本是对象, ... -
js的一些隐晦语法或技巧
2007-12-12 15:49 1070因为一直用java开发,后 ... -
ext2.0学习笔记
2007-12-11 09:41 944一、关于匿名函数的一个问题 1 functio ... -
webwork in action笔记(第四章)
2007-11-21 16:10 9151,webWork中使用的一种通用模式:一个可选的接口,一 ... -
Java 内存管理原理、内存泄漏实例及解决方案研究
2007-09-05 16:49 2326Java是如何管理内存 ... -
prototype.js学习笔记
2007-07-13 09:59 1340prototype.js真是好东西,代码不多但作者的设计思路相 ...
相关推荐
1. **MVC模式**:WebWork1.4遵循MVC架构,将应用程序分为模型、视图和控制器三个部分,提高了代码的可维护性和可扩展性。模型负责业务逻辑,视图负责数据显示,控制器则协调模型和视图的交互。 2. **动作映射**:...
WebWork深入浅出:WebWork是一个由OpenSymphony组织开发的J2EE Web框架,专注于组件化和代码重用。它以其简洁、灵活和功能强大而著称,采用标准的Command模式实现,与web层分离。WebWork的核心组件包括Xwork,提供了...
1. **MVC模式**:WebWork基于MVC模式设计,它将应用程序的逻辑分为三部分:模型负责业务处理,视图负责数据展示,控制器负责接收请求并调用模型进行处理,最后更新视图。 2. **Action Mapping**:WebWork的核心是...
这个“webWork中文教程”旨在帮助开发者深入理解WebWork框架的原理、特性和实践方法。下面,我们将详细介绍WebWork的核心概念、主要功能以及如何通过学习文档来提升开发技能。 一、WebWork概述 WebWork是由Apache...
### WebWork深入浅出 #### 一、引言 随着互联网技术的发展,Web应用程序的复杂度日益增加。为了更好地管理这种复杂性,开发者们引入了多种框架和技术来简化开发过程。其中,WebWork框架作为一款优秀的Java Web开发...
通过深入学习和理解WebWork2.0,开发者可以提升Web应用开发的效率,创建出高效、可维护的Java Web项目。提供的`WebWork2.ppt`文件应包含详细的PPT讲解,可以帮助读者更直观地了解WebWork2.0的各个方面,包括概念、...
WebWork是一个基于Java的MVC(Model-View-Controller)框架,它在早期的Web开发中扮演了重要的角色,尤其是在...通过深入研究WebWork,开发者可以了解到早期MVC框架的设计思想,同时也能提升自己的Java Web开发技能。
WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。...对于希望深入了解WebWork或者想要构建这样的集成应用的开发者来说,这些jar包和相关的资源是非常宝贵的。
本指南将深入探讨WebWork2的基础知识、快速入门方法以及高级特性,以帮助开发者更好地理解和应用这一框架。 一、WebWork2基础知识 1. MVC模式:WebWork2遵循MVC设计模式,其中模型(Model)负责处理业务逻辑,视图...
本指南将深入探讨Webwork2的核心概念、配置、以及实际开发中的应用。 **1. Webwork2 架构概述** Webwork2 的架构基于MVC设计模式,旨在分离业务逻辑、视图展示和用户交互。模型(Model)层负责处理数据和业务逻辑,...
在深入研究WebWork源码时,开发者可以了解其内部的工作原理,包括请求处理流程、模型绑定、拦截器链的执行、异常处理机制等,这对于提高编程技能和理解MVC框架的设计模式非常有帮助。此外,查看`displaytag-1.0`源码...
《深入解析WebWork框架:构建高效Web应用的基石》 WebWork框架,作为J2EE领域内备受推崇的Web开发框架之一,自诞生以来便以其卓越的性能、灵活性及易于集成的特点,在众多开发者中赢得了广泛的认可。《WebWork深入...
通过对WebWork docs 2 的深入学习,开发者能够熟练掌握WebWork框架,从而更高效地构建企业级Java Web应用。这个文档集合是一个宝贵的资源,无论你是初学者还是经验丰富的开发者,都能从中获益。
通过阅读"webWork2guide.pdf",你将深入理解WebWork2框架的各个方面,并掌握如何有效地利用它来开发高质量的Web应用。这份指南将指导你完成从项目初始化、Action编写、视图渲染到部署上线的全过程,是学习WebWork2...
三、WebWork的特性 1. 强大的表单绑定和类型转换:WebWork自动将HTTP请求参数绑定到动作类的属性,并进行类型转换,简化了表单数据处理。 2. 异常处理:WebWork提供了全局异常处理机制,可以统一处理未捕获的异常,...
WebWork的项目资源和参考资料部分提供了学习该框架所必需的资源链接,包括官方文档、社区论坛和博客等,这些都是学习和深入了解WebWork的好途径。 总之,WebWork是一个功能强大的Java Web框架,它通过组件化和代码...