`
- 浏览:
326392 次
- 性别:
- 来自:
上海
-
- <package/>标签里,这几个标签是有严格顺序的,正确顺序如下:
- 先<result-types>,必须有<result-type/>项;
- 再<interceptors>,必须有<interceptor/>项;
- 接下来是<default-interceptor-ref name="completeStack"><!---->default-interceptor-ref>;
- 然后是<global-results>,必须有<result/>项;
- 然后<global-exception-mappings>,子项如<exception-mapping result="errorPage" exception="java.lang.Exception"/>
- 最后才是<action/>
- =========================================================================
- <action name="test">
- <interceptor-ref name="exception"/>
- <interceptor-ref name="basicStack"/>
- <exception-mapping exception="com.acme.CustomException" result="custom_error"/>
- <result name="custom_error">custom_error.ftl<!---->result>
- <result name="success" type="freemarker">test.ftl<!---->result>
- <!---->action>
- =========================================================================
- webwork运行流程:
- 默认执行execute()方法,该方法默认返回SUCCESS;
- =====分页================================================================
- <Script language="JavaScript" src="/js/pagenumber.js"><!---->Script>
- <script Language="JavaScript">
- listNumUrl("courseInfoList.action?&pageNum=",${pageNum},${allPageNum});
- <!---->script>
- ======相关扩展===========================================================
- Ognl工作原理:
- OgnlValueStack stack=new OgnlValueStack();
- stack.push(new User())://首先将打算赋值的对象压入栈中
- stack.setValue("name","erica");//为栈顶对象User指定的属性名name赋值
- =====额外收获===========================================================
- HttpSession是一个接口,
- Properties实现了继承了HashTable(实现了Map接口),也就是说它保存的也是值-键对象,它的setProperty("name","value")实质上就是保存到HashTable里了。
- -------------------------------------------------------------------------------------------------
- <ww:head theme="ajax" calendarcss="calendar-green"/>默认不是ajax
- ======上传=============================================================
- <action name="itemPersonalInput" class="cn.com.s520.course.ItemPersonalInputAction">
- <interceptor-ref name="fileUpload">
- <param name="allowedTypes">
- application/msword,image/gif,image/jpeg,image/pjpeg,application/x-shockwave-flash
- <!---->param>
- <param name="maximumSize">10485760<!---->param>
- <!---->interceptor-ref>
- <interceptor-ref name="basicStack"/>
- <result name="input" type="freemarker">/course/ItemPersonalInput.ftl<!---->result>
- <result name="error" type="freemarker">/course/ItemPersonalInput.ftl<!---->result>
- <result name="success" type="redirect">/itemPersonalList.action<!---->result>
- <!---->action>
- private File images;
- private String imagesContentType;
- private String imagesFileName;//得到不含路径的文件名,如test.jpg
- ******文件下载=========================================================
- <result name="success" type="stream">
- <param name="contentType">image/jpeg<!---->param>
- <param name="inputName">imageStream<!---->param>
- <param name="contentDisposition">filename="logo.png"<!---->param>
- <param name="bufferSize">4096<!---->param>
- <!---->result>
- 1,<param name="contentType">application/x-msdownload<!---->param>
- contentType设成 application/x-msdownload 就可以。这样浏览器会保证弹出一个下载文件的对话框。
- 2,inputName 这个比较重要,这个名字是输入流的名称, 以后要steam result的实现类中为根据OGNL的表达式去查找的。
- contentDisposition 这个是下载之后,保存在用户端的文件名称
- 3,另外一个参数:contentLength就是下载文件的大小,webwork的stream result似乎实现有问题,不能根据文件的大小动态进行设置,只能写死。
- 这个参数的意义是告诉浏览下载的文件有多大,以便浏览器正确的显示进度条。如果这个功能很重要的话,可以重新写一个RESULT来实现。
- ======================================================================
- <result>/form.jsp<!---->result>如果不指明,默认为success
- <action name="userReg" class="com.opensymphony.xwork.ActionSupport">
- <result name="input">/app/userreg.ftl<!---->result>
- <!---->action>
- 这里将不会出现预期的页面,因为默认为success,不会转向我们指定的input页面
- ======================================================================
- <result name="no-content" type="header">
- <param name="status">204<!---->param>
- <param name="headers.customHeaderA">A<!---->param>
- <param name="headers.customHeaderB">B<!---->param>
- <!---->result>
- ======================================================================
- chain视图:
- 同一个包里,可设置type为chain,对应action的扩展名也可以不写,
- <result name="error" type="chain">
- <param name="actionName">bar<!---->param>
- <!---->result>
- 不同包里
- <result name="errorPage" type="chain">
- <param name="namespace">/<!---->param>
- <param name="actionName">bar<!---->param>
- <!---->result>
- 或者设置type为redirect,重定向过去
- <action name="index" class="com.opensymphony.xwork.ActionSupport">
- <result name="success" type="redirect">/course/courseInfoList.action<!---->result>
- <!---->action>
- ======================================================================
- <default-interceptor-ref name="defaultStack"/>
- 这里只是在你没有设置拦截器时才用到,如果设置拦截器了,就不会调用这个了,我开始还以为设置没设置拦截器都调用这个呢
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本学习笔记将深入探讨WebWork2的核心概念、主要特性以及如何在实际项目中应用。 首先,WebWork2的核心是Action,它是处理用户请求的中心组件。Action类负责接收HTTP请求,执行业务逻辑,并通过Result将处理结果返回...
ServletDispatcher 是WebWork中的核心组件之一,它负责根据Action配置信息来分发请求,调用相应的Action方法,并将结果返回给客户端。它解析请求路径,查找匹配的Action映射,执行Action并根据返回的结果类型选择...
### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...
在WebWork中进行文件上传前,需要进行相应的配置: 1. **定义拦截器**:首先,在配置文件中定义`FileUploadInterceptor`,通常会将其与其他拦截器组合使用,例如与`params`和`model-driven`等一起组成拦截器栈。 ...
从给定的文件信息来看,这里涉及到的是WebWork框架的学习笔记与配置,以及如何将WebWork与Spring、Hibernate集成在一起的示例。下面,我们将详细地解析这些知识点: ### WebWork框架简介 WebWork是一个开源的Java ...
本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...
- **Struts2的起源**:Struts2最初由WebWork和Struts1的核心开发者联合创建,其目的是为了弥补这两个框架的不足之处。 **1.2 开发环境配置** - **IDE选择**:Eclipse 3.2 + MyEclipse 5.5。 - **Servlet Container*...
- **发展历程**: Struts2 是在 WebWork 框架的基础上发展起来的,因此学习 Struts2 实际上也是学习 WebWork。 #### 二、Struts2 的核心组件分析 **控制器**: - **Servlet VS Filter**: - **Servlet**: - 在内存...
- **核心**:Struts2 的核心其实是 WebWork 2,它融合了 Struts 1 的一些优秀思想。 - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 ...
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
总结,黑马程序员Struts2 2016版的前3Days笔记重点介绍了Struts2的基础概念、架构、配置、Action、结果类型、视图渲染、标签库以及拦截器等关键知识点。通过深入学习这些内容,开发者能够更好地理解和运用Struts2...
在本篇笔记中,我们将深入探讨Struts2的核心概念和使用方法。 **一、Struts2概述** 1.1 为什么要用Struts? 在传统的JSP开发中,模型与视图、控制器的职责混杂,导致代码维护困难。Struts2作为MVC框架,将业务逻辑...
他们主要通过将Webwork中的相关类复制到新的包中,并修改`dwr.xml`配置文件,以便让DWR能够识别Struts2的Action和Action方法。 **DWR的使用步骤**: 1. **设置环境**:确保项目中包含DWR的jar文件,并正确配置`web...
根据提供的文件信息,可以看出这份学习笔记主要关注于SSH(Struts、Spring 和 Hibernate)框架的配置与使用。接下来,我们将详细解析这些知识点。 ### 一、Spring 框架依赖 Spring 是一个开源的轻量级Java开发框架...
本笔记将深入探讨Struts2的核心概念、执行流程、类型转换、输入验证和国际化等方面。 **一、Struts2框架基础** Struts2是Apache软件基金会的一个开源项目,它是基于拦截器的MVC框架,继承了WebWork框架的优点。...
Struts2是Struts1的升级版,它吸取了其他优秀框架的优点,如Spring、WebWork等,提供更强大的功能和更灵活的配置。Struts2的核心是FilterDispatcher,它处理所有请求并根据配置的拦截器链进行处理。Struts2支持OGNL...
它不仅继承了Struts1和WebWork的优点,还通过灵活的拦截器机制和丰富的配置选项,使得开发者能够更高效地实现复杂的Web应用。对于初学者而言,理解Struts2的基本原理和配置方式是掌握Web开发的关键步骤。