后台ACTION类:
public class DownloadAction extends ActionSupport {
private String downloadFileName;
private String inputPath;
public DownloadAction(){
System.out.println("DownloadAction^^^^^^^^^^^^^^^^^^");
}
public void setInputPath(String value) {
inputPath = value;
}
public InputStream getInputStream() throws Exception {
String photoName=ActionContext.getContext().getSession().get("photoName").toString();
return ServletActionContext.getServletContext().getResourceAsStream ("\\files\\"+photoName);
}
public String execute() throws Exception {
return SUCCESS;
}
public String getDownloadFileName() {
System.out.println("getDownloadFileName^^^^^^^^^^^^^^^^^^^^^^");
this.downloadFileName=ActionContext.getContext().getSession().get("photoName").toString();
return downloadFileName;
}
public void setDownloadFileName(String downloadFileName) {
this.downloadFileName = downloadFileName;
}
public void validate(){
System.out.println("validate^^^^^^^^^^^^^^^^^^^^^^^^^^");
}
public String download(){
System.out.println("download^^^^^^^^^^^^^^^^^^^^^^");
return SUCCESS;
}
}
struts.xml中action的配置:
<action name="download" class="com.globalzt.struts2.action.DownloadAction" method="download">
<result name="success" type="stream">
<param name="contentType">image/jpg</param>
<param name="inputName">inputStream</param>
<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性对应action类中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
执行顺序:
DownloadAction^^^^^^^^^^^^^^^^^^
validate^^^^^^^^^^^^^^^^^^^^^^^^^^
download^^^^^^^^^^^^^^^^^^^^^^
getDownloadFileName^^^^^^^^^^^^^^^^^^^^^^
由此可见,其执行顺序为:
1.构造函数
2.验证函数
3.目标函数
4.属性的get方法
补充:
如果重写了父类的excute()方法,那么如果指定了触发的ACTION,则不执行该excute()函数。
分享到:
相关推荐
6. **动态方法调用**:Struts2支持动态方法调用,即可以通过URL直接调用Action类的方法,无需在配置文件中一一映射。 7. **插件支持**:Struts2拥有丰富的插件库,如Struts2-dojo-plugin用于增强AJAX功能,Struts2-...
Action Mapping定义了特定的URL如何映射到特定的后台Action类,这使得Struts2能够根据请求路由到相应的业务逻辑。 3. **拦截器(Interceptors)**:在Action执行之前,一系列的拦截器会按照预定义的顺序被调用。这些...
在Struts2中,提供了丰富的标签库来简化视图层的开发,其中包括`sort`标签,它允许我们在JSP页面上对数据集合进行排序。这个实例将深入探讨如何使用`struts2 sort`标签及其相关概念。 首先,`sort`标签是Struts2的...
- **STRUTS2 的 Action 设计更灵活:**与 STRUTS1 中 Action 必须继承自 `Action` 类不同,STRUTS2 允许 Action 作为 POJO(Plain Old Java Object)存在,这意味着开发者可以更加自由地设计业务逻辑类。...
1. **Action类**:在Struts2中,业务逻辑主要由Action类处理。Action类是控制层的主体,它接收来自视图层的请求,处理业务逻辑,并通过Result返回响应。 2. **配置文件**:Struts2的配置文件通常为struts.xml,其中...
1. **Action**:Struts 2中的Action类是业务逻辑的载体,负责处理用户请求。Action类通常继承自`com.opensymphony.xwork2.ActionSupport`或自定义基类,并重写`execute()`方法来实现特定功能。 2. **配置文件**:...
1. **动作(Action)**:在Struts2中,Action是业务逻辑的载体,负责处理用户的请求。开发者可以创建自定义的Action类,继承自`org.apache.struts2.dispatcher.ng.ExecuteAction`或实现`...
- 拦截器是Struts2的一个重要特性,它们是一系列按照特定顺序执行的处理程序,可以用于日志记录、事务管理、权限检查等。通过配置`struts.xml`,可以自定义拦截器链。 7. **文件上传与下载** - Struts2支持文件...
Struts2通过配置文件(struts.xml)定义了各个Action与Action方法的映射,以及拦截器的顺序和配置。在这个在线考试系统中,Struts2负责接收用户的登录请求、题目浏览请求等,并调用相应的业务逻辑处理这些请求。 **...
在实际开发过程中,开发者还需要编写Action、Interceptor、DAO(数据访问对象)和Service(业务逻辑层)等组件,使用Struts2的配置文件(struts.xml)进行路由和拦截器的设定。同时,为了提供友好的用户界面,通常会...
其中,拦截器(Interceptor)是Struts2框架的一个核心特性,用于处理Action的公共行为,类似于Spring框架中的AOP(面向切面编程)。拦截器可以实现在Action执行前后进行一些操作,如权限检查、日志记录、数据校验等...
- **ExecuteAndWaitInterceptor**:后台执行Action并显示等待页面。 - **ExceptionMappingInterceptor**:异常处理。 - **FileUploadInterceptor**:支持文件上传。 - **I18nInterceptor**:实现国际化。 - **...
Struts2 拦截器是Struts2框架的核心组件之一,它们允许开发者在Action执行前后插入自定义逻辑,实现跨切面的功能。拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨...
Struts 2提供了一系列的标签库,这些标签可以方便地在JSP页面中使用,简化视图层的开发,如s:form、s:textfield、s:submit等,它们与Action对象和属性直接绑定,使得页面与后台数据的交互更为简单。 3.4 Struts 2...
在"struts2demo"的JSP文件中,你可以看到这些标签的使用,它们会与后台Action类的方法进行交互,实现数据的提交和接收。 在"struts2demo"的压缩包中,"struts2"很可能是项目的根目录,包含了所有的源代码、配置文件...
1. **Action类**:在Struts2中,Action类是业务逻辑的主要载体。它负责接收请求、处理数据并返回结果。每个Action类通常对应一个特定的用户操作或功能。 2. **配置文件**:Struts2的配置信息主要包含在两个文件中,...
拦截器链(Interceptor Chain)的概念也是Struts2中非常重要的一部分。拦截器链是由一系列按照特定顺序排列的拦截器组成的。当访问被拦截的方法或字段时,这些拦截器会按照它们在链中的顺序依次被调用。 ##### 1.2 ...
视图层在Struts2中通常由JSP或FreeMarker模板实现。图书管理系统中的视图展示图书信息、用户操作反馈等,与Struts2的Action通过ModelDriven或ValueStack机制进行数据绑定,将后台处理的结果传递给前端显示。 标签库...
在Struts2中,类型转换是一个关键特性,它允许框架将HTTP请求中的数据自动转换为Action类中相应字段的类型。这篇博客“Struts2类型转换深入总结”深入探讨了这个主题,以下是对这一知识点的详细说明。 1. **类型...
8. **后端处理**:在Java代码中,通常会使用Servlet或Struts2的Action来接收上传的文件,处理文件存储,以及返回相应的JSON响应,以便Uploadify更新UI状态。 9. **安全考虑**:文件上传时需要防止恶意文件,例如...