| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package xin.glue.ui.common.blob;
- import java.io.OutputStream;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.Enumeration;
- import java.util.HashMap;
- import java.util.List;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.jsp.JspWriter;
- import javax.servlet.jsp.PageContext;
- import com.posdata.glue.biz.constants.PosBizControlConstants;
- import com.posdata.glue.biz.control.PosBizProvider;
- import com.posdata.glue.context.PosContext;
- import com.posdata.glue.web.control.PosWebConstants;
- public abstract class PosBolbManager {
- protected HttpServletRequest request;
- private HttpServletResponse response;
- private JspWriter out;
- private PageContext pageContext;
- protected List dataList = new ArrayList();
- public PosBolbManager(HttpServletRequest request,
- HttpServletResponse response, JspWriter out, PageContext pageContext) {
- super();
- this.request = request;
- this.response = response;
- this.out = out;
- this.pageContext = pageContext;
- }
- public void getContext() throws Exception {
- PosContext context = new PosContext();
- request.setAttribute(PosWebConstants.CONTEXT, context);
- context.put(PosBizControlConstants.SERVICE_NAME, request.getParameter("ServiceName"));
- context.setRequestParameters(request.getParameterMap());
- HashMap map = new HashMap();
- for (Enumeration enum1 = request.getAttributeNames(); enum1.hasMoreElements();) {
- String key = (String) enum1.nextElement();
- map.put(key, request.getAttribute(key));
- }
- context.setRequestAttr(map);
- PosBizProvider.getController().doAction(context);
- String[] resultKeys;
- if (request.getParameter("resultKey") != null) {
- resultKeys = request.getParameter("resultKey").split("\\|");
- } else {
- resultKeys = (String[])context.get("ResultKeyList");
- }
- for (int i = 0, length = resultKeys.length; i < length; i++) {
- Object obj = context.get(resultKeys[i]);
- if (obj != null)
- dataList.add(obj);
- }
- response.reset();
- // 这行设定本网页为excel格式的网页
- // application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
- response.setContentType("application/ms-excel;charset=UTF-8");
- // 线上浏览的方式(为能多次打开,使用时间作为文件名):
- response.setHeader("Content-disposition", "inline; filename=" + (new SimpleDateFormat("yyyyMMddhhmmss")).format(new Date()) + ".xls");
- // 下载的方式:
- // response.setHeader("Content-disposition", "attachment; filename=test2.xls");
- OutputStream os = response.getOutputStream();
- setContext(os);
- os.flush();
- os.close();// *important* to ensure no more jsp output
- os = null;
- // response.flushBuffer();
- out.clear();
- out.close();
- out = pageContext.pushBody();
- }
- protected abstract void setContext(OutputStream os) throws Exception;
- }
|