今天大致的看了下webwork2.2.4的几个核心的类,做个总结 :)
首先来看WebWork2.2.4.怎么分离HTTP请求,其实他是通过ServletDispatcher来达到目的.代码如下所示:
在ServletDispatcher里service方法的代码实现如下
java 代码
- DispatcherUtils du = DispatcherUtils.getInstance();
- du.prepare(request, response);
-
- try {
- 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);
- }
-
- 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;
- }
-
- du.serviceAction(request, response, getServletContext(), mapping);
最后一句进行了相应的处理,在DispatcherUtils 处理代码如下:
java 代码
- public HashMap createContextMap(Map requestMap,
- Map parameterMap,
- Map sessionMap,
- Map applicationMap,
- HttpServletRequest request,
- HttpServletResponse response,
- ServletContext servletContext) {
- HashMap extraContext = new HashMap();
- extraContext.put(ActionContext.PARAMETERS, new HashMap(parameterMap));
- //存放SessionMap,即对HttpSession封装后的map
- extraContext.put(ActionContext.SESSION, sessionMap);
- //存放applicationMap,即对Application封装后的map
- extraContext.put(ActionContext.APPLICATION, applicationMap);
-
- Locale locale = null;
- if (Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE)) {
- locale = LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE), request.getLocale());
- } else {
- locale = request.getLocale();
- }
-
- extraContext.put(ActionContext.LOCALE, locale);
- extraContext.put(ActionContext.DEV_MODE, Boolean.valueOf(devMode));
-
- extraContext.put(WebWorkStatics.HTTP_REQUEST, request);//存放HttpServletRequest
- extraContext.put(WebWorkStatics.HTTP_RESPONSE, response);
- extraContext.put(WebWorkStatics.SERVLET_CONTEXT, servletContext);
- extraContext.put(ComponentInterceptor.COMPONENT_MANAGER, request.getAttribute(ComponentManager.COMPONENT_MANAGER_KEY));
-
-
- extraContext.put("request", requestMap);//存放RequestMap
- extraContext.put("session", sessionMap);
- extraContext.put("application", applicationMap);
- extraContext.put("parameters", parameterMap);
-
- AttributeMap attrMap = new AttributeMap(extraContext);
- extraContext.put("attr", attrMap);
-
- return extraContext;
对于HttpSession ,HttpServletRequest...等,webwork进行了相应的封装SessionMap,RequestMap..我们很容易通过它们来操作底层的HttpSession....
在ActionContext 里提供了~getSession()来获取的当前的SessionMap,对SessionMap的操作即是主要对HttpSession的操作,SesionMap的部分代码如下:
java 代码
- 1. public Object get(Object key) {
- 2. if (session == null) {
- 3. return null;
- 4. }
- 5.
-
- 6. synchronized (session) {
- 7. return session.getAttribute(key.toString());
- 8. }
- 9. }
- 10.
-
- 11.
-
-
-
-
-
-
- 18. public Object put(Object key, Object value) {
- 19. synchronized (this) {
- 20. if (session == null) {
- 21. session = request.getSession(true);
- 22. }
- 23. }
- 24.
-
- 25. synchronized (session) {
- 26. entries = null;
- 27. session.setAttribute(key.toString(), value);
- 28.
-
- 29. return get(key);
- 30. }
- 31. }
- 32.
对于ServletActionContext,继承ActionContext而来,主要提供了getRequest(),getResponse()等方法来对HttpServletRequest,HttpServletResponse进行操作,可以getRequest().getSession()来获取的HttpSession, 也可以通过 getServletContext() 来获得Servlet 的上下文。
:)
分享到:
相关推荐
《XWork源代码详解——深度剖析WebWork框架基础》 XWork源代码是WebWork框架的核心组成部分,WebWork是一款强大的MVC(Model-View-Controller)框架,它为Java Web应用提供了一种灵活且可扩展的开发模式。XWork作为...
在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于学习和理解WebWork的工作原理以及进行定制开发非常有帮助。 1. **MVC模式**:WebWork1.4遵循MVC架构,将应用程序分为模型、视图和控制器三...
《WebWork in Action》是一本专注于介绍WebWork框架的书籍,源代码的提供是为了让读者更深入地理解和实践书中的示例。WebWork是一个基于Java的MVC(模型-视图-控制器)框架,用于构建动态Web应用程序。它强调了代码...
本实例源代码提供了深入理解WebWork2工作原理和应用开发的机会。以下是对WebWork2核心知识点的详细阐述: 1. **MVC架构**:WebWork2遵循MVC模式,将应用程序逻辑、用户界面和数据模型分离,提高代码的可维护性和可...
现在,让我们逐一深入探讨这些技术及其源代码的重要性。 1. **Apache Commons**: Apache Commons 是一个包含多个Java实用工具类的项目集合,它提供了大量的功能,如文件操作、数据转换、网络通信等。通过源代码,...
1. **解压源码包**:下载完成后,首先需要解压缩zip文件,得到WebWork-2.2.5的源代码及相关文档。 2. **环境准备**:确保已经安装了Java开发工具包(JDK),推荐版本为1.5以上。此外,还需要安装Ant或其他构建工具...
这个压缩包包含的文件是WebWork 2.2.2和XWork 1.1.3版本的JAR包以及相关的源代码,这对于开发者来说是一份宝贵的参考资料。 WebWork是一个轻量级的MVC框架,它通过使用动作(Action)和结果(Result)的概念来处理...
《WebWork in Action》是一本专门探讨WebWork框架的书籍,源代码rar文件包含了书中用于示例和实践的完整代码。WebWork是一个基于Java的MVC(Model-View-Controller)框架,它在Web应用程序开发中起着核心作用,帮助...
在"webwork spring hibernate整合实例源代码"中,这三者结合的目的是实现高效的业务流程控制、灵活的依赖注入和便捷的数据持久化。整合过程通常包括以下几个步骤: 1. 配置Spring容器:创建Spring的配置文件(如`...
这个"webwork spring hibernate整合实例源代码全部jar包"是针对这些框架集成的一个实践示例,包含了完整的源代码和必要的库文件。 Webwork是一个基于MVC(模型-视图-控制器)设计模式的Java Web框架,它提供了强大...
Struts2的设计思路和工作流程与Struts1.x有很大的区别,这使得深入理解其源代码变得至关重要。 在分析Struts2的源代码之前,你需要首先获取Struts2的源代码,可以通过访问...
Struts 2.1是Apache软件基金会开发的一个开源框架,它是基于WebWork核心的MVC(Model-View-...通过深入学习并实践其中的源代码,开发者不仅能提升对MVC设计模式的理解,还能增强在实际项目中应用Struts 2.1的能力。
《Struts2权威指南——基于WebWork核心的MVC开发》的源代码。请完全放心,绝对保证质量。由于源码中包含jar文件,打出的包过大,只能分多次上传,请谅解。原文件大于415M,压缩后377M,分压成16个包。此为第68个包。
WebWork是一个基于Java的MVC(Model-View-Controller)框架,它被广泛用于构建企业级Web应用程序。这个"webwork登陆代码"示例显然展示了如何在WebWork框架下实现一个基本的用户登录功能。下面将详细介绍WebWork的...
总结,"Struts 2权威指南--基于WebWork核心的MVC开发"不仅涵盖了Struts 2的基本架构,还提供了实际操作的源代码示例,帮助开发者深入理解MVC模式在Struts 2中的应用,以及如何通过WebWork核心实现高效、可维护的Web...
这个"webwork源码下载"可能是指获取WebWork框架的源代码,这对于学习、调试或自定义框架功能的开发者来说是很有价值的。 WebWork的核心特性包括: 1. **动作映射**:WebWork通过XML配置文件定义动作(Action)与...
而`webwork-src-2.2.7.jar` 文件则包含了源代码,这对于开发者来说非常有用,因为可以方便地查看和学习框架的内部实现。 在WebWork 2.2.4+Spring+Hibernate的组合中,我们可以看到WebWork与两个其他流行框架的集成...
`com`目录下的源代码包含了许多Action类,它们是业务逻辑的具体实现。 4. **Interceptors(拦截器)**:WebWork引入了拦截器的概念,它们在Action执行前后执行,可以实现通用的功能,如权限检查、日志记录等。在...