(jsp+servlet+mvc)jsp页面如何统计数据库表的不同count并显示(简易的echart)

从数据库中count不同的数据给servlet传到jsp页面上

最近在做一个java+servlet+mvc的一个项目,为了在jsp页面上显示数据库当中的统计的数据,我做了以下的方法

获取数据库.

// 获取数据库,保存到javabean中
public ArrayList<count> countN() throws Exception
	{			//统计用户

			ArrayList<count> al = new ArrayList<count>();
			//1加载驱动
			Class.forName(DBDRIVER);
			//2连接
			this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
			try 
			{
				count f = new count();
				ps = conn.prepareStatement("SELECT count(case when sex = '男' then 1 end) ,count(case when sex = '女' then 1 end)  ,count(*) FROM userinfo ");//不同性别的统计
				rs = ps.executeQuery();
				while(rs.next()) 
				{
					f.setFsex(String.valueOf(rs.getString(1)));
					f.setMsex(String.valueOf(rs.getString(2)));
					f.setCountU(String.valueOf(rs.getString(3)));				
				}
				ps = conn.prepareStatement("SELECT count(*) FROM friendinfo");
				rs = ps.executeQuery();
				while(rs.next())
				{
					f.setCountUb(String.valueOf(rs.getString(1)));
				}
				
				ps = conn.prepareStatement("SELECT count(*) FROM feedback");
				rs = ps.executeQuery();
				while(rs.next())
				{
					f.setMessageC(String.valueOf(rs.getString(1)));
				}
				
				ps = conn.prepareStatement("SELECT count(case when year(now())-YEAR(birthday) < 20 then 1 end) ,count(case when year(now())-YEAR(birthday) BETWEEN 20 and 40 then 1 end)  ,count(case when year(now())-YEAR(birthday) >40 then 1 end) FROM userinfo ");//不同的年龄进行统计
				rs = ps.executeQuery();
				while(rs.next())
				{
					f.setTw(rs.getString(1));
					f.setFo(rs.getString(2));
					f.setSi(rs.getString(3));
				
				}
				al.add(f);
				
				
				return al;
				
				
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				if(this.ps!=null) {
					this.ps.close();
				}
				if(this.conn!=null) {
					this.conn.close();
				}
				if(this.rs !=null) {
					this.rs.close();
				}
			}
			return al;
		
	}
servlet调用方法
// 调用获取数据库保存在javabean中的数据
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
ArrayList<count> al = new ArrayList<count> ();
	userCheck uc = new userCheck();
		try 
		{
			al = uc.countN();
		} 
		catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		request.setAttribute("count", al);//获取的值,保存在count里
		RequestDispatcher dis = request.getRequestDispatcher("admin/echart.jsp");//跳转到jsp页面上
		dis.forward(request, response);

下面展示一些 内联代码片

jsp显示
<body>
	<c:forEach var = "user" items = "${requestScope.count }">
	<div class="title" id="main3" style="width: 400px;height: 160px;">
    </script>
		<script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main3'));
        var nv = ${user.fsex };//获取到的男生数量
        var nan = ${user.msex };//获取到的女生数量
        option = {
            title: {
                text: '饼状图',
                backgroundColor:"red",
                borderColor: 'black',
            },
            tooltip : {  
                    trigger: 'item',  
                    formatter: "{a} <br/>{b} : {c} 个"  
                },  
            legend: {
                data:['比例'],
                color:'#FE0000'
            },
          series : [
          {
            name: '男女比例',
            type: 'pie',
            radius: '65%',
            data:[

                {value:nan, name:'男生',itemStyle:{normal:{color:'#3300CC'}}},
                {value:nv, name:'女生',itemStyle:{normal:{color:'#6633CC'}}}
            ],
            label:{            //饼图图形上的文本标签
                   normal:{
                       show:true,
                       position:'inner', //标签的位置
                       textStyle : {
                           fontWeight : 300 ,
                           fontSize : 12    //文字的字体大小
                       },
                       formatter:'{d}%'

                       
                   }
               },
        }
    ],
        itemStyle: {
        emphasis: {
            shadowBlur: 200,
            shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
    }
};
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </c:forEach>
		
</body>

界面显示结果:最终的界面显示就是饼状图所在的区域
大概就是这些了,新人很少写博客见谅。很多代码也没贴上去。做的可能还有错误,有啥问题的可以留言私信我

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值