Struts工作原理是什么?Struts如何进行文件下载?

阳光 2022-07-27 11:27:00 java常见问答 6613

随着Web开发技术的日益成熟,在Web开发领域总出现了许多软件开发框架,Struts就是其中一种,它是一种基于MVC经典设计模式的框架,使用它能够提高开发人员工作效率,那Struts工作原理是什么?下面来我们就来给大家讲解一下。

Struts工作原理是什么.jpg

控制:在Struts中,ActionServlet起着一个控制器(Controller)的作用。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action Form(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。所有这些控制逻辑利用Struts-config.xml文件来配置。

视图:主要是由Jsp来控制页面输出的。它接收到Action Form中的数据,利用html,taglib,bean,logic等显示数据。

模型:在Struts中,主要存在三种bean,分别是:Action,ActionForm,EJB或者Java Bean。ActionForm用来封装客户请求信息,Action取得ActionForm中的数据,再由EJB或者Java Bean进行处理。

Struts如何进行文件下载?

1、创建下载页面

在 struts2Demo06 项目的 WebContent 目录下创建一个名称为 download.jsp 的页面文件,在文件中添加一个用于文件下载的链接,其主要代码如下所示:

<s:a href="simpledownload?filename=test.txt" name="test">test.txt</s:a>

2、创建 Action

在 com.mengma.action 包中新建一个名称为 SimpleDownLoadAction 的类,该类主要用于处理文件下载的核心操作,其代码如下所示。

package com.mengma.action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class SimpleDownLoadAction extends ActionSupport
{
    private String filename;
    public String getFilename()
    {
        return filename;
    }
    public void setFilename(String filename)
    {
        this.filename = filename;
    }
    // 定义了返回InputStream的方法,该方法作为被下载文件的入口
    public InputStream getDownloadFile()
    {
        // 获取下载文件名称
        String filename = ServletActionContext.getRequest()
            .getParameter(
                "filename");
        // 定义下载文件路径
        String filePath = "/upload/" + filename;
        // 返回一个流对象
        return ServletActionContext.getServletContext()
            .getResourceAsStream(
                filePath);
    }
}

3、编写配置文件信息

在 struts.xml 中增加 action 的配置,其代码如下所示:



<action name="simpledownload" class="com.mengma.action.SimpleDownLoadAction">
    <result type="stream">
        <!--文件类型 -->
        <param name="contentType">text/plain</param>
        <!--指定文件名 -->
        <param name="contentDisposition">
            attachment;filename=${filename}
        </param>
        <!--输入流 -->
        <param name="inputName">downloadFile</param>
    </result>
</action>

在上述配置代码中,分别通过 stream 结果类型的属性设置了所要下载文件的类型、名称和输入流。其中 ${filename} 表示在项目运行时,将 action 中的 filename 属性动态地填充在 ${} 中间部分,这样就可以动态地获取所要下载的文件名称。

4、运行项目并查看结果

启动项目后,在浏览器的地址栏中输入地址 http://localhost:8080/struts2Demo06/download.jsp,即可显示如图所示的页面。

Struts工作原理是什么?Struts如何进行文件下载?.jpg

单击下载页面的超链接后,浏览器的显示结果如图所示。

1.jpg

按照以上方法我们就可以将Struts文件下载成功了,如果大家需要下载Struts文件的,可以试试以上的方法,另外Struts是一个非常不错的应用框架,使用它能够节省开发人员很多时间哦!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

json不支持换行怎么办?json解析乱码如何处理?

java中级开发面试题有哪些?java中级开发常见面试题

java代码怎么压缩zip文件?写java代码要掌握哪些格式?