百度空间 | 百度首页 
 
查看文章
 
SRTUTS + ITEXT 创建日志数据的保存下载
2008年09月14日 星期日 10:44

SRTUTS + ITEXT 创建日志数据的保存下载

发布日期:2007-10-26 作者:PoorStu 出处:http://blog.csdn.net

package com.secSrv.webApp.action.netlog;

import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.html.HtmlWriter;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.rtf.RtfWriter;
import com.secSrv.webApp.action.baseinfo.BaseAction;
import com.secSrv.webApp.beans.cache.Pages;
import com.secSrv.webApp.business.netlog.NetlogBusiness;
import com.secSrv.webApp.form.netlog.LogPage;
import com.secSrv.webApp.hibernate.po.TblNetlog;
import com.secSrv.webApp.hibernate.po.TdSysOperator;
import com.secSrv.webApp.status.TdSysOperatorConst;
import com.secSrv.webApp.utils.Constants;
import com.secSrv.webApp.utils.SignOnCheck;

public class DownLoadDataAction extends BaseAction{

// --------------------------------------------------------- Instance


// --------------------------------------------------------- Methods

/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
  
   ActionMessages messages = new ActionMessages();
  
   //检验该客户是否有权限
   ActionForward returnForward = SignOnCheck.checkPrivilege(request,response);
   if(returnForward != null){
    return returnForward;
   }
   HttpSession session = request.getSession();
   //取得用户信息
    TdSysOperator tdUser = (TdSysOperator) session.getAttribute(Constants.SysOperator);
    if (tdUser == null){
            messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("sys.login.sessionerror", "session失效,"+
                    "请重新登陆"));
            saveMessages(request, messages);
            return new ActionForward("/sessionerror.do");
    }
   String hqlSearch = (String)request.getSession().getAttribute("netloghql");
   String hqlCount = (String)request.getSession().getAttribute("netlogcount");
   String queryType = request.getParameter("type");
    try {
    String usertype = "";
    if (tdUser.getPriority().equals(
      TdSysOperatorConst.LANGCHAO_ADMIN_USER)) {
     usertype = TdSysOperatorConst.COMPANY_ADMIN_USER;
    } else {
     usertype = TdSysOperatorConst.COMMON_USER;
    }
    Document document = new Document();
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
    if(queryType.equals("html"))
    {
     response.setContentType("text/html");
     //其中attachment是保存, inline是在网页中打开
                response.setHeader( "Content-disposition", "attachment; filename=foobar.htm" );
                HtmlWriter.getInstance(document, baos);
    }
    //用PdfWriter来监听,输出流为response.getOutputStream,
    else if(queryType.equals("pdf"))
    {
     response.setContentType("application/pdf");//可以在网页中用pdf reader打开
                PdfWriter.getInstance(document, baos);
                //其中attachment是保存, inline是在网页中打开
                response.setHeader( "Content-disposition", "attachment; filename=foobar.pdf" );
    }
    else if(queryType.equals("rtf"))
    {
     response.setContentType("application/msword");
              response.setHeader( "Content-disposition", "attachment; filename=foobar.rtf" );
              RtfWriter.getInstance(document, baos);
    }
    //下面是添写数据
    // 如果变量多不等于上面3个,则用reponse。sedredircet
            document.open();
         BaseFont bfChinese = BaseFont.createFont("STSong-Light",
                     "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
         Font FontChineseTitle = new Font(bfChinese, 24, Font.BOLD);
         Font fontContent = new Font(bfChinese, 9, Font.NORMAL);
         Font fontHeader = new Font(bfChinese, 9, Font.BOLD);
         //标题
         Paragraph paraTitle = new Paragraph("网 络 日 志 表", FontChineseTitle);
         paraTitle.setAlignment(Element.ALIGN_CENTER);
         document.add(paraTitle);
         //header 和 footer
         HeaderFooter footer = new HeaderFooter(new Phrase("页号: ",fontContent), true);
            document.setFooter(footer);
//          we add a Header that will show up on PAGE 1
            HeaderFooter header = new HeaderFooter(new Phrase("版权:浪潮",fontContent),false);
            document.setHeader(header);
            // step 4
            Table datatable = new Table(13);
            datatable.setPadding(4);
            datatable.setSpacing(0);
            //datatable.setBorder(Rectangle.NO_BORDER);
            int headerwidths[] = {5, 5, 9, 8, 8, 8, 12, 6, 12, 6, 5, 4, 11};
            datatable.setWidths(headerwidths);
            datatable.setWidth(100);
            // the first cell spans 10 columns
       /*    Cell cell = new Cell(new Phrase("网 络 日 志 表", FontChineseTitle));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setLeading(30);
            cell.setColspan(13);
            cell.setBorder(Rectangle.NO_BORDER);
            cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
            datatable.addCell(cell);
            */
    datatable.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            Color color = new Color(0xC0, 0xC0, 0xC0);
            datatable.addCell(this.createCell(new Phrase("序号",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("设备编号",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("时间",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("日志类型",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("日志级别",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("引发事件",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("源IP地址",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("源端口",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("目的IP地址",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("目的端口",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("协议类型",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("次数",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.addCell(this.createCell(new Phrase("日志内容",fontHeader),color,Element.ALIGN_CENTER,Element.ALIGN_MIDDLE,1));
            datatable.endHeaders();
            List netlogList = null;
            TblNetlog netlog = null;
    NetlogBusiness netlogBusiness = new NetlogBusiness();
    int count = netlogBusiness.getNetlogCount(hqlCount);
    netlogList = netlogBusiness.getAllNetlog(0,count,hqlSearch);
            for(int i=0;i<netlogList.size();i++)
            {
            netlog = (TblNetlog)netlogList.get(i);
            datatable.addCell(new Phrase(String.valueOf(i+1),fontContent));
                datatable.addCell(new Phrase(netlog.getDeviceId().toString(),fontContent));
                datatable.addCell(new Phrase(netlog.getTime().toLocaleString(),fontContent));
                datatable.addCell(new Phrase(netlog.getCategory(),fontContent));
                datatable.addCell(new Phrase(netlog.getSeverity(),fontContent));
                datatable.addCell(new Phrase(netlog.getEvent(),fontContent));
                datatable.addCell(new Phrase(netlog.getSrcIp(),fontContent));
                datatable.addCell(new Phrase(netlog.getSrcPort(),fontContent));
                datatable.addCell(new Phrase(netlog.getDstIp(),fontContent));
                datatable.addCell(new Phrase(netlog.getDstPort(),fontContent));
                datatable.addCell(new Phrase(netlog.getProtocol(),fontContent));
                datatable.addCell(new Phrase(netlog.getOccurrence().toString(),fontContent));
                datatable.addCell(new Phrase(netlog.getContent(),fontContent));
            }
            document.add(datatable);
            //统计信息
            Paragraph paraTotol = new Paragraph("纪录条数:"+count, fontHeader);
            paraTotol.setAlignment(Element.ALIGN_CENTER);
            document.add(paraTotol);
            Paragraph paraTime = new Paragraph("创建时间:"+new Date().toLocaleString(), fontContent);
            paraTime.setAlignment(Element.ALIGN_LEFT);
            document.add(paraTime);
            // step 5: we close the document (the outputstream is also closed internally)
         document.close();
         // 设置 response headers
         response.setHeader("Expires", "0");
         response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
         response.setHeader("Pragma", "public");
        
         response.setContentLength(baos.size());
         //创建servletoutputstream流对象,即为response。getoutputstream
         ServletOutputStream out = response.getOutputStream();
         baos.writeTo(out);//将字节输出流写入到servletoutputstream
         out.flush();//out。flush输出内容
   } catch (Exception e) {
    messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
      "sys.common.error", e.toString()));
    saveMessages(request, messages);
    return mapping.findForward("failure");
   }
   return null;
}
public Cell createCell(Phrase phrase,Color color,int halign,int valign,int colspan ) throws BadElementException
{
   Cell cell = new Cell(phrase);
        cell.setHorizontalAlignment(halign);
        cell.setVerticalAlignment(valign);
        cell.setColspan(colspan);
        cell.setBackgroundColor(color);
        return cell;
}
}


类别:文档保存 | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu