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;

       }

} 

 

 

AD
통관알리미
2014-07-13 14:47
SHARE
댓글

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

댓글 감사합니다. 위에 소스랑 설정 그대로 작업 했는데 실행이 안됩니다. 
@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는 안쓰셔도 됩니다 
그냥 리스트로 받아서 넘겨주면 됩니다
통관알리미

tsetVo는 어떻게 만들면 되나요?
김**