jfreechart整合struts2入门之一2011-01-13 07:51 P.M. 报表,大家都很熟悉吧,如何做一个动态报表,下面这个简单例子让你体会到jfreechart的强大.
代码:
jfree.jsp页面代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>jfree.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script type="text/javascript" src="jslib/jfree.js"></script>
</head>
<body>
<div>
<font size="3" color="red" style="margin-left: 100px;">请选择季度</font>
<select name="selected" id="selected" onchange="jfree()">
<option value="1">第一季度</option>
<option value="2">第二季度</option>
<option value="3">第三季度</option>
</select>
</div>
<br>
<div>
<img id="imgs" src="listAction.action"/>
</div>
</body>
</html>
jfree.js代码如下:
function jfree(){
var month = document.getElementById("selected").value;
document.getElementById("imgs").src ="listAction.action?month="+month;
}
JfreeAction.java代码如下:
package jfree.action;
import java.awt.Color;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.TextAnchor;
import jfree.dao.JFreeModelDao;
import jfree.dao.JFreeModelDaoImpl;
import jfree.model.JfreeModel;
import com.opensymphony.xwork2.ActionSupport;
public class JfreeAction extends ActionSupport implements ServletRequestAware{
/**
*
*/
private static final long serialVersionUID = -1211545339874371458L;
private static JFreeModelDao dao = new JFreeModelDaoImpl();
private HttpServletRequest request;
private JFreeChart chart;
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
@Override
public String execute() throws Exception {
return super.execute();
}
public String dawPic() throws IOException{
String month = request.getParameter("month");
if(month==null){
month = "1";
}
this.chart = getChart(month);
return SUCCESS;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public JFreeChart getChart(String month){
List<JfreeModel> list =dao.getModel(month);
double[][] data = new double[4][4];
for(int i=0;i<list.size();i++){
JfreeModel jm = list.get(i);
data[i][0] = jm.getNoteNum();
data[i][1] = jm.getMobileNum();
data[i][2] = jm.getComputerNum();
data[i][3] = jm.getCameraNum();
}
String[] rowKeys = {"笔记本","手机","电脑","数码相机"};
String[] columnKeys = {"北京", "上海", "广州", "深圳"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);
JFreeChart chart = ChartFactory.createBarChart3D("四大城市第"+month+"季度销售统计图 ",
"IT产品",
"销量",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
CategoryPlot plot = chart.getCategoryPlot();
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink);
//显示每个柱的数值,并修改该数值的字体属性
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
//设置每个地区所包含的平行柱的之间距离
//renderer.setItemMargin(0.3);
plot.setRenderer(renderer);
//设置地区、销量的显示位置
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
return chart;
}
}
Struts.xml配置如下:
<package name="jfree" extends="jfreechart-default">
<action name="listAction" class="jfree.action.JfreeAction" method="dawPic">
<result name="success" type="chart">
<param name="width">500</param>
<param name="height">300</param>
</result>
</action>
</package>
Model层
JfreeModel.java代码如下:
package jfree.model;
public class JfreeModel {
private int id;
private double noteNum; //笔记本销售量
private double cameraNum; //数码相机销售量
private double computerNum; //电脑销售量
private double mobileNum; //手机销售量
private int month; //月份
......//getters setters
}
DAO层
接口JFreeModelDao代码 :
package jfree.dao;
import java.util.List;
import jfree.model.JfreeModel;
public interface JFreeModelDao {
public List<JfreeModel> getModel(String month);
}
实现类JFreeModelDaoImpl.java代码如下:
package jfree.dao;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.jfree.util.UtilHibernate;
import jfree.model.JfreeModel;
public class JFreeModelDaoImpl implements JFreeModelDao {
@SuppressWarnings("unchecked")
public List<JfreeModel> getModel(String month) {
Session session = UtilHibernate.getSession();
List<JfreeModel> list = null;
try {
session.beginTransaction();
String sql = "from JfreeModel where month="+"'"+month+"'";
list = session.createQuery(sql).list();
session.getTransaction().commit();
} catch (HibernateException e) {
session.getTransaction().rollback();
e.printStackTrace();
}finally{
UtilHibernate.closeSession(session);
}
return list;
}
}
service层暂时不用
注意事项:
(1)导入struts2-jfreechart-plugin-2.1.8.1.jar包
(2)action配置是要注意继承jfreechart-default
.......................................................ok!!!
该事例有空会做进一步的开发
分享到:
相关推荐
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中的一个常见组合。这个实例源码使用的是Spring 3.2、Struts2 2.3.4和Hibernate 4.2这三个框架的较新版本,提供了一个基础的用户登录和用户...
SSH2框架,全称为Spring、Struts2和Hibernate2,是Java Web开发中常见的MVC架构的集成。这个框架组合提供了强大的数据持久化、业务逻辑处理和用户界面控制能力,常用于构建复杂的企业级应用程序。在"ssh2框架练习...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中常用的MVC(Model-View-Controller)架构模式的一种实现。这个"简单ssh2框架程序"是一个基础的Web工程,主要涵盖了用户登录、注册和登出这...
对于新手来说,独自完成一个完整正确的SSH框架可能是一个相当困难麻烦的事。在此我利用Myeclipse+mysql环境下使用截图外加简略文字引导初学者一步一步的搭建出一个完整的SSH框架。图片及解说都存放在doc文档中你可以...
SSH2框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了全面的企业级应用解决方案,适用于构建高效、可维护性高的Web应用程序。Spring作为核心容器,负责...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java开发领域中常用的Web应用开发框架。这个框架结合了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java开发中常用的一个企业级应用框架。这个框架结合了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程...
SSH2框架,全称为Struts2、Spring和Hibernate2的集成框架,是Java Web开发中的一个常用技术栈,主要用于构建高效、可维护性高的企业级应用程序。本详细图解将带你一步步了解如何搭建SSH2框架,并实现一个简单的注册...
SSH2框架,全称为Struts2、Spring和Hibernate2的集成框架,是Java Web开发中的一个常用工具包,尤其适合大型企业级应用。这个框架集合了三个强大的组件,分别是Struts2负责MVC(Model-View-Controller)模式的实现,...
ssh2,SSH2web开发框架,ssh2框架连接mysql,ssh2源码实例,ssh2框架实例,该SSH2框架中配置都写好了,SSH2框架的版本为struts-2.3.8,spring-framework-3.2.2,hibernate-release-4.2.1.Final。注意连接数据库时要...
Java SSH2框架,全称是Struts2 + Spring + Hibernate2,是Java Web开发中的一种经典组合,用于构建高效、可扩展的企业级应用程序。在这个框架中,Struts2负责表现层,Spring处理业务逻辑和依赖注入,Hibernate则作为...
SSH2框架是Java开发中的一个流行组合,由Spring、Struts2和Hibernate三个开源框架组成。这个框架集合常被用于构建高效、可扩展的企业级应用。以下是对这三个框架及其结合使用的详细解释: **Spring框架**: Spring...
SSH2框架,全称为Struts2、Spring3和Hibernate3,是Java开发Web应用程序时常用的一种集成框架。这个框架组合提供了强大的MVC(Model-View-Controller)设计模式支持、依赖注入(DI)以及持久层管理,大大简化了Web...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中的一个强大工具。这个框架组合了Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)功能,Struts2的MVC(Model-...
SSH2jar包是SSH2框架的Java实现,它允许Java应用程序利用SSH协议进行安全通信。SSH2框架jar包提供了丰富的功能,包括但不限于: 1. **安全连接建立**:SSH2jar包支持通过公钥/私钥对进行身份验证,防止中间人攻击,...
SSH2框架整合是Java开发中的一个重要概念,它指的是Spring、Struts2和Hibernate这三大主流开源框架的集成应用。在企业级Web应用开发中,SSH2框架整合能够提供高效、灵活且可维护的解决方案。 首先,Spring框架是SSH...
JavaEE Spring Struts2 Hibernate SSH2框架(登录例子) JavaEE Spring Struts2 Hibernate SSH2框架(登录例子) JavaEE Spring Struts2 Hibernate SSH2框架(登录例子) JavaEE Spring Struts2 Hibernate SSH2框架(登录...
SSH2框架,全称为Secure Shell 2,是一个用于网络服务的安全协议,主要用于提供加密网络通信、身份验证以及安全文件传输等功能。在Java开发环境中,SSH2框架常常被用来构建安全的远程访问和管理服务。MyEclipse是一...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中常用的MVC(Model-View-Controller)架构模式的一种实现。这个框架结合了Spring的依赖注入、事务管理,Struts2的请求处理和视图展现,以及...
使用Spring、Struts、Hibernate框架,进行MVC三层结构开发,这是一个小米产品购物网站,其中实现了注册,登录,注销等用户功能,其次还进行了产品的分类、分页显示,利用Struts标签库进行数据分条显示,其中也添加了...