Spring + jasperreport (1)

북마크 추가

Eclipse 설정

1.  ***-servlet.xml

~~-servlet.xml 파일을 열어 property파일을 사용하기 위해 태그 속성을 추가한다

 

<bean id="viewMappings" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">

    <property name="basename" value="jasperreports-views" />

    <property name="order" value="0" />

</bean>

 

<* URL*.do패턴인 경우 ViewResolverJSP파일보다 먼저 찾도록 order속성을 준다.>


2. jasperreports-views.properties

WEB-INF\classes폴더에 jasperreports-views.properties 파일 생성

내용 입력

    

multiformat-view(model에 넘길 이름).(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView

multiformat-view.url=/WEB-INF/reports/파일명.jrxml

multiformat-view.reportDataKey=datasource

 

 

3.  *.jrxml file

Report 파일은 WEB-INF\reports\ 폴더 내에 복사 한다.

PDF한글 출력을 위해 H2GTRM.TTF FONT 파일도 같은 경로에 위치 시킨다.

4. 컨트롤러 세팅

ReportController.java  – PDF로 출력할 경우


@Controller

public class ReportController {

@RequestMapping(value = "/reports/test.do")

public ModelAndView test(

@ModelAttribute(“testVO") TestVO testVO,

Map<String, Object> map, ModelMap model) throws Exception{

본인 프로젝트에 맞는 방법으로

쿼리를 실행하여 값을 리스트에 담는다

         

          List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

          return JasperReportUtil.render("multiformat-view", list, "pdf");

}

 

multiformat-view : jasperreport-views에 설정한 이름

list : 쿼리를 통해 db에서 불러온 값

pdf: 출력할 형식 (multiformat-view는 기본적으로 pdf, csv, xls, html 형식을 지원한다.

이때 iReport에서 설정한 field 명과 Map에 담기는 키 값이 일치해야 한다. 

 

 

ReportController.java


 

 

 

public static class JasperReportUtil extends Exception {


private static final long serialVersionUID = 1L;


public static ModelAndView render(String templateId, List<Map<String, Object>> list,, String fmt) {


         JRBeanCollectionDataSource src = new JRBeanCollectionDataSource(list);

         ModelAndView mv = new ModelAndView();


         mv.setViewName(templateId);      //​ multiformat-view

         mv.addObject("format", fmt);        //pdf

         mv.addObject("datasource", src);  //list DataSource -> “datasourcejasperreport-views.properties 파일의

                                                         multiformat-view.reportDataKey의 이름과 일치해야한다.


         return mv;

       }

} 

 

 

HKH
2014-07-13 14:47
SHARE
댓글

그러면 JSP에서 호출은 어떻게 하나요? 그냥 주소뒤에 .do로 호출하면 끝인가요?
제가 JSP에서 버튼 클릭 후 .do 로 요청했는데 pdf 파일이 백지로 표출되네요ㅠㅠ
mk

댓글 감사합니다. 위에 소스랑 설정 그대로 작업 했는데 실행이 안됩니다. 
@RequestMapping(value = "/help/openHelp_report.do")
	public ModelAndView test(
	Map map, ModelMap model) throws Exception{
	//본인 프로젝트에 맞는 방법으로
	//쿼리를 실행하여 값을 리스트에 담는다
	          List> list = new ArrayList>();
	          return JasperReportUtil.render("multiformat-view", list, "pdf"); 
	}
이렇게 호출하면 에러는 없고 실행이 안됩니다. 이렇게 호출했을경우 정상적으로 구동 되는경우 미리보고 화면이 나와야 되는겁니까?
김현기

testVO는 안쓰셔도 됩니다 
그냥 리스트로 받아서 넘겨주면 됩니다
HKH

tsetVo는 어떻게 만들면 되나요?
김현기
keyboard_arrow_left
keyboard_arrow_up