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);? //視圖名稱請參考第二步中的定義
???
??? }
以上是個人實際編程中的一點兒經驗,望各位大俠指教。