JavaWeb_ServLet+jasperReport 5.6 实例

JavaWeb_ServLet+jasperReport 5.6 实例

1. 介绍

源码文件:本文源代码链接,有需要的可以前往下载
本文采用ireport5.6 进行开发,Web采用Myelicips+ Servlet进行开发。ireport使用以及Servlet的环境可以参考我的另一篇文章,有问题也可以留言交流。

2、新建Webserver project

打开Myelicips 新建Webserver project。
导入相关包,这些包可以在ireport中找到。

相关包

3、数据库连接类

项目中新建一个类,用来建立数据库连接,本文采用oracle连接,代码如下:

package com.cn.org.ireport.test;
import java.sql.Connection;
import java.sql.DriverManager;
public class JDBCConnection {
 public static Connection getConnection(){
  try{
  //oracle链接串,读者可以根据需要修改为响应的链接
  String url = "jdbc:oracle:thin:@localhost:1521:SMCDB";
  Class.forName("oracle.jdbc.driver.OracleDriver");
  Connection con = DriverManager.getConnection(url,"reporting","reporting");
  return con;
  }catch (Exception e){
   e.printStackTrace();
  }
  return null;
 }
}

4、report中的参数传递类

report中需要定义一些参数需要从程序传递进去,单独建立一个类进行相关参数的传递,代码如下:

package com.cn.org.ireport.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
public class ReportDataSource implements JRDataSource{
	 private Iterator iter;
 	//parameters for jasper
 	//参数直接传递,通过key和value进行传递,注意类型要匹配。
  	public static Map paremeters(){
   		Map parameters=new HashMap();
   		parameters.put("REPORT_NO", 1717);
   		parameters.put("LANGUAGE_NO", 0);
   		return parameters;
  }
 Map map = new HashMap();
 public ReportDataSource(){
  }
  //数据集进行参数的传递。
 public ReportDataSource(String sex){
  List datas = DateSourceBaseFactory.createBeanCollection(sex);
  iter=datas.iterator();  
   }
   public Object getFieldValue(JRField arg0) throws JRException {
         return map.get(arg0.getName());
     }
     public boolean next() throws JRException {
         if(iter.hasNext()){
             map=(Map)iter.next();
             return true;
         }
         return false;
     }
}

5、采用javabean进行数据的传递

  1. 建立需要传递的数据类,定义数据类:读者可以根据自己的需要修改需要传递的数据定义。
package com.cn.org.ireport.test;
import java.io.Serializable;
public class DataSoruceBean implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
    private String brithday;
    private String province;
    private String Email;
    public String getName() {
        return name;
    }
 public void setName(String name) {
        this.name = name;
    }
    public String getBrithday() {
        return brithday;
    }
    public void setBrithday(String brithday) {
        this.brithday = brithday;
    }
    public String getProvince() {
        return province;
    }
   public void setProvince(String province) {
        this.province = province;
    }
    public String getEmail() {
        return this.Email;
    }
    public void setEmail(String email) {
        this.Email = email;
    }
}     
  1. 数据生成javabean传递给report
package com.cn.org.ireport.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DateSourceBaseFactory {
 //javaBean for jasper
public static List createBeanCollection(String sex) {
       int num=0;
       \\筛选数据
        if(sex.equals("?")){
            num=1;
        }else{
            num=2;
        }
 	ResultSet rs=null;
        Statement st=null;
        Connection con=null;
        List datas=new ArrayList();
        try {
            con=JDBCConnection.getConnection();
            st=con.createStatement();
            \\数据库查询运行
            rs=st.executeQuery("select name,brithday,province,Email from user where sex="+num);
            \\查询结果加入到List中
            while(rs.next()){
                Map attris=new HashMap();
                attris.put("name", rs.getString("name"));
                attris.put("brithday", rs.getString("brithday"));
                attris.put("province", rs.getString("province"));
                attris.put("Email", rs.getString("Email"));
                datas.add(attris);
            }
 } catch (Exception e) {
            e.printStackTrace();
        }finally{
                try {
                    if(rs!=null) rs.close();
                    if(st!=null) st.close();
                    if(con!=null) con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
        }
        return datas;
    }
}


6 、report生成主程序

为了在web网页中展示report建立servet类,重写DoPost方法,代码如下:

package com.cn.org.ireport.test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRException;
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.JasperRunManager;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
public class TestReportHere extends HttpServlet {
 private static final long serialVersionUID = 1L;
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  this.doPost(request, response);
 }
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  //From JDBCConnectFactory
  Connection conn = JDBCConnection.getConnection();
  //from DataSourceBaseFactory
  Map parameters = ReportDataSource.paremeters();
  try {
  \\传递jasper文件的位置
  File jasperFile = new File("D:/iReport/SMSGroup_Ireport/Main_Report.jasper");//jasper File location
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jasperFile);
  JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,parameters,conn);
  //build html File stream
            JRHtmlExporter html = new JRHtmlExporter();
            html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
            html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, response.getWriter());
            html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
            html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
            html.exportReport();
  } catch (JRException e) {
 e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                outPut.flush();
                outPut.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
 }
}            

7、配置servlet

配置方法见servlet配置,

8、启动servlet

加载项目,运行tomcat,打开浏览器访问,即可以看到report展示到浏览器中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javaweb是一种以Java为基础的web开发技术,它包括了servlet、jsp等相关技术。servletJavaEE规范中的一种组件,它主要用于处理用户发送的HTTP请求和返回HTTP响应。servlet可以接收前端页面传来的数据,然后对数据进行处理并返回给前端页面。mysql是一种关系型数据库管理系统,它能够存储大量的数据并提供有效的数据管理和查询功能。在javaweb开发中,我们可以通过servlet来连接mysql数据库,从而实现数据的持久化存储和操作。 jsp是一种基于Java的动态网页开发技术,它可以将Java代码嵌入到HTML页面中,从而实现动态页面的生成和展示。jsp可以使用Java代码来获取数据库中的数据并将其显示在前端页面上,实现了前后端的数据交互。 service是一种用于实现业务逻辑的组件或类,它负责处理具体的业务功能。在javaweb开发中,我们可以将业务逻辑封装在service中,然后在servlet中调用相应的service方法,实现对数据的处理和操作。 考试中无框架要求表示不可以使用现成的框架或库来完成开发任务,需要手动编写相关代码。在考试中,可以考察学生对javaweb技术的理解和应用能力,要求学生能够熟练地使用servlet、jsp等相关技术,并能够编写出符合需求的代码。此外,对于数据库操作,学生还需要了解mysql的基本操作和相关的jdbc编程技巧。 总而言之,javaweb servlet mysql jsp service的考试是考察学生对javaweb开发技术的掌握程度和应用能力的一种考试形式,学生需要熟练地使用这些技术,并能够灵活运用到实际的开发场景中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值