SRTUTS + ITEXT 创建日志数据的保存下载
来源:互联网 发布:淘宝网幼儿园名字贴 编辑:程序博客网 时间:2024/05/20 18:47
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;
}
}
- SRTUTS + ITEXT 创建日志数据的保存下载
- srtuts,spring连续删除的问题
- J2EE使用iText将数据保存为PDF文档(转)
- iText 关于创建PDF的感想
- caffe下保存训练数据的训练日志
- 日志的断电保存
- angular2 下载保存文本数据
- angular2 下载保存文本数据
- 写日志 和 动态创建jpg,保存
- 创建gtf下载数据
- springboot itext下载pdf
- 保存下载的图片
- itext 创建pdf
- 往数据库保存数据更新日志
- 对日志创建处理下载为excel格式的文件续(3) 下载
- 安卓通过itext创建包含中文的pdf出错
- 使用java自带的java.util.logging创建日志类,支持保存日志到文件和mysql
- 保存make时的日志
- python的htmllib模块,
- 浏览 Windows SharePoint Services Web 站点时收到“Service Unavailable”(服务不可用)错误信息
- XQuery表达式之逻辑表达式(Logical Expression)
- ASP.NET中的GirdView与超链接
- 如何动态保存不同类的对象的成员函数的地址?--解决
- SRTUTS + ITEXT 创建日志数据的保存下载
- 五子棋人机对弈——VC API实现!
- 数据库日志的安全删除
- 注册表修改之网络篇
- Symbian中日志文件的使用
- 注册表修改之限制篇
- 婚姻模式的思考
- operatorwiki测试体验
- 注册表修改之操作篇