jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表-阿里云开发者社区

开发者社区> lhyxcxy> 正文

jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表

简介: 注意:编写此项目时,请先手动编写**.jrxml  或者用IReport生成**.jrxml或**.jasper 注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下 html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Deskt
+关注继续查看

注意:编写此项目时,请先手动编写**.jrxml
 或者用IReport生成**.jrxml**.jasper

注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下

 html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成文件
            //html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web页面显示



maven依赖

<!-- iReport JasperReports -->  
<dependency>  
    <groupId>net.sf.jasperreports</groupId>  
    <artifactId>jasperreports</artifactId>  
    <version>5.6.0</version>  
</dependency>  
<dependency>  
    <groupId>org.codehaus.groovy</groupId>  
    <artifactId>groovy-all</artifactId>  
    <version>2.2.2</version>  
</dependency>  


通过java代码生成各种格式报表文件

JDBC文件

package com.hlzt.test;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.Statement;  
  
public class JDBC {  
    public static String driver="com.mysql.jdbc.Driver";  
    public static String url="jdbc:mysql://localhost:3306/senyuan1";  
    public static String user="root";  
    public static String pwd="123456";  
    public static Connection conn=getConnection();  
    public static Statement statement=getStatement();  
  
    private static Connection getConnection(){  
        if(conn==null){  
            try{  
                 Class.forName(driver);  
                 conn=DriverManager.getConnection(url,user,pwd);  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }  
        return conn;  
    }  
    private static Statement getStatement(){  
        if(statement==null){  
            try{  
                statement=conn.createStatement();  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }  
        return statement;  
    }  
    public static ResultSet getResultSet(String sql){  
        ResultSet rs=null;  
        try{  
            rs=statement.executeQuery(sql);  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        return rs;  
    }  
    public static void closeAll(ResultSet rs,Statement st,Connection cn){  
        try{  
            if(rs!=null){  
                rs.close();  
            }  
            if(st!=null){  
                st.close();  
            }  
            if(cn!=null){  
                cn.close();  
            }  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
    }  
}  


生成 各种格式

package com.hlzt.test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
@SuppressWarnings("deprecation")
public class TestReport  {

	public static void main(String[] args) {
		service();
	}
	//protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {\
	protected static void service(){
		try{
			//ServletContext context = this.getServletConfig().getServletContext();
			
			//JasperCompileManager 编译管理器
			//JasperFillManager 填充管理器
			//JRXmlLoader xml加载器
			//JasperPrintManager 打印管理器
			//JasperExportManager 导出管理器
			
			//JasperCompileManager.compileReportToFile(context.getRealPath("/reports/DbReport.jrxml"));//编译jrxml文件,生成jasper文件
			
			Map map=new HashMap();//参数map
			map.put("userName", "admin");
			
			//生成jrprint文件
			//JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);
			
			
			File jasperFile=new File("C:/Users/Administrator/Desktop/ireport/report1.jasper");
			JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map,JDBC.conn);
            File file=new File("C:/Users/Administrator/Desktop/ireport/report1.html");
            //生成html
            JRHtmlExporter html = new JRHtmlExporter();
            html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
            html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成文件
            //html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web页面显示
            html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
            html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
            html.exportReport();
            //生成excel
            /*
            JRXlsExporter xls=new JRXlsExporter();
            */
            //生成pdf
            /*
            JRPdfExporter pdf = new JRPdfExporter(); 
			*/
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}



与javaweb整合


本文用的是JasperReport最新版本6.0

JasperReport官网:community.jaspersoft.com

web开发建议下载JasperReports library --> jasperreports-xxx-project 里面包含demo以及api


项目结构:

jar包:新手可以把下载下来的所有jar包都放进去,熟练之后可以根据自己所需加入相关jar包

WebRoot下:新建reports文件夹,用来存放jrxml、jasper文件;build.xml(放入进去之后会出现蚂蚁图标);



jrxml文件代码,此代码是xml格式文件,可以自己手写,也可以安装 iReport设计编译成jasper文件,为了入门下面纯手写

DbReport.jrxml:

[html] view plain copy
  1. <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8" ?>  
  2. <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"   
  3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.             xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports   
  5.                                 http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DbReport" >  
  6.   
  7.     <!-- jasperReport标签中name="DbReport"需要对应外面文件名, $P{}为填充参数,$V{}为值 ,$F{}为查询值或者为Jr数据-->  
  8.   
  9.     <!-- 页面样式标签 --属性:  
  10.         forecolor(前景色,就是文本)  
  11.         backcolor(背景色)  
  12.         hAlign(水平位置Center, Justified, Left, Right)   
  13.         vAlign(垂直位置Bottom, Middle, Top)   
  14.         border(边框1Point, 2Point, 4Point, Dotted, None, Thin)   
  15.         borderColor(边框颜色)   
  16.         fontName(字体)   
  17.         fontSize(字体大小)   
  18.         isBold,isItalic,IsUnderline,isStrikeThrough(粗体,斜体,下画线,..)   
  19.         lineSpacing(1_1_2, Double, Single行间距)   
  20.         rotation(旋转,Left, None, Right,转的是90度)   
  21.         isStyledText(指示这个Element是否用Style,true,false)   
  22.         isDefault(说明这个样式是否默认样式)   
  23.     -->  
  24.     <style name="pageHeader" forecolor="#FFFFFF" backcolor="#333333"/>  
  25.   
  26.     <!-- 参数标签 -->  
  27.     <parameter name="userName" class="java.lang.String"/>  
  28.       
  29.     <!-- 查询语句标签 -->  
  30.     <queryString>  
  31.         <![CDATA[ 
  32.             select id,user_name as name,email,qq from user where user_name=$P{userName} 
  33.         ]]>  
  34.     </queryString>   
  35.     <!-- 显示字段标签 -->  
  36.     <field name="id" class="java.lang.Integer" />  
  37.     <field name="name" class="java.lang.String" />  
  38.     <field name="email" class="java.lang.String" />  
  39.     <field name="qq" class="java.lang.String" />  
  40.       
  41.     <pageHeader>  
  42.         <band height="30">  
  43.             <staticText>  
  44.                 <reportElement style="pageHeader"  x="0" y="5" width="55" height="15"/>  
  45.                 <textElement textAlignment="Center"/>  
  46.                 <text><![CDATA[ID]]></text>  
  47.             </staticText>  
  48.             <staticText>  
  49.                 <reportElement style="pageHeader"  x="55" y="5" width="205" height="15"/>  
  50.                 <text><![CDATA[Name]]></text>  
  51.             </staticText>  
  52.             <staticText>  
  53.                 <reportElement style="pageHeader"  x="160" y="5" width="255" height="15"/>  
  54.                 <text><![CDATA[Email]]></text>  
  55.             </staticText>  
  56.             <staticText>  
  57.                 <reportElement style="pageHeader"  x="260" y="5" width="255" height="15"/>  
  58.                 <text><![CDATA[QQ]]></text>  
  59.             </staticText>  
  60.         </band>  
  61.     </pageHeader>  
  62.     <!-- 显示内容-->  
  63.     <detail>  
  64.         <band height="20">  
  65.             <textField>  
  66.                 <reportElement x="0" y="4" width="50" height="15"/>  
  67.                 <textElement textAlignment="Right"/>  
  68.                 <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>  
  69.             </textField>  
  70.             <textField isStretchWithOverflow="true">  
  71.                 <reportElement positionType="Float" x="55" y="4" width="100" height="15"/>  
  72.                 <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>  
  73.             </textField>  
  74.             <textField isStretchWithOverflow="true">  
  75.                 <reportElement positionType="Float" x="160" y="4" width="100" height="15"/>  
  76.                 <textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>  
  77.             </textField>  
  78.             <textField isStretchWithOverflow="true">  
  79.                 <reportElement positionType="Float" x="260" y="4" width="255" height="15"/>  
  80.                 <textFieldExpression><![CDATA[$F{qq}]]></textFieldExpression>  
  81.             </textField>  
  82.   
  83.             <line>  
  84.                 <reportElement positionType="Float" x="0" y="19" width="515" height="1" forecolor="#808080"/>  
  85.             </line>  
  86.         </band>  
  87.     </detail>  
  88.       
  89. </jasperReport>  
  90. </span>  



后台代码:TestServlet.java

[java] view plain copy
  1. <span style="font-size:14px;">package servlets;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.sql.ResultSet;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9.   
  10. import javax.servlet.ServletContext;  
  11. import javax.servlet.ServletException;  
  12. import javax.servlet.http.HttpServlet;  
  13. import javax.servlet.http.HttpServletRequest;  
  14. import javax.servlet.http.HttpServletResponse;  
  15.   
  16. import util.JDBC;  
  17. import net.sf.jasperreports.engine.JRDataSource;  
  18. import net.sf.jasperreports.engine.JRExporterParameter;  
  19. import net.sf.jasperreports.engine.JRResultSetDataSource;  
  20. import net.sf.jasperreports.engine.JasperCompileManager;  
  21. import net.sf.jasperreports.engine.JasperExportManager;  
  22. import net.sf.jasperreports.engine.JasperFillManager;  
  23. import net.sf.jasperreports.engine.JasperPrint;  
  24. import net.sf.jasperreports.engine.JasperReport;  
  25. import net.sf.jasperreports.engine.JasperRunManager;  
  26. import net.sf.jasperreports.engine.data.JRMapArrayDataSource;  
  27. import net.sf.jasperreports.engine.export.JRHtmlExporter;  
  28. import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;  
  29. import net.sf.jasperreports.engine.export.JRPdfExporter;  
  30. import net.sf.jasperreports.engine.export.JRXlsExporter;  
  31. import net.sf.jasperreports.engine.export.JRXlsExporterParameter;  
  32. import net.sf.jasperreports.engine.util.JRLoader;  
  33. import net.sf.jasperreports.view.JasperViewer;  
  34.   
  35. public class TestServlet extends HttpServlet {  
  36.     @Override  
  37.     protected void service(HttpServletRequest request, HttpServletResponse response)  
  38.             throws ServletException, IOException {  
  39.         try{  
  40.             ServletContext context = this.getServletConfig().getServletContext();  
  41.               
  42.             //JasperCompileManager 编译管理器  
  43.             //JasperFillManager 填充管理器  
  44.             //JRXmlLoader xml加载器  
  45.             //JasperPrintManager 打印管理器  
  46.             //JasperExportManager 导出管理器  
  47.             //JasperRunManager 运行管理器  
  48.               
  49.             JasperCompileManager.compileReportToFile(context.getRealPath("/reports/DbReport.jrxml"));//编译jrxml文件,生成jasper文件  
  50.               
  51.             Map map=new HashMap();//参数map  
  52.             map.put("userName""admin");  
  53.               
  54.             //生成jrprint文件  
  55.             //JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);  
  56.               
  57.               
  58.             File jasperFile=new File(context.getRealPath("/reports/DbReport.jasper"));  
  59.             JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile);  
  60.             JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map,JDBC.conn);  
  61.               
  62.             //将查询的数据填充到报表中  
  63.             //String sql="select id,user_name as name,email,qq from user";  
  64.             //ResultSet rs=JDBC.getResultSet(sql);  
  65.             //JRResultSetDataSource jr=new JRResultSetDataSource(rs);   
  66.             //JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, jr);  
  67.             //JDBC.closeAll(rs, JDBC.statement, null);//关闭数据连接  
  68.             
  69.             //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);  
  70.             //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), map, jr);  
  71.             //生成html文件  
  72.             //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), "E:/test.html", map, JDBC.conn);  
  73.               
  74.             //InputStream  inputStream=getServletConfig().getServletContext().getResourceAsStream(context.getRealPath("/reports/DbReport.jasper"));  
  75.             //JasperRunManager.runReportToPdfStream(inputStream, response.getOutputStream(), map, jr);  
  76.               
  77.             //-----以map数组为数据源,生成html文件  
  78.             JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), "E:/test2.html", map, getReportDataSource());  
  79.               
  80.               
  81.               
  82.             //生成html数据  
  83.             /* 
  84.             JRHtmlExporter html = new JRHtmlExporter(); 
  85.             html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint); 
  86.             html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); 
  87.             html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE); 
  88.             html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8"); 
  89.             html.exportReport(); 
  90.             */  
  91.             //生成excel  
  92.             /* 
  93.             JRXlsExporter xls=new JRXlsExporter(); 
  94.             xls.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); 
  95.             xls.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream()); 
  96.             xls.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); 
  97.             xls.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); 
  98.             response.setHeader("Content-Disposition", "attachment;filename=first.xls"); 
  99.             response.setContentType("application/vnd_ms-excel"); 
  100.             xls.exportReport(); 
  101.             */  
  102.             //生成pdf  
  103.             /* 
  104.             JRPdfExporter pdf = new JRPdfExporter();  
  105.             pdf.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
  106.             pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); 
  107.               
  108.             response.setHeader("Content-Disposition", "attachment;filename=first.pdf"); 
  109.             response.setContentType("application/pdf"); 
  110.             response.setCharacterEncoding("UTF-8");   
  111.             pdf.exportReport(); 
  112.             */  
  113.         }catch(Exception e){  
  114.             e.printStackTrace();  
  115.         }  
  116.     }  
  117.       
  118.     private JRDataSource getReportDataSource(){  
  119.         //new JRMapArrayDataSource(getMaparray());这里也可以传自定义对象数组,对象属性字段必须对应DbReport.jrxml中显示数据字段  
  120.         JRMapArrayDataSource dataSource=new JRMapArrayDataSource(getMaparray());  
  121.         return dataSource;  
  122.     }  
  123.     private Map[] getMaparray(){  
  124.         //map key键必须对应DbReport.jrxml中显示数据字段  
  125.         Map map1=new HashMap();  
  126.         map1.put("id"1);  
  127.         map1.put("name""aaa");  
  128.         map1.put("email""111@qq.com");  
  129.         map1.put("qq""111");  
  130.           
  131.         Map map2=new HashMap();  
  132.         map2.put("id"2);  
  133.         map2.put("name""bbb");  
  134.         map2.put("email""222@qq.com");  
  135.         map2.put("qq""222");  
  136.           
  137.         Map map3=new HashMap();  
  138.         map3.put("id"3);  
  139.         map3.put("name""ccc");  
  140.         map3.put("email""333@qq.com");  
  141.         map3.put("qq""333");  
  142.           
  143.         Map[] mapArray=new Map[3];  
  144.         mapArray[0]=map1;  
  145.         mapArray[1]=map2;  
  146.         mapArray[2]=map3;  
  147.           
  148.         return mapArray;  
  149.     }  
  150. }  
  151. </span>  

JDBC:

[java] view plain copy
  1. <span style="font-size:14px;">package util;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.Statement;  
  7.   
  8. public class JDBC {  
  9.     public static String driver="com.mysql.jdbc.Driver";  
  10.     public static String url="jdbc:mysql://localhost:3306/myapp";  
  11.     public static String user="root";  
  12.     public static String pwd="root";  
  13.     public static Connection conn=getConnection();  
  14.     public static Statement statement=getStatement();  
  15.   
  16.     private static Connection getConnection(){  
  17.         if(conn==null){  
  18.             try{  
  19.                  Class.forName(driver);  
  20.                  conn=DriverManager.getConnection(url,user,pwd);  
  21.             }catch(Exception e){  
  22.                 e.printStackTrace();  
  23.             }  
  24.         }  
  25.         return conn;  
  26.     }  
  27.     private static Statement getStatement(){  
  28.         if(statement==null){  
  29.             try{  
  30.                 statement=conn.createStatement();  
  31.             }catch(Exception e){  
  32.                 e.printStackTrace();  
  33.             }  
  34.         }  
  35.         return statement;  
  36.     }  
  37.     public static ResultSet getResultSet(String sql){  
  38.         ResultSet rs=null;  
  39.         try{  
  40.             rs=statement.executeQuery(sql);  
  41.         }catch(Exception e){  
  42.             e.printStackTrace();  
  43.         }  
  44.         return rs;  
  45.     }  
  46.     public static void closeAll(ResultSet rs,Statement st,Connection cn){  
  47.         try{  
  48.             if(rs!=null){  
  49.                 rs.close();  
  50.             }  
  51.             if(st!=null){  
  52.                 st.close();  
  53.             }  
  54.             if(cn!=null){  
  55.                 cn.close();  
  56.             }  
  57.         }catch(Exception e){  
  58.             e.printStackTrace();  
  59.         }  
  60.     }  
  61. }  
  62. </span>  


执行效果:html数据



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java POI操作execel导出
最近项目当中在使用POI将数据填充置row和cell等行和列,最后导出成execel到前端。一开始使用的方式是一个个去赋值,但是这样做有点麻烦,代码也有点长,不太好维护。
1165 0
一个JavaWeb项目中使用的部分技术
-- 2015年8月8日1. Web框架: Spring+ SpringMVC + MyBatis Spring: 作为容器,工厂,用于解耦以及管理对象生命周期。 整合各类框架和依赖。 MVC  : 配置,文档与源码结合在一起,减轻开发工作量,易维护,易测试. MyBatis: 灵活稳定,自由度高,与代码生成器结合使用,易集成,易开发,代码可读性良好。
995 0
IDEA创建JavaWeb项目
创建JavaWeb项目的步骤大致如下: 1. 创建JavaWeb项目之前所需要的条件 - 安装jdk - 安装服务器(如:tomcat) - 安装idea 2. 新建项目 New——>Project.
1668 0
ActiveReports 报表应用教程 (9)---交互式报表之动态排序
原文:ActiveReports 报表应用教程 (9)---交互式报表之动态排序 在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取、过滤等功能可以让用户更方便地分析报表数据。
683 0
Crystal Reports拉报表报错:Error detected by database DLL
问题描述: 最近在使用Crystal Reports打印报表时,提示错误信息:“Error detected by database DLL.” 如下图: 经查找,是因为数据库名称不同造成的; 用户的测试环境使用的库名称为ClaimsReport; 我们本地使用的库名称为Claims;   解决方案: 打开报表工具Crystal Reports 8.5,进入Database->Set Location界面,如下图:   把红框中数据库名称去掉,然后点击按钮【Done】即可。
1066 0
深入JavaWeb技术世界15:通过项目逐步深入了解Mybatis(二)
本文出自我的公众号:程序员江湖。 满满干货,关注就送。 转自http://www.54tianzhisheng.cn/2017/06/13 Mybatis 解决 jdbc 编程的问题 1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
1164 0
sql嵌入html格式显示报表
在使用监控系统报警的时候,如果显示的报警信息为纯粹的文本,会枯燥很多,而且看起来很不清晰。 比如我们要监控表空间的使用情况,输出列有表空间名,状态,区管理方式,总共的空间,使用的空间,剩余的空间等。
601 0
JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器
一、乱码原因 ①传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码。 ②Tomcat服务器默认采用的ISO8859-1编码得到参数值。虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二、解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name =
1281 0
15. Html5的局:WebGL的纹理格式的转换
#紧接上文 WebKit为了统一WebGL的书写规范,对OpenGL的标准进行四书五入,推出了平台无关的API标准,同时为了简化底层硬件的差异,又新增了一些纹理格式的支持,由内核提供高性能的图像转换,扩展了OpenGL得标准。 那么,WebGL在底层做了些什么呢?复杂吗?可以自己实现吗? #纹理格式转换计算量大 这是WebGL为前端同学提供的福利,上层开发可以更加专注业务书写,充分挖掘
3449 0
+关注
lhyxcxy
专注于前后端服务器交互,人工智能,NLP领域
413
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载