JasperReport制作报表二,ireport与jasperreports开发总结

1. JasperReport介绍

    JasperReport 是三个开源的Java报表引擎,它不像任何的表格工具,例如Crystal报表是基于Java的,未有协和的表明式语法。贾斯帕Reports有提供丰硕的情节到荧屏上,到打字与印刷机,或调换成PDF,HTML,XLS,RTF,ODT,CSV,TXT和XML文件的技艺。JasperReports是贰个Java类库,须要安置到Java应用程序中。JasperReport的表征如下:

  • 具备灵活的表格布局;
  • 能够用文字或图表展现数据;
  • 开辟职员能够因此种种方法提供数据;
  • 基本上能用来自多少个数据源的多少;
  • 能够生成水印(水印是这么的措施被停放在主图像的副图像);
  • 能够生成子报表;
  • 能够导出报表到三种格式的。

图片 1

一。  下载ireport( 官方网站:http://ireport.sourceforge.net),自个儿下载ireport3.7.0。

2. 成本流程

    贾斯帕Report完全由Java编写,能够用来在各个Java应用程序,富含J2EE,Web应用程序中变化动态内容。它最主要目标是帮助生成面向页面包车型地铁、绸缪打印的文书档案。下边包车型地铁流程图描述了八个天下无敌的表格开采的工作流程。

 图片 2

    如上海体育场合所示,JasperReport报表开荒分为多少个阶段:

(1)设计报表

    这一个等级是创办jrxml文件,该公文是富含报表布局定义的XML文书档案,能够选择JasperSoft Studio或iReport那三种可视化开源开拓工具来成立。

(2)编写翻译报表

    这一阶段是将源文件(*.jrxml)编译成二进制文件(*.jasper),该jasper文件能够随应用程序运维。

(3)实践报表

    该步骤是将应用程序中的数据填充在报表模板中,即jasper文件。这一等级将会发生jasper打印文件(*.jrprint),该公文能够用来打字与印刷或导出报表。

(4)导出报表到所急需的格式中

    JasperReport提供了各养草样的导出格式,如:HTML,PDF,Excel等。该阶段能够导出供给的报表格式。

1.    JasperFillManager:填充管理,主要的办法如下:


3. 兑现原理

    JasperReport Library为报表开拓提供了增加的类库,此中变化报表并打字与印刷、导出全经过如下图所示。

 

图片 3

    开拓流程如下:

(1)开辟报表设计文本,相当于一个*.jrxml文件。

(2)使用JasperReports提供的JasperCompileManager工具编写翻译*.jrxml文件,编写翻译后生成一个*.jasper文件。

(3)使用贾斯帕Reports提供的JasperFillManager工具填充编写翻译后的*.jasper文件,填充后生成三个*.jrprint文件。

(4)使用导出管理器JasperExportManager只怕种种格式的公文导出器JCR-VXxxExporter将*.jrprint文件导出成各样格式的报表文件。也足以采纳JPAJEROViewer工具类来直接浏览报表。也能够使用打字与印刷管理器JasperPrintManager来打印表格。

        fillReport:填充报表,多态函数,重返值为JasperReport,参数为报表和表格参数Map, 参数Map里包涵Parameters、DataSource等,假使是从数据库取多少还要有connection参数;

二。  搭建ireport jasperreports java开拓平台。将ireport3.7.0安装路线下

D:iReport-3.7.0 ireportmodulesext下的(jasperreports-3.7.jar,

iText-  2.1.0.jar,iTextAsian.jar,commons-logging-1.1.jar,commons-collections-3.2.1.jar,

commons- digester-1.7.jar,poi-3.2-FINAL-二零零六1019.jar,groovy-all-1.5.5.jar)的jar包出席到 

java classPath下。在那之中各jar包的本子以你下载的ireport的ireportmodulesext路径下jar为准。

各jar包功用如下:

jasperreports-3.7.jar:该包的功用完毕ireport中Preview按扭作用。通过该包可以由此java来ireport生成摸班 

(.jrxml或.jasper)填充数据源并导出pdf,excel,html等格式文件。

iText-2.1.0.jar:生成pdf所依赖的包。

iTextAsian.jar:帮衬pdf粤语字体信任的包。

groovy-all-1.5.5.jar:将.jrxml编写翻译成.jasper.要是你不选取java编译,而采用ireport工具编写翻译则不用导入该 包。

commons-digester-1.7.jar:解析.jrxml

poi-3.2-FINAL-20101019.jar:生成excel报表所依赖的jar

4. 有关落到实处类

    在JasperReport的支出流程中,首要涉及下边包车型地铁那多少个类:

(1)net.sf.jasperreports.engine.design.JasperDesign

    那个类能够在JasperReport类库内置的XML深入分析器对XML report design进行剖析管理未来得到[2]。其对应与报表模板文件在内部存款和储蓄器中的格局,即*.jrxml文件。

(2)net.sf.jasperreports.engine.JasperReport

    那么些类的实例蕴涵了三个通过编写翻译的report design对象。生成它的机遇是对报表编写翻译之后,但从未对其填入数据的时候。编写翻译进度中,JasperReport需求生成一个近年来的类公事,用以保存report 表明式,如变量表明式、文本、图像表明式、组表明式等等。这一个有时的Java Source File是被动态编写翻译的,编译器使用的是JDK中用来施行应用程序的编写翻译器类(compiler class)。倘若tools.jar不在classpath中,编写翻译进度将运用javac.exe来开展后台编写翻译。编写翻译后所得的字节码保存在JasperReport类中,用来在实践期填充数据和给表明式赋值。对应二进制报表文件在内部存款和储蓄器中的情势,也正是应和的*.jasper文件。

(3)net.sf.jasper.engine.JasperPrint

    当贰个表格已经装填好数据之后,那些文书档案就以JasperPrint类的实例出现。这些类能够直接用JasperReport内置的viewer举行查看,也可以体系化到硬盘以备后用,可能发送到网络去。那些类的实例是报表装填进度后的产物,它能够被JasperReport类库中的导出方法导出成各个流行的格式如PDF,HTML,XML等等。

(4)net.sf.jasperreports.engine.xml.JRLoader

    装载器用于报表生成的相继显要阶段如编写翻译,填充等。客商和发动机都足以运用那一个类来装载所需的种类化对象如file、U途胜Ls、intput stream等。那几个类最令人感兴趣的函数当属loadOnjectFromLocation(String location)[3]。当顾客选用这么些类从钦点地点装载对象的时候,该函数将首先将location解释为贰个法定的UGL450L,如果条分缕析退步,函数将感到所提供的location是硬盘上的三个文件名,并将筹算读取它。假设在钦定地址没找到文件,它将透过classpath定位多少个一见青眼于该location的财富,全部努力退步今后,将抛出特别。

(5)net.sf.jasperreports.engine.JasperCompileManager

    那是三个与编写翻译有关的类,利用它提供的有的编写翻译方法,允许大家将三个报表设计文书档案(*.jrxml文件)编写翻译成三个二进制文件(*.jasper文件)。其他,它也得以向来将net.sf.jasperreports.engine.design.JasperDesign(*.jrxml文件在内部存款和储蓄器中的情势)对象编写翻译成net.sf.jasperreports.engine.贾斯帕Report对象。

(6)Class net.sf.jasper.engine.JasperFillManager 

    这一个类用来落到实处报表的数码填充。报表填写正是为报表的多少查询提供数据库连接,给报表的参数设置值等。填充从前是*.jasper文件,经过填充后就改为了*.jrprint文件--那是贰个可突显可能可导出成报表的文件。这些类提供了比相当多主意来接受各体系型的report design,能够是二个指标、文件、或输入流。它的输出结果也是更仆难数的:file、Object、output Stream。

(7)net.sf.jasperreports.engine.JasperPrintManager

    用于将五个*.jrprint文件完毕打字与印刷。在JapserReports中,大家可以由此那么些类来打字与印刷表格,它含有了独具的打字与印刷效率。它提供了打字与印刷整个文书档案大概部分文书档案、显不突显打字与印刷对话框的艺术。使用那些类能够将贾斯帕Reports文书档案的一页作为二个java.awt.Image对象来显示。

(8)net.sf.jasperreports.engine.JasperExportManager

    这几个管理类对两样来源和见仁见智去处(文件、输入输出流等)的数目提供区别的章程。用于将可突显的报表导出成各类格式的表格文件,比方PDF、HTML、XML和任何的格式。

(9)net.sf.jasperreports.engine.export.JRXxxExporter

    那是一各样的文件导出器,它们用于将*.jrprint文件导出成对应格式的表格文件。比方XSL、PDF、HTML、XML、CSV、RTF、TXT和其余的格式。J途观XlsExporter、JRPdfExporter、JEvoqueXmlExporter、JRCsvExporter、JLX570HtmlExporter、JRTextExporter、JKuga福睿斯tfExporter。

(10)net.sf.jasperreports.engine.JasperRunManager

    这些类能够一向将*.jasper文件导出成各个格式的报表文件,不时候在表格填写进程中大家不指望生成人中学间的net.sf.jasperreports.engine.贾斯帕Print对象,而直接生成大家所要求的文书档案格式,举例:PDF或HTML。

        fillReportToFile:填充报表生成文件,多态函数,无再次来到值,参数为源文件、目的文件和表格参数Map。


5. 表格数据源

    Jasper报表引擎获得来自数据源的数量,能够从数据库,XML文件,对象数组和集纳中的对象来获得。前边我们介绍了利用JasperFillManager来完毕报表的数码填充,具体是由fillReportXXX()方法赢得数据源举行填写。

(1)JDBC数据源

    J陆风X8ResultSetDataSource类关联入一个java.sql.ResultSet对象。那是当报表数量从关全面据库中领到最常用的数据源实现。借使利用java.sql.Connection传递给引擎,它首施夷光行有关的询问,并将该再次来到java.sql.ResultSet中的对象在四个J福睿斯ResultSetDataSource实例。

(2)JavaBean数据源

    JRBeanArrayDataSource类和JRBeanCollectionDataSource类完毕了足以分级包装的JavaBean对象的数组或集结。数组或集结中的每一种对象都将被视为对那种类型的数据源中的贰个笔录。多少个一定的JavaBean属性和对应的表格字段之间的映射是透过命名约定实行。报表字段的称号必需是一律的所钦赐的JavaBeans的正规化JavaBean属性的称呼。

(3)基于Map数据源

    父级应用程序已经储存在内部存款和储蓄器中的java.util.Map对象提供填充数据的落到实处类JRMapArrayDataSource和JRMapCollectionDataSource特别管用。被包裹的数组或集结中的每个映射对象被感到是数据源中的三个设想的记录,各样报表字段的值从映射中选取报表字段名作为键提取。

(4)TableModel的数据源

    好多客户端应用程序的数目以表格格局显得。在众多采纳海南中国广播公司泛的须求是同意顾客打字与印刷该表格情势的告知。完成类JRTableModelDataSource使生成的表格格式的Swing应用程序报告的职务。那么些类包装了二个javax.swing.table.TableModel对象。列在包装的TableModel对象能够通过他们的名字或他们的基于0索引来访谈。

(5)XML数据源

    类JENVISIONXmlDataSource是基于DOM,它应用XPath表达式来挑选XML文书档案数据的数据源的完毕。 XML数据源中的记录是经过X帕特h表明式采取的节点成分表示。字段值是由各类记录使用由字段描述(JPAJEROXML<田野(field)Description>成分)所提供的XPath表明式检索。

(6)CSV数据出自

    JRCsvDataSource 代表了从结构化文本文件中搜索其数额的数据源的贯彻,日常为CSV。字段值是正值选用他们的列索引检索。

(7)XLS数据来自

    J奥德赛XlsDataSource 代表其招来的Excel文件的数额的数据源的兑现。报表字段映射为这么些数据源的贯彻也是依附字段列索引。

(8)空数据来源于

    类JREmptyDataSource,模拟与中间虚构空的笔录给定数据的数据源。它是由顾客分界面的工具来提供基本的报表预览效用,或在特种报告模板,或用于测量检验和调度目标。

   

到此截至,贾斯帕Report报表开拓的整个工艺流程和完结原理已经介绍完了,在摸底了那些之后,前面施行起来心里就要驾驭一些。

    2.    JasperExportManager:导出管理,首要格局如下:


仿照效法文献

[1] JasperReport在线教程.

[2] JasperReports 报表的支出流程.http://topmanopensource.iteye.com/blog/1866879

[3] JasperReport API.

         exportReportToPdfFile:导出PDF文件,多态函数,提供二种方法:从源文件导出到对象文件、从贾斯帕Print导出到指标文件、从源文件流导出目的文件,倘诺枚举的话有9种艺术,无再次来到值。


        exportReportToHtmlFile:导出HTML文件,同上

三。使用javaBean数据源开拓子报表例子如下:

      第一步:创立主报表javaBean(物品)如下(set,get方法省列):

public class DailySales implements Serializable {

private static final long serialVersionUID = 1L;

     private String productNo;//货品代号

     private String productName;//物品名称

     private int number;

     private int money;//货色价格

     private int id;//货色独一标记

     private List dailyZooms;//物品销售地区(子报表)

     public DailySales(String productNo, String productName, int number, int money,

List   dailyZooms) {

this.productNo = productNo;

this.productName = productName;

this.number = number;

this.money = money;

this.dailyZooms = dailyZooms;

}

}

        exportReportToXmlFile:导出XML文件,同上


     3.    JasperPrintManager:打字与印刷管理,首要方法如下:


         printReportToPdfFile:把报表导出成PDF文件,然后自个儿打字与印刷;

   第二步:创设子报表报表javaBean(货品出卖地区)如下(set,get方法省列):

  public class DailyZoom implements Serializable {

    private String name;

    private BigDecimal amounts;

public DailyZoom(String name, BigDecimal amounts) {

this.name = name;

this.amounts = amounts;

}

}

小心:倘使在报表中须要排序则上述类必需兑现Comparable接口,并完成其艺术。

         printReport:直接打字与印刷表格,多态函数,提供文件名、文件流或JasperReport直接开发银行打字与印刷,再次回到值true/false;


         printPages:同printReport,但参数扩展了页数采用。


      4.    贾斯帕CompileManager:编译管理,把.jrxml文件编写翻译成.jasper文件,主要使用的方法仅有一个,compileReportToFile:多态函数,参数.jrxml文件名也许JasperDesign、InputStream和输 出.jasper文件名

 第三步:创设DailySalesFactory工厂类提供集合数据源如下:

public class DailySalesFactory {

private static DailySales[] data = { new DailySales(" 货号 1", " 物品1 ", 1, 1000, getDailyZoom()),

new DailySales(" 货号 2", " 物品 2", 2, 2000, getDailyZoom()),

new DailySales(" 货号 3", " 物品 3", 3, 3000, getDailyZoom()),

new DailySales(" 货号 4", " 物品 4", 4, 4000, getDailyZoom()),

new DailySales(" 货号 5", " 物品 5", 5, 5000, getDailyZoom()),

new DailySales(" 货号 6", " 物品 6", 6, 6000, getDailyZoom()),

new DailySales(" 货号 7", " 物品 7", 7, 7000, getDailyZoom()),

new DailySales(" 货号 8", " 物品 8", 8, 8000, getDailyZoom()),

new DailySales(" 货号 9", " 物品 9", 9, 9000, getDailyZoom()),

new DailySales(" 货号 10", " 物品 10", 10, 10000, getDailyZoom()) };

public static Object[] getBeanArray() {

return data;

}

public static Collection getBeanCollection() {

return Arrays.asList(data);

}

public static List getDailyZoom() {

List dailyZooms = new ArrayList();

dailyZooms.add(new DailyZoom("厦门", new BigDecimal(123.00)));

dailyZooms.add(new DailyZoom("南昌", new BigDecimal(456.00)));

return dailyZooms;

}

}

将上述成立的类设置到ireport3.7.0的classPath目录下(工具》选项》classPath),然后配置javaBean数据源如下:

5.    JPRADORewindableDataSource:定义一个得今后回查看记录的秘诀的接口,首要措施是moveFirst移动到第一行,是JavaBean和TableModel等数据源的上代。


      6.    J奥迪Q5ResultSetDataSource:数据源结果集,实现JMuranoDataSource的类,此外它还扩展了三个属性resultSet结果集和 columnIndexMap列索引Map;主要的办法有getColumnIndex:获取列索引,参数名称filedName,重临索引值

图片 4

      7.    JRAbstractExporter:导出的抽象类,这里将引出导出的其余格式帮衬蕴涵常用的Excel、CSV等,详细完结请看:net.sf.jasperreports.engine.export命名空间。


      8.  JasperReport:定义JasperReport对象,首要情势有getCompileData获取编写翻译音信。

图片 5

     9.  JasperPrint:定义JasperPrint对象,主要方法有getPages获取打字与印刷页数。

专一:(1)pdf粤语设定:首先将iTextAsian.jar設置到classPath下.然後fonts path下勾選iTextAsian.jar路徑和jasperreports-extensions-3.5.3.jar路徑,最後将会呈现普通话的文件Pdf Font name is now deprecated:STSong-Light,pdfExcoding:UniGB-UCS2-V (Chinese Simplified)(V是从上往下显得,H是从左往右突显)。

     10.  JasperManager:通用管理器,首要格局如下:

         (2)上下和左右表格要对其,不然生成的excel会很乱。

         printReport:打字与印刷表格,多态方法,同JasperPrintManager

         (3)Parameters,Fields,Variables差别:Parameters是保存从java表面传进来的参数,Fields是Sql或javaBean数据查询重回的字段,Variables是ireport总括或保存值的。

         fillReport:填充报表,多态方法,同JasperFillManager

         (4)分页:强行分页可径直行使Break控件,程序调节分页(让它每展现20条就自行分页)在该print when expression里面写表达式,如下:new Boolean($V{total}.intValue() % 20 == 0)    total是数据总的数量

         loadReport:装载报表,多态方法,参数为报表名称或InputStream,重临值为JasperReport,loadPrint同此方法

         (5)分組統計的報表.每一分組一頁(在ireport中***group foot1勾選start on a new page).

         runReportToPdf:运营报表,多态方法,参数为jasperReport、parameters、jrDataSource,重回报表字节流byte[]。

    第五步:使用数据源开辟子报表如下:

     11.  JTiguanHibernateAbstractDataSource:Hibernate抽象数据源类,定义系统扶植Hibernate数据源格式。

图片 6

     12.  JRCsvDataSource:CSV数据源

注意:(1)Subreport Expression中$P{SUBREPORT_DIR} "javaBeanReport_subreport1.jasper"中为子报表编写翻译后文件的门道,当中$P{SUBREPORT_DIPRADO} 是从java中传进子报表路线。

     13.  JRAbstractTextDataSource:抽象文本数据源

          (2)Data Source Expression:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{dailyZooms})是应用主报表List集结构造子报表JavaBean数据源。

     14.  JRXmlDataSource:Xml数据源。继承自JRAbstractTextDataSource

第五步:从java中加载ireport做好的模板生成报表如下:

     15.  JRAbstractBeanDataSource:JavaBean抽象数据源

     将集纳调换来javaBeanDataSource:

     16.  JRBeanCollectionDataSource:Bean集结数据源,承接自JRAbstractBeanDataSource

JRBeanCollectionDataSource javaBeanDataSource = new JRBeanCollectionDataSource(results);

     17.  JRBeanArrayDataSource:Bean数组数据源,承继自JRAbstractBeanDataSource

将jrxml编译成jasper:

     18.JRTableModelDataSource:表模型数据源,要求定义表的列和表格的田野(field)对应涉及。

JasperReport jasperReport = JasperCompileManager.compileReport("c:/javaBeanReport.jrxml");

PDF报表导入到本地 

生成JasperPrint对象:

        try {
            JDBCConnection db = new JDBCConnection();
            //报表jasper文件路径
            String jasperSource="H:/jasperreport/lineUser.jasper";

            Map<String, Object> param=new HashMap<String, Object>();

            param.put("id", 1);// 传递参数(参数类型);
            //param.put("sql", "sql");*/ //亦可把整条sql语句作为参数

            //标准流程:生成中间的print对象,然后再导出成其他格式。
            //装载对象
            JasperReport report = (JasperReport) JRLoader
.loadObjectFromLocation(jasperSource);
            //填充数据
            JasperPrint print = JasperFillManager.fillReport(report,param, db
                    .getConnection());
            //导出成pdf(需要包含iTextAsian.jar包);
            //直接将装填过程生成的文档导出到pdf格式
            JasperExportManager.exportReportToPdfFile(print, "H:/jasperreport/line.pdf");
        } catch (JRException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

     JasperPrint jasperPrint = JasperFillManager.fillReport

(jasperReport,parameters,  javaBeanDataSource);parameters为要传如的参数Map对象

生成pdf流对象:JasperExportManager.exportReportToPdfStream(jasperPrint, stream);

调用ireport中JasperViewer查看pdf

JasperViewer jrview = new JasperViewer(jasperPrint);

jrview.setPreferredSize(new Dimension(200, 100));

jrview.setVisible(true);

    生成excel代码如下:

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);

exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, streamExcel);

exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,  Boolean.FALSE);

exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);

exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);

exporter.exportReport();

    子报表需注意的java代码:

Map parameters = new HashMap();

parameters.put("SUBREPORT_DIR", "C:/Documents and Settings/user/桌面/");

     假若有子报表必得从java端将SUBREPORT_DI奥迪Q7参数字传送给ireport

    大量数量内部存款和储蓄器管理(磁盘创立目录来优化内部存款和储蓄器):

JRFileVirtualizer对象如JRFileVirtualizer  virtualizer = new JRFileVirtualizer(2, "tmp");

接下来数据填充时传二个参数就能够如:

Map parameters = new HashMap();

parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

    第六步:显示效果如下:

图片 7


  四:与与struts2.0整合(导入struts2-jasperreports-plugin-2.0.12.jar包)

          default">

/reports/demoReport.jasper

list

PDF

map

location - 提供利用iReport制作编写翻译好的表格文件。

dataSource - 数据源

format - 报表输出格式

reportParameters - 报表参数

  五:常见的极其:

       (1)spring jasperReport生成PDF格式的表格时报

    java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlending(Z)V异常

    原因:iText.jar文件过旧,将之改为2.1版就没事了。

(2)java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException异常 

原因:未有导入 groovy-all.jar 包,导入 groovy-all.jar 包就能够了。 

(3)Excle 应用: 

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCellStyle 

并发上述荒唐提示出席 poi-3.2-FINAL-20101019.jar 

(4)net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 

pdfFontName   : STSong-Light 

pdfEncoding   : UniGB-UCS2-H 

isPdfEmbedded : false 

并发上述失实提示参加 

iTextAsian.jar 

(5)java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester 

出现上述失实提醒出席 commons-digester-1.7.jar   iReport/lib  作用简述:剖判 xml 文件; 

(6)java.lang.NoClassDefFoundError: org/apache/commons/collections/ArrayStack 出现上述荒唐提醒到场 

commons-beanutils-1.7.jar    iReport/lib 

(7)java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap 出现上述失实提醒参加 

commons-collections-2.1.jar   iReport/lib 

(8)

异常:Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components 

缓慢解决方法.查看是还是不是在工程目录增加了表面jar [jasperreports-X.X.X.jar],[jasperreports-X.X.X-javaflow.jar]

借使有同不寻常候增多了这四个jar.移除[jasperreports-3.5.3-javaflow.jar] 则可.

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:JasperReport制作报表二,ireport与jasperreports开发总结

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。