- 浏览: 82743 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (110)
- java (110)
- Comparing PHP Frameworks ( Symfony (1)
- CakePHP (1)
- YII and CodeIgniter) (1)
- spring定时任务的实现 (1)
- 获得一个节点对象的节点类型 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- 常用命令收集(系统设置) (1)
- openlayers 应用Google图层你必须做的 (1)
- Shell Sort in Java (1)
- Java网络编程 (1)
- 删除more里面的Edit (1)
- Android颜色选择器 (1)
- Linux安全配置步骤简述 (1)
- 职场官话 (1)
- TOMCAT常用优化 (1)
- 2008 ==> 2009 (1)
- 01_Android介绍 (1)
- HTML特殊字符 (1)
- 终于完成一个最重要的任务——找工作 (1)
- java 加密算法 base64 (1)
- 《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读 (1)
- 由ORM框架设计看到微软与苹果的最大差别 (1)
- 通过发微博控制电脑的程序源码 (1)
- flex入门 (1)
- JS合并单元格、JavaScript单元格合并 (1)
- 各种常用编译开关位置 (1)
- 单一入口应用程序概述 (1)
- [转]Cocoa中回调delegate的方法时判断delegate是否已经被释放 (1)
- java简单的通用ajax分页方法 (1)
- /dev/shm放/tmp (1)
- Java中HashMap排序和遍历 . (1)
- Chrome+SwitchySharp+myentunnel+SSH (1)
- LINUX-网卡Bond (1)
最新评论
-
ken890202:
java简单的通用ajax分页方法 -
hanmiao:
真够乱的,什么都看不清。
Linux安全配置步骤简述 -
houxinyou:
说一下我自己的想法.苹果只是做一款相同的东西,然后是完善.有什 ...
由ORM框架设计看到微软与苹果的最大差别 -
delphixp:
微软技术方案很多?。。。。Java 系统笑而不语。。。
由ORM框架设计看到微软与苹果的最大差别 -
huchiwei:
同意楼上说法。这代码....怎么看!!
web应用dao层的开发经验小结
以前很少做报表, 项目中的有报表的需求,暂时还只能用了一些简单的css,js,控制,不过功能很有限.
收集一下资料.做了一个简单的, 但应用到项目中,还要断续学习一下.
birt是一个eclipse-based开放源代码报表系统。它主要是用在基于java与j2ee的web应用程序上。birt主要由两部分组成:一个是基于eclipse的报表设计和一个可以加到你应用服务的运行期组件。birt同时也提供一个图形报表制作引擎。
birt home :http://www.eclipse.org/birt/phoenix/
birt环境及下载:http://download.eclipse.org/birt/downloads
birt教程:http://www.eclipse.org/birt/phoenix/tutorial/
eclipse技术论坛:http://www.eclipseworld.org/bbs/
birt例子演示:http://www.eclipse.org/birt/phoenix/examples/
http://download3.eclipse.org/birt/downloads/examples/misc/birt/birt_demo_camv3.html
http://download3.eclipse.org/birt/downloads/demos/myfirstreport.html
birt使用小结
ide: birt-report-designer-all-in-one-2.1.2 (建议初学者下载,下载后是一个eclipse,birt已经装好了,方便)
runtime:birt-runtime-2.1.2
jdk: jdk1.5.0_02
和现有项目有两种结合方式。
其一:直接使用birt_runtime_2.1.2中的webviewerexample。
1. 将其发布到c:\jakarta-tomcat-5.0.28\webapps目录下,并将其更改名称为birtapp。
2. 在birtapp \web-inf\platform\plugins\com.lowagie.itext目录下新建文件夹lib,并将itext-1.3.jar和itextasian.jar拷入其中。
3. 将已完成的报表,比如test.rptdesign放到birtapp的根目录下,即可通过
http://localhost:8080/birt/frameset?__report=test.rptdesign(相对路径)
或者
http://localhost:8080/birt/frameset?__report=c:/jakarta-tomcat-5.0.28/webapps/birt/test.rptdesign(绝对路径)
来访问。
若报表设置以后参数,则只需在上述url后拼接参数及值即可。
eg: http://localhost:8080/birt/frameset?__report=test.rptdesign&sample=my+parameter
其二:在我们的程序中使用birt提供的report engine api来调用报表并展现报表。
1. 新建web项目webrpt。
2. 在webrpt的web模块下的web-inf目录中新建文件夹lib,并将birt-runtime-2_1_2\reportengine\lib下的所有文件拷入其中。
3. 如上,同样在web-inf目录中新建文件夹platform,并将birt-runtime-2_1_2\reportengine下的plugins和configuration拷入其中。
4. 将itext-1.3.jar和itextasian.jar拷入platform\plugins\com.lowagie.itext文件夹的lib目录中(此处如果没有该目录,新建之),亦或者将所述jar包拷入web-inf\lib目录下也可。
5. 在webrpt的web模块的根目录下新建images和reports文件夹。其中reports文件夹中放
已开发完成的报表文件。
6. 当然所使用的数据库驱动也要放在lib文件夹下。
7. 使用report engine api开发调用及展示报表的相关程序。代码如下:
webreport.java
package com.lisa;
import java.io.ioexception;
import java.io.printwriter;
import java.util.hashmap;
import java.util.logging.level;
import java.util.logging.logger;
import javax.servlet.servletcontext;
import javax.servlet.servletexception;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.eclipse.birt.report.engine.api.engineconstants;
import org.eclipse.birt.report.engine.api.htmlrendercontext;
import org.eclipse.birt.report.engine.api.htmlrenderoption;
import org.eclipse.birt.report.engine.api.ireportrunnable;
import org.eclipse.birt.report.engine.api.irunandrendertask;
import org.eclipse.birt.report.engine.api.ireportengine;
public class webreport extends httpservlet {
/**
*
*/
private static final long serialversionuid = 1l;
/**
* constructor of the object.
*/
private ireportengine birtreportengine = null;
protected static logger logger = logger.getlogger( “org.eclipse.birt” );
public webreport() {
super();
}
/**
* destruction of the servlet.
*/
public void destroy() {
super.destroy();
birtengine.destroybirtengine();
}
/**
* the doget method of the servlet.
*
*/
public void doget(httpservletrequest req, httpservletresponse resp)
throws servletexception, ioexception {
system.out.println(”doget…………….”);
//get report name and launch the engine
//resp.setcontenttype(”text/html”);
resp.setcontenttype( “application/pdf” );
resp.setheader (”content-disposition”,”inline; filename=test.pdf”);
string reportname = req.getparameter(”reportname”);
system.out.println(”reportname:::”+reportname);
servletcontext sc = req.getsession().getservletcontext();
this.birtreportengine = birtengine.getbirtengine(sc);
//setup image directory
htmlrendercontext rendercontext = new htmlrendercontext();
rendercontext.setbaseimageurl(req.getcontextpath()+”/images”);
rendercontext.setimagedirectory(sc.getrealpath(”/images”));
logger.log( level.fine, “image directory ” + sc.getrealpath(”/images”));
system.out.println(”stdout image directory ” + sc.getrealpath(”/images”));
hashmap contextmap = new hashmap();
contextmap.put( engineconstants.appcontext_html_render_context, rendercontext );
ireportrunnable design;
try
{
//open report design
design = birtreportengine.openreportdesign( sc.getrealpath(”/reports”)+”/”+reportname );
//create task to run and render report
irunandrendertask task = birtreportengine.createrunandrendertask( design );
task.setappcontext( contextmap );
hashmap parammap=new hashmap();
parammap.put(”param”,”%”);
parammap.put(”sample”, “lisa ok”);
task.setparametervalues(parammap);
//set output options
htmlrenderoption options = new htmlrenderoption();
//options.setoutputformat(htmlrenderoption.output_format_html);
options.setoutputformat(htmlrenderoption.output_format_pdf);
options.setoutputstream(resp.getoutputstream());
task.setrenderoption(options);
//run report
task.run();
task.close();
}catch (exception e){
e.printstacktrace();
throw new servletexception( e );
}
}
/**
* the dopost method of the servlet.
*
*/
public void dopost(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception {
response.setcontenttype(”text/html”);
printwriter out = response.getwriter();
out.println(”“);
out.println(”“);
out.println(” “);
out.println(” “);
out.println(” post does nothing”);
out.println(” “);
out.println(”“);
out.flush();
out.close();
}
/**
* initialization of the servlet.
*
* @throws servletexception if an error occure
*/
public void init() throws servletexception {
system.out.println(”init……………….”);
birtengine.initbirtconfig();
}
}
birtengine.java
package com.lisa;
import java.io.inputstream;
import java.io.ioexception;
import java.util.properties;
import java.util.logging.level;
import org.eclipse.birt.report.engine.api.engineconfig;
import org.eclipse.birt.report.engine.api.ireportengine;
import javax.servlet.*;
import org.eclipse.birt.core.framework.platformse
rvletcontext;
import org.eclipse.birt.core.framework.iplatformcontext;
import org.eclipse.birt.core.framework.platform;
import org.eclipse.birt.core.exception.birtexception;
import org.eclipse.birt.report.engine.api.ireportenginefactory;
public class birtengine {
private static ireportengine birtengine = null;
private static properties configprops = new properties();
private final static string configfile = “com/lisa/birtconfig.properties”;
public static synchronized void initbirtconfig() {
loadengineprops();
}
public static synchronized ireportengine getbirtengine(servletcontext sc) {
if (birtengine == null)
{
engineconfig config = new engineconfig();
if( configprops != null){
string loglevel = configprops.getproperty(”loglevel”);
level level = level.off;
if (”severe”.equalsignorecase(loglevel))
{
level = level.severe;
} else if (”warning”.equalsignorecase(loglevel))
{
level = level.warning;
} else if (”info”.equalsignorecase(loglevel))
{
level = level.info;
} else if (”config”.equalsignorecase(loglevel))
{
level = level.config;
} else if (”fine”.equalsignorecase(loglevel))
{
level = level.fine;
} else if (”finer”.equalsignorecase(loglevel))
{
level = level.finer;
} else if (”finest”.equalsignorecase(loglevel))
{
level = level.finest;
} else if (”off”.equalsignorecase(loglevel))
{
level = level.off;
}
config.setlogconfig(configprops.getproperty(”logdirectory”), level);
}
config.setenginehome(”");
iplatformcontext context = new platformservletcontext( sc );
config.setplatformcontext( context );
try
{
platform.startup( config );
}
catch ( birtexception e )
{
e.printstacktrace( );
}
ireportenginefactory factory = (ireportenginefactory) platform
.createfactoryobject( ireportenginefactory.extension_report_engine_factory );
birtengine = factory.createreportengine( config );
}
return birtengine;
}
public static synchronized void destroybirtengine() {
if (birtengine == null) {
return;
}
birtengine.shutdown();
platform.shutdown();
birtengine = null;
}
public object clone() throws clonenotsupportedexception {
throw new clonenotsupportedexception();
}
private static void loadengineprops() {
system.out.println(”loadengineprops…………………”);
try {
//config file must be in classpath
classloader cl = thread.currentthread ().getcontextclassloader();
inputstream in = null;
in = cl.getresourceasstream (configfile);
configprops.load(in);
in.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
}
birtconfig.properties
logdirectory=c:/temp
loglevel=finest
8. 通过web页面输入要访问的报表名称,并提交到处理请求的相关servlet.
test.jsp
报表名称(带后缀名)
查看
9. 修改web.xml文件如下
xmlns=”http://java.sun.com/xml/ns/j2ee”
xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance”
xsi:schemalocation=”http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>
webreport
com.lisa.webreport
webreport
/webreport
参看servlet example.
另:一些在论坛里学到得很实用的小技巧,谢谢提供的作者们:)
分页(vii779):
2.1以后,只能按照分组分页,想要按每页固定记录数来分页比较困难。
论坛中已经介绍过通过分组的方式,加一个分页字段来实现分页功能。
但该方式操作起来稍显繁琐 。
通过script方式,可以实现更简单的分页方式。
首先加一个表格,选中表格中的明细行,切换到script标签页。
在onrender事件中加入以下代码
rownum = number(this.getrowdata().getexpressionvalue(’row["0"]‘))+1;
if(rownum % 20 ==0){
this.getstyle().pagebreakafter=”always”;
}else{
this.getstyle().pagebreakafter=null;
}
这样就实现了按每页20条记录的分页功能。
需要注意的是,在run方式下,看不到分页效果,打印预览时才能看到分页。
在framest(ctrl+shift+b)方式下,可以看到完整的分页效果。
纸张(paddycq):
主页—>常规 中设置方向、类型
pdf中文乱码(mmwy):
放了itext-1.3.jar、itextasian.jar两个jar包在\plugins\com.lowagie.itext\lib目录下,一切ok,从来没有出现过中文问题。就连部署到linux下也是如此。
url乱码问题.mht
两种解决方法:
一. java.net.urldecoder.decode(java.net.urlencoder.encode(”中文”));
二.如果使用tomcat做web应用服务器,则修改server.xml文件,在connector元素中增加属性uriencoding.
eg: maxthreads=”150″ minsparethreads=”25″ maxsparethreads=”75″
enablelookups=”false” redirectport=”8443″ acceptcount=”100″
debug=”0″ connectiontimeout=”20000″
disableuploadtimeout=”true”
uriencoding=”gb2312″/>
前提:
1.使用eclipse提供的runtime viewer.
2.使用超链方式查看报表.
3.使用tomcat.
具体解决办法:
修改tomcat的server.xml文件,在connector元素中增加属性usebodyencodingforuri=”true”
并且,url中的中文参数必须事先转码.
eg:
string param=java.net.urlencoder.encode(”公用信息表”,”utf-8″);
收集一下资料.做了一个简单的, 但应用到项目中,还要断续学习一下.
birt是一个eclipse-based开放源代码报表系统。它主要是用在基于java与j2ee的web应用程序上。birt主要由两部分组成:一个是基于eclipse的报表设计和一个可以加到你应用服务的运行期组件。birt同时也提供一个图形报表制作引擎。
birt home :http://www.eclipse.org/birt/phoenix/
birt环境及下载:http://download.eclipse.org/birt/downloads
birt教程:http://www.eclipse.org/birt/phoenix/tutorial/
eclipse技术论坛:http://www.eclipseworld.org/bbs/
birt例子演示:http://www.eclipse.org/birt/phoenix/examples/
http://download3.eclipse.org/birt/downloads/examples/misc/birt/birt_demo_camv3.html
http://download3.eclipse.org/birt/downloads/demos/myfirstreport.html
birt使用小结
ide: birt-report-designer-all-in-one-2.1.2 (建议初学者下载,下载后是一个eclipse,birt已经装好了,方便)
runtime:birt-runtime-2.1.2
jdk: jdk1.5.0_02
和现有项目有两种结合方式。
其一:直接使用birt_runtime_2.1.2中的webviewerexample。
1. 将其发布到c:\jakarta-tomcat-5.0.28\webapps目录下,并将其更改名称为birtapp。
2. 在birtapp \web-inf\platform\plugins\com.lowagie.itext目录下新建文件夹lib,并将itext-1.3.jar和itextasian.jar拷入其中。
3. 将已完成的报表,比如test.rptdesign放到birtapp的根目录下,即可通过
http://localhost:8080/birt/frameset?__report=test.rptdesign(相对路径)
或者
http://localhost:8080/birt/frameset?__report=c:/jakarta-tomcat-5.0.28/webapps/birt/test.rptdesign(绝对路径)
来访问。
若报表设置以后参数,则只需在上述url后拼接参数及值即可。
eg: http://localhost:8080/birt/frameset?__report=test.rptdesign&sample=my+parameter
其二:在我们的程序中使用birt提供的report engine api来调用报表并展现报表。
1. 新建web项目webrpt。
2. 在webrpt的web模块下的web-inf目录中新建文件夹lib,并将birt-runtime-2_1_2\reportengine\lib下的所有文件拷入其中。
3. 如上,同样在web-inf目录中新建文件夹platform,并将birt-runtime-2_1_2\reportengine下的plugins和configuration拷入其中。
4. 将itext-1.3.jar和itextasian.jar拷入platform\plugins\com.lowagie.itext文件夹的lib目录中(此处如果没有该目录,新建之),亦或者将所述jar包拷入web-inf\lib目录下也可。
5. 在webrpt的web模块的根目录下新建images和reports文件夹。其中reports文件夹中放
已开发完成的报表文件。
6. 当然所使用的数据库驱动也要放在lib文件夹下。
7. 使用report engine api开发调用及展示报表的相关程序。代码如下:
webreport.java
package com.lisa;
import java.io.ioexception;
import java.io.printwriter;
import java.util.hashmap;
import java.util.logging.level;
import java.util.logging.logger;
import javax.servlet.servletcontext;
import javax.servlet.servletexception;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.eclipse.birt.report.engine.api.engineconstants;
import org.eclipse.birt.report.engine.api.htmlrendercontext;
import org.eclipse.birt.report.engine.api.htmlrenderoption;
import org.eclipse.birt.report.engine.api.ireportrunnable;
import org.eclipse.birt.report.engine.api.irunandrendertask;
import org.eclipse.birt.report.engine.api.ireportengine;
public class webreport extends httpservlet {
/**
*
*/
private static final long serialversionuid = 1l;
/**
* constructor of the object.
*/
private ireportengine birtreportengine = null;
protected static logger logger = logger.getlogger( “org.eclipse.birt” );
public webreport() {
super();
}
/**
* destruction of the servlet.
*/
public void destroy() {
super.destroy();
birtengine.destroybirtengine();
}
/**
* the doget method of the servlet.
*
*/
public void doget(httpservletrequest req, httpservletresponse resp)
throws servletexception, ioexception {
system.out.println(”doget…………….”);
//get report name and launch the engine
//resp.setcontenttype(”text/html”);
resp.setcontenttype( “application/pdf” );
resp.setheader (”content-disposition”,”inline; filename=test.pdf”);
string reportname = req.getparameter(”reportname”);
system.out.println(”reportname:::”+reportname);
servletcontext sc = req.getsession().getservletcontext();
this.birtreportengine = birtengine.getbirtengine(sc);
//setup image directory
htmlrendercontext rendercontext = new htmlrendercontext();
rendercontext.setbaseimageurl(req.getcontextpath()+”/images”);
rendercontext.setimagedirectory(sc.getrealpath(”/images”));
logger.log( level.fine, “image directory ” + sc.getrealpath(”/images”));
system.out.println(”stdout image directory ” + sc.getrealpath(”/images”));
hashmap contextmap = new hashmap();
contextmap.put( engineconstants.appcontext_html_render_context, rendercontext );
ireportrunnable design;
try
{
//open report design
design = birtreportengine.openreportdesign( sc.getrealpath(”/reports”)+”/”+reportname );
//create task to run and render report
irunandrendertask task = birtreportengine.createrunandrendertask( design );
task.setappcontext( contextmap );
hashmap parammap=new hashmap();
parammap.put(”param”,”%”);
parammap.put(”sample”, “lisa ok”);
task.setparametervalues(parammap);
//set output options
htmlrenderoption options = new htmlrenderoption();
//options.setoutputformat(htmlrenderoption.output_format_html);
options.setoutputformat(htmlrenderoption.output_format_pdf);
options.setoutputstream(resp.getoutputstream());
task.setrenderoption(options);
//run report
task.run();
task.close();
}catch (exception e){
e.printstacktrace();
throw new servletexception( e );
}
}
/**
* the dopost method of the servlet.
*
*/
public void dopost(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception {
response.setcontenttype(”text/html”);
printwriter out = response.getwriter();
out.println(”“);
out.println(”“);
out.println(” “);
out.println(” “);
out.println(” post does nothing”);
out.println(” “);
out.println(”“);
out.flush();
out.close();
}
/**
* initialization of the servlet.
*
* @throws servletexception if an error occure
*/
public void init() throws servletexception {
system.out.println(”init……………….”);
birtengine.initbirtconfig();
}
}
birtengine.java
package com.lisa;
import java.io.inputstream;
import java.io.ioexception;
import java.util.properties;
import java.util.logging.level;
import org.eclipse.birt.report.engine.api.engineconfig;
import org.eclipse.birt.report.engine.api.ireportengine;
import javax.servlet.*;
import org.eclipse.birt.core.framework.platformse
rvletcontext;
import org.eclipse.birt.core.framework.iplatformcontext;
import org.eclipse.birt.core.framework.platform;
import org.eclipse.birt.core.exception.birtexception;
import org.eclipse.birt.report.engine.api.ireportenginefactory;
public class birtengine {
private static ireportengine birtengine = null;
private static properties configprops = new properties();
private final static string configfile = “com/lisa/birtconfig.properties”;
public static synchronized void initbirtconfig() {
loadengineprops();
}
public static synchronized ireportengine getbirtengine(servletcontext sc) {
if (birtengine == null)
{
engineconfig config = new engineconfig();
if( configprops != null){
string loglevel = configprops.getproperty(”loglevel”);
level level = level.off;
if (”severe”.equalsignorecase(loglevel))
{
level = level.severe;
} else if (”warning”.equalsignorecase(loglevel))
{
level = level.warning;
} else if (”info”.equalsignorecase(loglevel))
{
level = level.info;
} else if (”config”.equalsignorecase(loglevel))
{
level = level.config;
} else if (”fine”.equalsignorecase(loglevel))
{
level = level.fine;
} else if (”finer”.equalsignorecase(loglevel))
{
level = level.finer;
} else if (”finest”.equalsignorecase(loglevel))
{
level = level.finest;
} else if (”off”.equalsignorecase(loglevel))
{
level = level.off;
}
config.setlogconfig(configprops.getproperty(”logdirectory”), level);
}
config.setenginehome(”");
iplatformcontext context = new platformservletcontext( sc );
config.setplatformcontext( context );
try
{
platform.startup( config );
}
catch ( birtexception e )
{
e.printstacktrace( );
}
ireportenginefactory factory = (ireportenginefactory) platform
.createfactoryobject( ireportenginefactory.extension_report_engine_factory );
birtengine = factory.createreportengine( config );
}
return birtengine;
}
public static synchronized void destroybirtengine() {
if (birtengine == null) {
return;
}
birtengine.shutdown();
platform.shutdown();
birtengine = null;
}
public object clone() throws clonenotsupportedexception {
throw new clonenotsupportedexception();
}
private static void loadengineprops() {
system.out.println(”loadengineprops…………………”);
try {
//config file must be in classpath
classloader cl = thread.currentthread ().getcontextclassloader();
inputstream in = null;
in = cl.getresourceasstream (configfile);
configprops.load(in);
in.close();
} catch (ioexception e) {
e.printstacktrace();
}
}
}
birtconfig.properties
logdirectory=c:/temp
loglevel=finest
8. 通过web页面输入要访问的报表名称,并提交到处理请求的相关servlet.
test.jsp
报表名称(带后缀名)
查看
9. 修改web.xml文件如下
xmlns=”http://java.sun.com/xml/ns/j2ee”
xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance”
xsi:schemalocation=”http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>
webreport
com.lisa.webreport
webreport
/webreport
参看servlet example.
另:一些在论坛里学到得很实用的小技巧,谢谢提供的作者们:)
分页(vii779):
2.1以后,只能按照分组分页,想要按每页固定记录数来分页比较困难。
论坛中已经介绍过通过分组的方式,加一个分页字段来实现分页功能。
但该方式操作起来稍显繁琐 。
通过script方式,可以实现更简单的分页方式。
首先加一个表格,选中表格中的明细行,切换到script标签页。
在onrender事件中加入以下代码
rownum = number(this.getrowdata().getexpressionvalue(’row["0"]‘))+1;
if(rownum % 20 ==0){
this.getstyle().pagebreakafter=”always”;
}else{
this.getstyle().pagebreakafter=null;
}
这样就实现了按每页20条记录的分页功能。
需要注意的是,在run方式下,看不到分页效果,打印预览时才能看到分页。
在framest(ctrl+shift+b)方式下,可以看到完整的分页效果。
纸张(paddycq):
主页—>常规 中设置方向、类型
pdf中文乱码(mmwy):
放了itext-1.3.jar、itextasian.jar两个jar包在\plugins\com.lowagie.itext\lib目录下,一切ok,从来没有出现过中文问题。就连部署到linux下也是如此。
url乱码问题.mht
两种解决方法:
一. java.net.urldecoder.decode(java.net.urlencoder.encode(”中文”));
二.如果使用tomcat做web应用服务器,则修改server.xml文件,在connector元素中增加属性uriencoding.
eg: maxthreads=”150″ minsparethreads=”25″ maxsparethreads=”75″
enablelookups=”false” redirectport=”8443″ acceptcount=”100″
debug=”0″ connectiontimeout=”20000″
disableuploadtimeout=”true”
uriencoding=”gb2312″/>
前提:
1.使用eclipse提供的runtime viewer.
2.使用超链方式查看报表.
3.使用tomcat.
具体解决办法:
修改tomcat的server.xml文件,在connector元素中增加属性usebodyencodingforuri=”true”
并且,url中的中文参数必须事先转码.
eg:
string param=java.net.urlencoder.encode(”公用信息表”,”utf-8″);
发表评论
-
LINUX-网卡Bond
2012-02-08 15:22 845网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本 ... -
Chrome+SwitchySharp+myentunnel+SSH
2012-02-04 17:14 1848? <p style="margin ... -
Java中HashMap排序和遍历 .
2012-02-03 10:29 1906<div id="article_co ... -
/dev/shm放/tmp
2012-02-02 17:14 878呵呵,有时候不懂装懂的人挺搞笑的哈 转http://z ... -
java简单的通用ajax分页方法
2012-02-02 12:44 1753发表一个自己常用的分页的通用代码,实现了ajax分页。 ... -
[转]Cocoa中回调delegate的方法时判断delegate是否已经被释放
2012-01-31 16:58 1014<p>http://pingguohe.n ... -
单一入口应用程序概述
2012-01-11 14:03 645什么是单一入口应用程序? 在解释什么是单一入口应用 ... -
各种常用编译开关位置
2012-01-11 12:54 649vendor\third-party\products ... -
JS合并单元格、JavaScript单元格合并
2011-12-28 14:08 1059<span style="font-f ... -
flex入门
2011-12-28 12:23 815<span style="fon ... -
通过发微博控制电脑的程序源码
2011-12-20 12:29 1188前段时间看群里挺多讨论 微博api,正好前几天看到有个 ... -
由ORM框架设计看到微软与苹果的最大差别
2011-12-20 09:59 1339一不小心加入水 ... -
《南方周末》《南方日报》《新京报》《南方体育》等报纸在线阅读
2011-12-15 11:04 1216我经常到南方报业提供的网址下载他们出版的报纸看,今天突 ... -
java 加密算法 base64
2011-12-14 17:58 849<span style="color: ... -
终于完成一个最重要的任务——找工作
2011-12-14 14:54 591</span></span>& ... -
HTML特殊字符
2011-12-14 10:54 657最近在做某种模拟器上的网页的显示,需要考虑HTML特殊 ... -
01_Android介绍
2011-12-13 10:44 567? <h4 style="margin ... -
2008 ==> 2009
2011-12-13 10:39 552发现时间过的真的很快,这么快,又是新的一年了。特地翻出 ... -
TOMCAT常用优化
2011-12-12 16:04 634<p class="MsoNorm ... -
职场官话
2011-12-12 12:29 526官场充斥着官话,职场也满是官话,可能你没有注意到而已。 ...
相关推荐
Flappy Bird是一款非常优秀且容易上手的游戏,可以作为一个很好的HTML5游戏的教程。在这篇教程中,我们使用Phaser框架写一个只有65行js代码的简化版Flappy Bird。
Unity之flappy bird教程.rar
经典网红游戏FlappyBird美术及音频素材下载,包含音频和图片素材,仅用于学习和交流。Godot版FlappyBird开发教程CSDN地址:https://blog.csdn.net/ttm2d/article/details/104516098
经典网红游戏FlappyBird美术及音频素材下载,包含音频和图片素材,仅用于学习和交流。Godot版FlappyBird开发教程CSDN地址:https://blog.csdn.net/ttm2d/article/details/104516098
自己制作的flappy bird游戏完整源码及素材,符合游戏规则,包括历史记录
ThunderBird常用组件
2014年2月,《Flappy Bird》被开发者本人从苹果及谷歌应用商店撤下。2014年8月份正式回归APP STORE,正式加入Flappy迷们期待已久的多人对战模式。游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍。...
包含 1)简易版flappybird源码 2)flappybird 图像,声音素材 3)本人自己编写的类似flappybird的游戏。 有道具,冲刺 百度网盘下载: http://pan.baidu.com/s/1sjFFLTj
Flappy Bird素材及公开课视频,适合自学开发FlappyBird游戏
flappybird图像音频资源,用于配合《简单小游戏flappybird制作》相关博客。
该资源是flappy bird游戏涉及到的素材资源,包括背景、管道、小鸟的不同状态以及游戏开始、重启、失败等。
FLappy Bird,《flappybird》是由来自越南的独立游戏开发者DongNguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍。
flappybird游戏资源,图片+音效
JAVA SWING学习之图形化界面开发,练手项目fly bird 2D小游戏
全flappybird套图片和音效,学习开发必备
https://blog.csdn.net/cb269267/article/details/20214107 按照此博主操作分解出来的方法,如果需要可以去原博客自行操作,也可以直接下载本资源
内含FlappyBird源码、成果视频、API、PPT以及所有的游戏资源
flappy_bird图片及音乐资源
FlyBird(飞翔的小鸟)C语言编写