`
czjxdm
  • 浏览: 124706 次
社区版块
存档分类
最新评论

WebWork 自己来定义需要的视图(转)

阅读更多

转自:http://www.blogjava.net/jfy3d/archive/2006/04/11/40430.html

WebWork中除了默认支持的几中视图外还可以自己来定义需要的视图,如JFreeChart,Excel等

这里生成Excel用的是POI的API
WebWork中定义ResultType视图类型只需要继承Result接口
代码如下

package com.customer.resulttype;

import com.opensymphony.xwork.Result;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.webwork.ServletActionContext;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;

public class ExcelResult implements Result{
    private HSSFWorkbook workbook;
    private String filename;
    private String contenttype;
    public void execute(ActionInvocation invocation) throws Exception {
        if(contenttype==null)
            contenttype = "application/ms-excel";
        if (workbook==null)
            workbook = (HSSFWorkbook) invocation.getStack().findValue("workbook");
      

        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType(contenttype);
        response.setHeader("Content-Disposition","attachment;Filename="+filename+".xls");
        OutputStream os = response.getOutputStream();
        workbook.write(os);
        os.flush();
        os.close();
    }

    public void setWorkbook(HSSFWorkbook workbook) {
        this.workbook = workbook;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    public void setContenttype(String contenttype) {
        this.contenttype = contenttype;
    }
}

视图做完之后做如下配置运行测试

package com.customer.action;

import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.webwork.ServletActionContext;
import com.dboperate.ResultGather;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ByteArrayInputStream;
import java.util.List;
import java.util.Map;

public class ExportExcelAction extends ActionSupport {
    private HSSFWorkbook workbook;

    public String execute() throws Exception {
        return SUCCESS;
    }

    public String product() throws Exception {
        try {
            workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();

            workbook.setSheetName(0, "厂商产品", (short) 1);
            HSSFRow row = sheet.createRow((short) 0);

            HSSFCell cell0 = row.createCell((short) 0);
            HSSFCell cell1 = row.createCell((short) 1);
            HSSFCell cell2 = row.createCell((short) 2);
            HSSFCell cell3 = row.createCell((short) 3);
            HSSFCell cell4 = row.createCell((short) 4);
            HSSFCell cell5 = row.createCell((short) 5);
            HSSFCell cell6 = row.createCell((short) 6);
            HSSFCell cell7 = row.createCell((short) 7);
            HSSFCell cell8 = row.createCell((short) 8);
            HSSFCell cell9 = row.createCell((short) 9);

            cell0.setEncoding(HSSFCell.ENCODING_UTF_16);//这里是设置编码保证中文正常显示
            cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell4.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell5.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell6.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell7.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell8.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell9.setEncoding(HSSFCell.ENCODING_UTF_16);

            cell0.setCellValue("厂商名");
            cell1.setCellValue("产品名");
            cell2.setCellValue("重量");
            cell3.setCellValue("星级");
            cell4.setCellValue("parama");
            cell5.setCellValue("paramb");
            cell6.setCellValue("paramc");
            cell7.setCellValue("paramd");
            cell8.setCellValue("状态");
            cell9.setCellValue("备注");

        } catch (Exception e) {
        }
        return SUCCESS;
    }

    public HSSFWorkbook getWorkbook() {
        return workbook;
    }


}

Xwork.xml中配置加入

        <result-type default="true" name="freemarker"
            <result-type name="excel" class="com.customer.resulttype.ExcelResult"/>
        </result-types>

 <action name="exportExcel" class="com.customer.action.ExportExcelAction">

            <result name="success" type="excel">
                <param name="filename">productparam>
               
            </result>

        </action>

分享到:
评论

相关推荐

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    6. **视图渲染**:WebWork使用JSP、FreeMarker或其他模板引擎作为视图技术,通过ActionSupport类和结果类型来决定如何渲染视图,使得视图层与控制层解耦。 7. **标签库**:WebWork提供了一套自定义的JSP标签,如`...

    WEBWORK

    通过这样的配置,WebWork 可以根据请求参数找到对应的 Action,执行业务逻辑,然后根据 Action 执行的结果返回相应的视图页面。这种解耦的架构使得 Web 应用的开发更加模块化和易于维护。 然而,需要注意的是,...

    WebWork docs 2 -- webWork 详细的说明文档

    1. **WebWork基础**:WebWork的核心概念,如Action、Interceptors(拦截器)、Results和Parameters等,以及它们如何协同工作来实现业务逻辑和视图呈现的分离。理解这些基础概念是掌握WebWork的关键。 2. **MVC模式*...

    webwork_框架文档

    此外,WebWork的异常处理机制允许开发者定义全局和特定Action的异常策略,使得错误处理更加统一和规范。 在文件列表中提到的"webwork_框架文档"可能包含以下内容:框架的安装指南、配置说明、API参考、最佳实践、...

    webwork2开发指南

    4. 视图渲染:使用JSP或其他模板技术来创建视图,WebWork2会根据动作的返回结果自动寻找对应的视图文件。 三、WebWork2高级特性 1. 动作拦截器(Interceptors):拦截器可以对动作执行前后的流程进行增强,如权限...

    webwork

    5. **视图分离**:WebWork支持多种视图技术,如JSP、FreeMarker、Velocity等,实现了视图与控制器的解耦。 6. **国际化与本地化**:WebWork内置了对I18N(国际化)和L10N(本地化)的支持,方便开发者实现多语言...

    webwork所需要的包

    8. **测试和支持库**:为了确保WebWork的正常工作,可能还需要其他支持库,如`commons-lang.jar`、`log4j.jar`等,它们分别提供了通用的工具类和日志记录功能。 在配置WebWork项目时,确保正确地添加了这些JAR文件...

    Webwork2开发指南

    Webwork2 支持多语言环境,开发者可以通过资源文件来定义不同语言的文本,框架会自动根据用户浏览器的设置选择合适的语言版本。 **6. 视图模板技术** Webwork2 使用JSP或FreeMarker等模板引擎作为视图层。开发者...

    webwork详细讲解.doc

    在详细介绍如何安装WebWork之前,我们需要先了解一些基本概念和步骤: 1. **下载WebWork**:访问[WebWork官方网站](https://webwork.dev.java.net/servlets/ProjectDocumentList)下载最新的WebWork压缩包,并进行...

    WebWork2.0讲解说明

    开发者可以通过创建Action类,定义处理请求的方法,然后在视图层(通常为JSP或FreeMarker模板)渲染结果。同时,利用拦截器可以实现如登录检查、性能监控等功能。 五、WebWork2.0与其他框架的对比 相比于Struts1,...

    webwork源码底层实现

    在深入理解WebWork源码之前,我们首先需要了解一些基本概念。 1. **MVC模式**:WebWork基于MVC模式设计,它将应用程序的逻辑分为三部分:模型负责业务处理,视图负责数据展示,控制器负责接收请求并调用模型进行...

    webWork2开发指南

    8. **异常处理**:WebWork2的异常处理机制允许开发者定义全局和特定Action的异常处理器,从而统一处理可能出现的运行时错误。 9. **配置管理**:WebWork2的配置文件采用XML格式,可灵活配置Action、Interceptor、...

    WebWork文档(PDF)

    文档“docs.pdf”将深入探讨这些主题,并提供示例代码和实战指导,对于想要深入了解WebWork或者需要在项目中使用WebWork的开发者来说,是一份宝贵的参考资料。通过学习这份文档,你可以掌握WebWork的核心概念,提升...

    webwork中文帮助文档

    - 需要配置Action配置文件,定义Action类及其关联的视图和URL映射。 2. **Action类**: - Action类是WebWork的核心,它处理用户请求,执行相应的业务逻辑。 - 每个Action类通常对应一个特定的HTTP请求,并通过...

    WebWork2配置

    在webwork.xml中,你可以设置全局的拦截器链,指定每个动作的路径、类、方法以及对应的视图(JSP或Freemarker模板)。 3. **Action配置**:WebWork2中的每个业务逻辑操作对应一个Action类。Action类需要继承自...

    webwork用到的jar包

    1. **动作映射**:WebWork通过XML配置文件或注解来定义动作,将URL请求映射到特定的方法,提供了灵活的请求处理机制。 2. **拦截器(Interceptors)**:WebWork引入了拦截器的概念,允许在动作执行前后插入自定义...

    webwork2个人学习总结

    - 开始学习Webwork2时,首先需要下载对应的JAR包,例如webwork-2.2.6.2版本。 - 将下载的JAR包放入项目中的LIB目录,包括default文件夹下的所有JAR包和webwork-2.2.6.jar。 - 这些JAR包是Webwork2运行的基础,...

    webwork 入门学习

    WebWork由Apache软件基金会维护,其设计理念是通过减少样板代码和提供强大的数据绑定功能来提高开发效率。WebWork的主要特点包括:动作映射、拦截器、类型转换、异常处理和国际化支持等。 二、WebWork核心概念 1. ...

    WebWork教程

    在WebWork框架的使用过程中,开发者需要关注其配置文件xwork.xml,它定义了Action的映射规则以及应用的配置信息。正确配置xwork.xml文件对于框架的正常运行是至关重要的。 WebWork的项目资源和参考资料部分提供了...

Global site tag (gtag.js) - Google Analytics