JasperReport di JSF 2

Bagi yang sering berhubungan dengan Java, baik itu pemograman Java Desktop ataupun Java Web, tentu saja tau apa itu JasperReport. Dengan JasperReport, laporan dapat dibuat dengan lebih mudah dan juga cepat.

Untuk penggunaan JasperReport pada aplikasi desktop banyak sekali yang membahasnya, tetapi untuk penggunaan di java Web cukup sedikit. Seperti pengalaman kemarin waktu ngerjain Proyek Akhir, butuh beberapa waktu untuk mendapatkan JasperReport dapat bekerja dengan Java Web, dalam hal ini digunakan di JSF 2.

Kali ini kita akan membuat jasperreport agar dapat meng-export laporan dalam format PDF di JSF 2. Untuk itu diperlukan kebutuhan sebagai berikut :

  1. Netbeans 7
  2. Ireport 4.5.0
  3. JasperReport 4.5.0

Langkah pertama, kita buat file Jasper terlebih dahulu dengan menggunakan IReport, dan perlu diperhatikan bahwa dalam pembuatan laporan dengan JasperReport kali ini menggunakan JRBeanCollectionDataSource sebagai datasourcenya. Tampilan laporan dibuat sedehana saja, biar lebih cepet. 😀

Kemudian kita buat project Java Web dengan menggunakan Netbeans IDE. Disini, pembuatan projectnya gak ditampilkan. Selanjutnya kita buat kelas entity Pegawai.java

package achmad.entity;

/**
*
* @author Achmad Lutfi
*/
public class Pegawai {
private String nip;
private String nama;
private String alamat;
private String telp;

public String getAlamat() {
return alamat;
}

public void setAlamat(String alamat) {
this.alamat = alamat;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

public String getNip() {
return nip;
}

public void setNip(String nip) {
this.nip = nip;
}

public String getTelp() {
return telp;
}

public void setTelp(String telp) {
this.telp = telp;
}

}

Langkah berikutnya, kita buat kelas JasperBean.java yang digunakan untuk mengenerate PDF dengan JasperReport.


package achmad.beans;

import achmad.entity.Pegawai;
import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.swing.ImageIcon;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;

/**
*
* @author Achmad Lutfi
*/
@ManagedBean
@RequestScoped
public class JasperBean {
private List<Pegawai> listPegawai;
private InputStream streamReport;
private Image image;

public JasperBean() {
image = new ImageIcon(getClass().getResource("/achmad/image/alert.png")).getImage();

listPegawai = new ArrayList<Pegawai>();
for (int i = 0; i < 100; i++) {
Pegawai pegawai = new Pegawai();
pegawai.setNip("10106031" + i);
pegawai.setNama("Achmad Lutfi");
pegawai.setAlamat("Banyuwangi");
pegawai.setTelp("0123456");
listPegawai.add(pegawai);
}

streamReport = JRLoader.getResourceInputStream("achmad/reports/report.jasper");
}

public String exportPDF() throws IOException, JRException{
JRDataSource datasource = new JRBeanCollectionDataSource(listPegawai);
Map map = new HashMap();
map.put(JRParameter.REPORT_DATA_SOURCE, datasource);
map.put("logo", image);

JasperPrint report = null;
try {
report = JasperFillManager.fillReport(streamReport, map);
} catch (JRException ex) {
Logger.getLogger(JasperBean.class.getName()).log(Level.SEVERE, null, ex);
}
HttpServletResponse httpServletResponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.pdf");
ServletOutputStream servletOutputStream=httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(report, servletOutputStream);

FacesContext.getCurrentInstance().responseComplete();

return "";
}
}

Setelah itu, build project tersebut dan deploy kedalam Tomcat ataupun Glassfish.

Untuk project Netbeans dapat didownload di link berikut : http://achmad-project.googlecode.com/files/JasperReportOnJSF2.7z

, , , , , ,

  1. Penggunaan JasperReport di Java Desktop ( Swing ) « Simple Blogs….

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: