1、
在
mywebapp-servlet.xml
中定义报表视图解析器:
<!-- 报表视图解析器 -->
<bean id="anyname_rptViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="order" value="1"/>
<property name="basename" value="views"/>
</bean>
2、
新建报表视图资源文件
views.properties
mysamplerpt.class=org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView
mysamplerpt.url=/WEB-INF/reports/mysample_rpt.jasper
注意:“views”就是上面的“basename”。
3、
在web.xml中定义请求URL过滤
<servlet>
<servlet-name>mywebapp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<!-- 报表URL,PDF格式 -->
<servlet-mapping>
<servlet-name>mywebapp</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
<!-- 报表请求URL,Excel格式 -->
<servlet-mapping>
<servlet-name>mywebapp</servlet-name>
<url-pattern>*.xls</url-pattern>
</servlet-mapping>
注意:此两处定义将所有.pdf和.xls后缀的URL纳入Spring MVC的
4、
在
mywebapp-servlet.xml
中定义请求
URL
映射
<bean id="scureUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<prop key="/showmysamplerpt_inpdf.pdf">MyRptController</prop> <!
—
将得到PDF格式的报表
à
<prop key="/showmysamplerpt_inxls.xls">MyRptController</prop> <!
—
将得到Excel格式的报表
à
</bean>
5、
MyRptController的实现
public
class MyRptController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String uri = request.getRequestURI();
String format = uri.substring(uri.indexOf(".") + 1); //取得URL后缀
Map model = new HashMap();
model.put("datasource", getApplicationContext().getBean("myDataSource")); //数据源
model.put("format", format); //根据URL后缀确定格式
return
new ModelAndView("mysamplerpt", model); //视图名称请参考第二步中的定义
}
以上是个人实际编程中的一点儿经验,望各位大侠指教。