springMvc自定义视图及解析器
来源:互联网 发布:淘宝dmp是什么意思 编辑:程序博客网 时间:2024/05/22 13:35
我们以jfreechart为例,自定义一个chart视图及解析器。
首先,自定义视图类ChartView,继承AbstractView, 如下:
自定义视图解析器ChartViewResolver,继承AbstractCachingViewResolver,如下
dispacher-servlet.xml文件的配置,注意视图解析器的顺序
控制层的代码,注意ChartView内的Map中的数据,就是这里modelMap中的数据
首先,自定义视图类ChartView,继承AbstractView, 如下:
public class ChartView extends AbstractView { @Override protected void renderMergedOutputModel(Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) throws Exception { JFreeChart chart=null; //IChart为自定义的接口规范。根据输出类型的不同调用相应的方法 switch (((Integer)map.get(IChart.CHARTTYPE)).intValue()) { case IChart.BAR:chart=getChartBar(map);break; case IChart.PIE:break; default:break; } //图片的输出 ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart, 200,200); } private JFreeChart getChartBar(Map<String, Object> map){ JFreeChart chart = ChartFactory.createBarChart3D("产品销量图", "产品名称", "销量", (CategoryDataset)map.get(IChart.CHARDATASET), PlotOrientation.VERTICAL, true, true, false); chart.getTitle().setFont(new Font("宋体", Font.BOLD, 20)); chart.getCategoryPlot().getDomainAxis().setTickLabelFont(new Font("宋体", Font.BOLD, 11)); chart.getCategoryPlot().getDomainAxis().setLabelFont(new Font("黑体", Font.BOLD, 12)); chart.getCategoryPlot().getRangeAxis().setTickLabelFont(new Font("宋体", Font.BOLD, 11)); chart.getCategoryPlot().getRangeAxis().setLabelFont(new Font("黑体", Font.BOLD, 12)); chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 11)); return chart; }}
自定义视图解析器ChartViewResolver,继承AbstractCachingViewResolver,如下
public class ChartViewResolver extends AbstractCachingViewResolver { private String chartSuffix;//后缀 private View chartView; @Override protected View loadView(String viewName, Locale locale) throws Exception { View view = null; if (viewName.endsWith(this.getChartSuffix())){ view =this.getChartView(); } return view; } public String getChartSuffix() { return chartSuffix; } public void setChartSuffix(String chartSuffix) { this.chartSuffix = chartSuffix; } public View getChartView() { return chartView; } public void setChartView(View chartView) { this.chartView = chartView; }}
dispacher-servlet.xml文件的配置,注意视图解析器的顺序
<bean id="chartViewResolver" class="com.zhang.webapp.util.ChartViewResolver"> <property name="chartSuffix" value=".chart"/> <property name="chartView"> <bean class="com.zhang.webapp.util.ChartView"/> </property></bean><!--注意viewResolver应放在最后,让自定义的优先执行 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/pages/"/> <property name="suffix" value=".jsp"/> </bean>
控制层的代码,注意ChartView内的Map中的数据,就是这里modelMap中的数据
@RequestMapping(value="/getchart.chart",method=RequestMethod.GET) public String getChart(ModelMap modelMap){ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(510, "深圳", "苹果"); dataset.addValue(320, "深圳", "香蕉"); dataset.addValue(580, "深圳", "橘子"); dataset.addValue(390, "济南", "梨子"); modelMap.addAttribute(IChart.CHARTTYPE,IChart.BAR); modelMap.addAttribute(IChart.CHARDATASET,dataset); return "webanalytics.chart"; }页面的代码:
<div id="tab_barChart" style="padding:0;display:block;"> <img id="chart_BAR" src="<c:url value='/user/getchart.chart'/>"> </div>
结果如下图所示:
0 0
- springMvc自定义视图及解析器
- springMVC 自定义视图及解析器
- 自定义springmvc视图解析器
- springmvc自定义视图解析器
- springMVC(9)------自定义视图解析器
- SpringMVC使用自定义视图解析器
- SpringMVC之视图解析器及解析过程浅析
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- springMVC视图解析器
- SpringMVC视图解析器
- SpringMVC视图解析器
- ASIHttpRequest简单用法
- 没明白的,后来还是明白oracle的JDBC驱动
- 很多朋友需求 android俄罗斯方块工程。
- 大家好,今天我的博客成立了
- dede织梦如何添加“自定义属性”
- springMvc自定义视图及解析器
- 统计某字符在字符串中出现的次数
- C指针原理(44)-Ncurses-文本终端的图形
- 怎样使用ServletContextListener接口
- 断言assertion使用
- sybase 升级
- 程序的用户地址空间映射
- 尝试编辑博客文章
- 《CMDB分步构建指南》译者序,不明白概念的可以读读