1. Jasper 호출
@RequestMapping("jasperSample")
public ModelAndView jasperSample(HttpServletRequest request) throws Exception
{
ModelAndView mav = null;
try
{
JRDataSource datasource = new JREmptyDataSource(1); // 빈 데이터 선언
mav = new ModelAndView();
mav.setViewName("jasper/app/InquiryApproval"); // jasper 파일 위치 지정
mav.addObject("format","pdf"); // format PDF로 설정
mav.addObject("param_1","value"); // jasper 보고서 파일에 넘겨줄 파라미터1 추가
// jasper 보고서 파일에 넘겨줄 datasource 지정 (datasource 안 넘겨줘도 실행되지만, 보고서가 아무것도 보이지 않을 수 있다.)
mav.addObject("dataSource", datasource);
}
catch (Exception e)
{
logger.error("\n exception jasperSample =================> \n\n" + e.getCause());
}
return mav;
}
2. Jasper Datasource 설정
주의
Jasper 보고서의 필드 명과 JAVA에서 넘겨주는 변수 명은 대소문자를 구분하니 유의
Jasper DataSource는 아래 예제 뿐만 아니라 Java의 Array Object, xlsx(엑셀), csv 형식도 지원한다.
1) Empty Datasource 이용(위의 소스와 동일)
JRDataSource datasource = new JREmptyDataSource(1); // 빈 데이터 선언
2) Map List 이용
/** MAP을 이용한 DataSource 선언(시작) **/
List<Map<String,?>> mapList = new ArrayList<Map<String,?>>();
for(int i=0;i<2;i++){
Map<String,Object> map = new HashMap<String,Object>();
map.put("num", i+"번");
mapList.add(map);
}
JRDataSource datasource = new JRMapCollectionDataSource(mapList);
/** MAP을 이용한 DataSource 선언(끝) **/
3) Dto List 이용
/** Dto를 이용한 DataSource 선언(시작) **/
List<AppDto> dtoList = new ArrayList<AppDto>();
for(int i=0;i<2;i++){
AppDto dto = new AppDto();
dto.setNum(i+"번");
dtoList.add(dto);
}
JRDataSource datasource = new JRBeanCollectionDataSource(dtoList); // Dto List를 JRDataSource에 넣어줌
/** Dto를 이용한 DataSource 선언(끝) **/
4) XML 이용
xml을 이용하는 경우 Jasper Studio에서 사전 작업이 필요하다.
Jasper Studio에서 설정
4-1. DataAdapter를 생성하기 위해 Jasper Studio의 Repository Explorer 에서 표시된 버튼을 클릭한다.
4-2. XML Document 선택 후 Next
4-3. Name과 XML 파일 불러온다.
'Use the report Xpath Expression when filling the report'로 설정 후 Finish 클릭
4-4. 아래 이미지처럼 Project Explorer에서 프로젝트 선택 후 Dataset and Query 클릭
4-5.
① 위에서 생성한 dataAdapter 선택
② Language : xPath 선택
③ 기준 점을 설정하는 곳이다. XML 안에 동일한 하위노드가 있는 경우 여러 데이터로 각각 나와야 하는 곳을 기입하면 된다.
④ Field 정의하고 수정, 삭제 가능하다.
⑤ Data preview를 이용해 데이터 미리보기가 가능하다.
4-6. Outline의 Fields 에서 방금 추가한 필드를 보고서로 드래그하여 추가 및 저장한다.
이후 컴파일하여 jasper파일을 프로젝트에 추가한다.
PROJECT의 JAVA 소스
4-7. XML 데이터 방식은 다른 방식들과는 다르게 설정한다.
String 형식으로 되어있는 XML String 문자열을 Document 형식으로 변환 후, "XML_DATA_DOCUMENT" 에 직접 넣어준다.
String xml = "<TEST>hi</TEST>";
Document xmlDoc = convertStringToDocument(xml);
mav.addObject("XML_DATA_DOCUMENT", xmlDoc); // XML 데이터 연결
convertStringToDocument
private static Document convertStringToDocument(String xmlStr) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Jasper 관련하여 도움 많이 받은 주소 : https://m.blog.naver.com/junsu60/220475614721
'BE > Java' 카테고리의 다른 글
[Jasper] 5. JasperStudio 기능 설명 - 2 (0) | 2021.11.14 |
---|---|
[Jasper] 5. JasperStudio 기능 설명 - 1 (0) | 2021.11.13 |
[Jasper] 3. Jasper Studio 한글 설정 (0) | 2021.11.11 |
[Jasper] 2. Jasper Studio로 프로젝트 생성 방법 (0) | 2021.11.10 |
[Jasper] 1. Jasper 설치 및 servlet 설정 (0) | 2021.11.09 |