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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值