JAVA里面有没有组件可以直接连接打印机打印数据

作者&投稿:朝方 (若有异议请与网页底部的电邮联系)
java如何连接打印机并打印从数据库里读出的数据~

可以先将数据写入excel文件,再打印excel文件就可以了。写入excel很简单的,直接百度一下就可以了。一般可以用jxl或者用apache下的POI。

打印指定页号的具体文本内容*/
private void drawCurrentPageText(Graphics2D g2, PageFormat pf, int page) {
String s = getDrawText(printStr)[page]; //获取当前页的待打印文本内容
//获取默认字体及相应的尺寸
FontRenderContext context = g2.getFontRenderContext();
Font f = area.getFont();
String drawText;
float ascent = 16; //给定字符点阵
int k, i = f.getSize(), lines = 0;
while(s.length() > 0 && lines < 54) //每页限定在54行以内
{


JasperReports与iReport 简介
简介 JasperReports是一款开源的报表打印组件,是开源代码组织sf.net中的一个java报表打印工程,可以以PDF, HTML或XML等多种形式产生报表,支持分页打印,并且可以制作各种类型的图表。Jasperreport是按照一个预定义的xml文档来组织报表的数据,这些数据来源多样,包括关系数据库(通过配置JDBC连接)、java容器对象(collection和arrays)。要完成报表的填充,必须先完成用于报表的xml文件,其过程是先产生报表设计对象,再序列化该对象,存储在磁盘或者网络,用于产生特定应用的表格数据。事实上,表单的设计过程就是用定义于xml文件中的java表达式来表现报表的设计。编辑过程中会有各种保证数据一致性的验证,最终会产生相关数据文档或填充数据的准备。 iReport也是开源组织sf.net中的一款免费软件,其主要作用是以可视化的方式升级生成JasperReport所使用的报表格式文件,因为JasperReport本身没有提供很好的可视化报表设计工具,iReport正好弥补了这个缺陷,因此我们常常将这两个工具结合起来使用。 JasperReports可以在这个地址得到: http://jasperreports.sourceforge.net/ iReport 可以在这个地址得到: http://ireport.sourceforge.net/ iReport的使用 iReport的安装 安装iReport首先需要在本机安装JDK,并对环境进行配置,最新版的JDK可以从http://www.sun.com 处下载并安装,然后配置windows环境变量,在path后面加入“;java的安装目录”,新建环境变量 JAVA_HOME :“java的安装目录” CLASSPATH:“java的安装目录\bin” 如果已经安装过JDK,则可以跳过这些步骤。然后从iReport的站点下载最新的版本的iReport,解压iReport在任意目录,解压后的文件里面有一个iReport.bat,通过双击,过大约30秒钟如果可以弹出iReport的主窗体即表明你的系统已经可以运行iReport了,如果不能弹出主窗体,一般是因为JDK没有正确被安装。在iReport中配置数据库使用iReport的第一步是配置数据库连接,选择菜单“资料来源/连接资料来源”,打开如下的对话框, 点击“New”,打开如下对话框,可以创建数据连接, 我们以创建JDBC数据源为例,在“Type of connection / datasource”列表中,选择“Database.JDBC.connection”,在“Name”中,为创建的新的连接取一个需要的名字,在JDBC Driver中,选择一个驱动,我们以Oracle为例,选择“oracle.jdbc.driver.OracleDriver”,在JDBC URL中输入JDBC连接,例如:“jdbc:oracle:thin:@localhost:1521:TANGO”,同时请在Username和Password中输入连接数据库的用户和密码。注意一点OracleJDBC的包必须在环境变量的CLASS_PATH中配置。全都创建好后,点击“Test”可以进行对数据库连接的测试。建立连接后,就可以对数据表进行查询,选择菜单“资料来源/报表查询”,打开如下对话框: 在“Report SQL query”页中,可以输入任意的sql数据来得到数据,当输完完整的sql语句后,iReport自动将所有字段列表列出,这些字段就是可以在报表制作过程中可以使用的变量。另外需要注意的是:当我们创建了多个数据源的时候,需要设定一个当前的数据源,选择菜单:“设定/设置当前数据源”,打开如下对话框: 可以在所有建立的数据源中设置当前使用的数据源。从java容器获得数据通过JDBC获得数据非常方便,但我们通常不会在设计期就确定完整的sql语句,通常我们在运行期都需要构造一些动态的sql,当然,我们可以通过编程的方式来构造sql并传递给iReport,但是复杂的sql语句不便于维护,也容易出错。JasperReports允许从java容器中获得数据,首先告诉iReport,java容器类的路径,选择菜单:“工具/classpath”,如图: 设置完路径后,再次选择菜单“资料来源/报表查询”,到“JavaBean Datasource”页,在Class Name中输入容器类的全路径,如下图: 点击“Read javabeans attributes”,容器中的字段就全部被读取了出来。至此为止,我们已经可以开始制作报表了。开始使用iReport iReport的开发界面和我们熟悉的delphi著名插件quickreport比较相似,整个页面由若干个band组成,每个band实现不同的显示方式。界面如下: 新建报表单击工具栏的第一个按钮“New Report”,或者通过菜单“报表/新增”进入创建报表菜单,如下图: 在报表名称栏内给创建的报表取个名字,然后是定义纸张的大小,iReport提供了多种预设尺寸,当然也可以选择自定义的页面尺寸,并提供两种定位方式,也即横向和竖向。在对话框的下半页,还可以设置页边距,列等等。当都设置完成,点击“OK”,完成新建动作。报表结构创建了一个新的报表后,我们来看看报表的结构。一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。 Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。 pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。在每页头都会打印一遍 columnHeader:这里是放置列的名称,记住不是列数据。 Detial:放置需要循环的数据,比如销售记录数据。 columnFooter:放置列级别的统计计算值或是列的说明。 pageFooter:放置页级别的统计值或是页的说明。 Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。 groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。 Groupfooter:放置组的统计或是说明。报表的动态对象变量、参数、字段在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,所以我们还是要先介绍这些对象的使用和意义:字段(Fields):来自数据库,或是java容器对象。这些内容是报表显示的主体内容,语法为$F{ filedsName }。参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供Where语句的条件值,那么就可以使用参数(Parameters)。语法为$P{ parameterName },可以给报表提供多个参数,通过一个HashMap传入。使用参数前,参数必须在iReport中进行配置,如,我们需要在打印时得到打印操作人,我们创建一个参数打印人:printOperator。选择菜单“预览——报表参数”,打开如下对话框: 在参数页面,点击“新增”按钮,继续打开如下新增参数对话框: 在“Parameter name”内,填入参数名称:“printOperator”,在“Paramenter class type”选择框中,选择参数的类型,我们这里选择“java.lang.String”,在“Default value expression”中填入当传入的值缺失时的缺省值,因为iReport是纯java语言开发,因此支持任何java语句。在“Paramenter description”中可以对该参数进行一些描述。点击“OK”完成参数的创建。下面给出简单的程序调用实例: HashMap map = new HashMap(); Map.put(“printOperator”,”陈宁”); JasperFillManager.fillReport(jasperReport,map,ds); 变量(Variables):这是报表中一些逻辑运算的表现,比如统计值(求和,最大值,最小值等等)。语法为$V{ variablesName },例如我们要对定单金额进行求和,假设定单金额的数据库字段为amt,我们现在创建变量名为totalAmt的对定单金额进行汇总的变量,点击菜单“预览/报表变量”,打开如下对话框: 我们看到iReport已经为我们预先定义了五个有用的变量,供我们使用,具体含义如下: • $V{REPORT_COUNT}: 报表处理的记录笔数 • $V{PAGE_NUMBER}: 打印时的页码 • $V{PAGE_COUNT}: 本页处理的记录笔数 • $V{COLUMN_NUMBER}: 报表的直栏数目 • $V{COLUMN_COUNT}: 本栏的处理笔数 • $V{群组名_COUNT}: 群组Band的处理笔数,建立群组时会自动产生的变量其中最后一个变量是根据分组情况自动生成的。我们现在新增一个自己定义的变量,点击“新增”,打开新增变量对话框: 在“Variable name”中,输入变量名:“totalAmt”,在“variable class type”中选择变量的类型“java.math.BigDecimal”,在“Calculation type”中选择计算的类型,这里是求和“Sum”,在“Variable expression”中输入变量的表达式,我们这里是取数据库中的字段amt,所以写成“$F{amt}”,请注意。当我们正确的配置了数据来源后,当我们输入的表达式正确,那么显示的颜色是绿色的的,当不能正确写对表达式的时候,是如图所示的蓝色。然后我们在“initial value expression”中输入初始化的值,这里同样输入java语句:“new java.math.BigDecimal(0)”。点击“OK”,完成参数的设置。在报表页面放置元素 iReport的工具栏提供了丰富的元素,从简单的内容到包括图形,分组报表都支持。我们主要介绍两类,一类为静态文本,一类为动态文本。这两个工具按钮如下: 点击“T”的工具按钮,打开添加“静态文本”的对话框。 他的用法比较简单,有一些计算机使用经验的人都能看懂,就不在这里介绍了。这里只说一点:要显示的内容是在Static Text页面中输入,在Print when expression中,可以接受返回类型为Boolean的java表达式,当返回Boolean.TRUE,才会打印该静态文本,当返回为Boolean.FALSE则不打印,在本文后面会介绍利用这个特性打印黑白交替的行显示效果。我们再看看动态文本,点击“F”,打开如下对话框: 动态与静态文本大致类似,动态文本在“Text Field”中接受表达式,在“Textfield expression”中,输入动态表达式“$F{s_data_1}”,如图,绿色代表输入正确。在Pattern中,还可以输入数据显示的格式。制作报表有了上面的基本知识,我们就可以开始制作报表了。我在制作报表中,考虑了以下的思路。首先,取数据通过java容器,而不是直接连接数据库,这是因为我们制作的报表通常都比较复杂,很难直接通过一个简单的sql语句来实现,就算我们可以写一个复杂的select语句来实现一个报表的查询,但是对于以后的维护和排错也是相当困难的,因此不建议这样的做法。从另一个角度考虑,报表的很多查询条件是根据用户的输入来动态的创建的,我们在后台对数据进行整理和加工都会使程序的调试和实现变得简单。我创建了数据容器类:ReportBaseObject,非常简单,部分代码如下: public class ReportBaseObject { private String s_data_1; private String s_data_2; private String s_data_3; …… private String s_data_20; private BigDecimal b_data_1; private BigDecimal b_data_2; private BigDecimal b_data_3; …… private BigDecimal b_data_20; private Date d_data_1; private Date d_data_2; private Date d_data_3; …… private Date d_data_10; private Integer i_data_1; …… private Integer i_data_10; public BigDecimal getB_data_1() { return b_data_1; } public void setB_data_1(BigDecimal b_data_1) { this.b_data_1 = b_data_1; } …… public Date getD_data_1() { return d_data_1; } public void setD_data_1(Date d_data_1) { this.d_data_1 = d_data_1; } …… public Integer getI_data_1() { return i_data_1; } public void setI_data_1(Integer i_data_1) { this.i_data_1 = i_data_1; } …… public String getS_data_1() { return s_data_1; } public void setS_data_1(String s_data_1) { this.s_data_1 = s_data_1; } …… } 这是一个通用的数据容器,容器中定义了20个字符类型的字段,20个数字类型的字段,10个日期和10个整型,这个容器对于任何报表都适合,这样做是基于以下考虑。我把报表制作分为两个部分,第一部分是用iReport制作报表界面,第二部分在后台根据用户传入条件取得报表需要的数据。而第一部分可以由项目人员在现场制作后后期进行修改,而第二部分由开发人员完成,因此要求这两部分的工作可以分离,通过提供一个通用对象,我们可以实现这一目的。工程人员在现场和客户洽谈需求,并在没有数据的情况下,开始制作报表界面,他们所要做的就是用一张表格列出他们需要的数据的含义:如: baseObject 对应字段 说明 报表编号:01_001 S_data_1 单号 S_data_2 单据类型 D_data_1 要货日期 D_data_2 批准时间 B_data_1 应付金额 B_data_2 已付金额 在与用户确认了界面后,工程人员将表格传递给开发人员,开发人员就根据表格所标注的字段意义给容器填写数据。以下是我画的报表截图: 显示不同的背景如下图所示,我们希望打印出灰白相间的行效果,可以利用上文提到的“print when expresssion”属性来实现,具体做法有两种: 在同一列上放相同字段的TextField,一个不设背景(预设为白色),另一个设背景(淡黄色) 白色背景的Print when expression输入new Boolean((($V{PAGE_COUNT}.intValue()) % 2)==0) 灰色背景的Print when expression输入new Boolean((($V{PAGE_COUNT}.intValue()) % 2)==1) 另一个方法是先在Detail Band上拉一个矩形,设其背景为淡黄色,设其Print when expression为new Boolean((($V{PAGE_COUNT}.intValue()) % 2)==1),意即奇数列时才要印出这个淡黄底色的矩形。再设其前景为白色,使矩形边界的黑框消失。在矩形上放需要的Text Field,并将其Transparent打勾,意即此Text field是透明的。

调用IE内置打印组件完成web打印方案及例程
重点:
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT>
</OBJECT>
<input type=button value=打印 onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
<input type=button value=直接打印 onclick="document.all.WebBrowser.ExecWB(6,6)" class="NOPRINT">
<input type=button value=页面设置 onclick="document.all.WebBrowser.ExecWB(8,1)" class="NOPRINT">
<input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT">

注意:
1、CSS对打印的控制:
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>

Noprint样式可以使页面上的打印按钮等不出现在打印页面上,这一点非常重要,因为它可以用最少的代码完成最需要的功能

PageNext样式可以设置分页,在需要分页的地方<div class="PageNext"></div>就OK了,呵呵

2、表格线粗细的设置,更是通过样式表:

<style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000;

border-collapse:collapse;
}
</style>

或者:

<style>
.TdCs1 {
border:solid windowtext 1.0pt;
}
.TdCs2 {
border:solid windowtext 1.0pt; border-left:none;
}
.TdCs3 {
border-top:none;
border-left:solid windowtext 1.0pt;
border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;
}
.TdCs4 {
border-top:none;
border-left:none;
border-bottom:solid windowtext 1.0pt;
border-right:solid windowtext 1.0pt;
}
.underline {
border-top-style: none;
border-right-style: none;
border-bottom-style: solid;
border-left-style: none;
border-bottom-color: #000000;
}
</style>

很多种打印的方式了,你走走脑子上网艘艘,没有找不到的
给你个打印excel例子,跟上面的不同
下载一个叫jcom的lib,鬼子做的
把包里的jcom.jar放到classpath,把jcom.dll放到java_home/bin下面
public class JCOM {

public boolean print(String fname) {
ReleaseManager rm = new ReleaseManager();
try {
ExcelApplication excel = new ExcelApplication(rm);

ExcelWorkbooks xlBooks = excel.Workbooks();
ExcelWorkbook xlBook = xlBooks.Open(fname);
ExcelWorksheet xlSheet = excel.ActiveSheet();

xlSheet.PrintOut();

xlBook.Close(false, null, false);
excel.Quit();
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
rm.release();
}
return true;
}

public static void main(String[] args) {
JCOM test = new JCOM();

try {
test.print("c:\\test.xls");
} catch (Exception e) {
e.printStackTrace();
}
}
}


跪求ava拯救模式第三关的秘诀!!!
然后分成2组 ,一组开1一组开2 , 这样就算开错了的话也能很快的把真的那个开开 ,就可以很快的过去了 不至于被出来的很多怪杀死。14F 到这里就开始就伊娃了 , 这里也是分2组 , 一组人去找伊娃 ,找伊娃是有技巧的 , 先开2个门 , 把怪清完 , 然后再开门的话你会发现怪很少很少了...

ava生存模式回合战BOSS怎么杀
...山谷?这个我好像记得,呵呵因为我以前是那个红到发紫的生存|红人组战队里的成员,大概细节我还是记得的,首先到打到小BOSS那里,然后派一个人去干了小BOSS,在他干小BOSS的时候先走到左墙角,一个人靠你右边,一个人靠你前面,在墙角形成一个想三角形的,你左边和后面都是石墙,前面和右面都有...

AvA我4月最后一次玩,现在更新了什么东西?
现在是1.1.7.8版本 更新内容为 出现新的战车地图:黑鹰坠落 出现新枪F1:血狮 PP19 F2:雷明顿R4 F3:琉璃HK417 手枪:红莲双舞 Beretta92 近战武器:劳动扳手 帽子:蓝色、黑色安全帽 F1,F2,F3强化1、2、3 频道大厅、游戏画面可以手动设置成窗口模式 求采纳!!!

“AVA”代表什么?
使得理解和交流更为方便。它在英语中的应用主要集中在体育术语和组织的名称上,例如在比赛名称、俱乐部标识或者相关文档中。这个缩写词的使用是基于网络资源的共享,主要用于学习和信息传递,版权归属原作者。请注意,尽管"AVA" 有固定的含义,但在使用时仍需确保信息的准确性,以避免误解或混淆。

AVA生存模式怎么过防御关?
首先,四个人的配合要好,最好有YY,可以第一时间得到支援 其次,选好防守的地点;卡车上面、地图的夹角处都可以的 本人自己觉得,两人一组分散开打比较好,但是两组之间的距离不要太远,可以在第一时间互相支援到最好 以上是本人的想法,希望可以给加分,谢谢 ...

Ava520点评:让你的生活更加便利的全新体验
但是,正如任何一款应用程序一样,Ava520也存在着一些缺点和不足之处。例如,作为一款集成多种功能的软件,Ava520并不像单一功能的应用软件那样操作和使用起来那样简单明了。有些人可能需要花费一些时间才能熟练掌握其操作方法和使用技巧。此外,作为一款集沟通协作和数据处理功能于一身的软件,Ava520的功能...

ava 配置
CPU I3-2120=745元 主板 技嘉B75 DV3=440元 内存 金士顿4G*2-8G=250元 硬盘 希捷1T酷鱼=552元 显卡 影驰GTX550TI=730元 电源 安钛克450P-450W=270元 机箱 酷冷至尊 杀破狼RC-K500 =280元 光驱 先锋24X闪雕刻录机光驱DVR-220CHV串口=133元 音箱 漫步者 R101V =113元 总价===3513元 性能很...

为什么 我下载的AVA文件 安装不了
还不行的话,右键点击X盘(X代表磁盘分区,如D盘、E盘...),“属性”——“安全”——;选择“组或用户名称”里当前的登陆用户名,点“高级”——“所有者”——“目前该项目的所有者”栏目会显示“S-1-5-21-147001333-1580818891-1708537768-500”这一串;点选‘名称’里的用户名,勾选“替换...

AVA里TPG 原形是什么枪 就是能找到百度百科的那种
比赛级的枪管前面通常安装有高效的制退器(颇为JS的新狙鸣不平啊,人家的似乎更夸张哦!)另外7.62×51和.338这两种口径还有带消音器的短枪管可选。另外值得一提的是,枪管都是可以快速更换的。 ——这个枪最强的地方是这么多的部件都是活动的、可以拆下来的,居然精度还那么高!编辑本段AVA中的...

请问一下AVA 战地之王的技能获得与快速赚取GP的问题
1 各个兵种的技能只能在使用各个兵种的情况下进行,主要还是耗时间,一般来说少尉1的时候差不多三兵种技能全满了 2 没有那回事啦,现在每天都有四个任务的,做任务经验和GP来得都快 另外可以刷车,就是6人战车房,3V3,轮流炸车和修车 还有就是有个新手引导,做完好像是给3WGP还是多少记不太清了 ...

察雅县18279722820: e680g如何让JAVA程序不问是否访问网络直接连接啊
甫园匹维: 1.在操作菜单里找应用软件接入 2.在应用软件接入里找到自动启动 3.在自动启动里选仅第一次询问或不允许 4.然后从新进入

察雅县18279722820: java中,哪种组件是可以往窗体里直接添加的? -
甫园匹维: 好多都行,Button ,有javaAPI吗,自己找 Frame 这个类或者JFrame.组件在包java.awt或者java.swing中,自己找找

察雅县18279722820: java udp通信中为什么两用户可以不用通过服务器而直接连接通信 -
甫园匹维: 1.在局域网里,互相知道对方内网地址当然可以通信;2.在广域网中,若两台机器都有外网地址(都是专线连接internet),互相知道ip地址也是可以通信的;3.但实际情况中,两台电脑一般分属在不同的局域网中且没有专门的外网ip,必须通过服务器进行通信,服务器此时相当于一个中间人,为两台电脑建立通信连接.

察雅县18279722820: java 连接数据库的第三方软件有哪些 -
甫园匹维: hibernate ,proxool 数据连接池.如果没有直接性能要求,可以直接用JDBC.

察雅县18279722820: java编写需要用到mysql 写完直接编译就可以用吗 -
甫园匹维: 首先你要分清楚,JAVA和mysql的关系.JAVA和mysql之间除了在代码上有连接外,JAVA本身并没有会包含mysql,所以说只你的代码编译完成后,如果软件有带mysql,能连接没问题就可以.关于写插件,你要分清楚你要括展的软件是否支持插件括展,像eclipse就是典型的支支插件括展的软件.总结来说,你要给软件写插件,你连要给写插件的软件有没有数据库都搞不清楚怎么玩.有数据库你也得有帐号密码能连得上.

察雅县18279722820: 用java怎么连接没有用户名和密码的SQL数据库 -
甫园匹维: 用java怎么连接没有用户名和密码的SQL数据库: 去看连接数据库的配置文件,具体要看你采用的哪种连接模式,配置文件可能为.properties 或.xml 也可能直接写在.java里面

察雅县18279722820: java程序能不能在没装JDK的电脑上运行 -
甫园匹维: access直接有直接连接的方式 不通过数据源 你可以去搜索下一般使用java -jar xx.jar 就可以运行jar文件了exe4j就可以把jar文件转换成exe文件

察雅县18279722820: java的JDK里有没有数据库连接的驱动包? -
甫园匹维: 看你怎么连了...如果是纯java的驱动程序 一般都要自己去下载 但是可以选择 JDBC-ODBC桥来连接 那就不用自己下载驱动程序了 因为windows一般都自带 ODBC驱动程序 而JDK上又自带JDBC驱动程序 ...所以用这种方式连接就不需要自己手动安装驱动程序......纯的JAVA驱动程序 有些平台上也已经集成了..只不过没有ODBC那么全面而已

察雅县18279722820: java中有没有组件数组 -
甫园匹维: 有组件数组,格式跟普通数组差不多.例如:JButton[] button = new JButton[10]; 就是定义了10个按钮,但是需要为每一个创建对象.for(JButton b:button) b = new JButton(); 两个代码连起来就创建了10个按钮.其他的组件都是一样的.

察雅县18279722820: 在java中,Swing中的控件可以直接显示吗?怎么显示,加以说明 -
甫园匹维: 不会直接显示.以frame为例,JFrame frame = new JFrame();frame.setBounds(0,0,100,100),frame.setVisible(true); 组件要显示,要做到三点,第一,有容器加载它;第二,要有位置大小,第三要设置可见.若加载组件的容器被设置为可见,则这个组件不需要设置可见,磨人可见

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网