
我把核心代码给你,你一定要看懂这个代码,否则还是写不出的,注释我都标的很详细了。前几行是我的方法,作用的返回所有课程,你知道意思就行,因为不一定要这样写,你采用你的方式遍历一边数据库表项并循环插入到dataset就行,其实很简单的~
<%
CourseDAO dao = new CourseDAO();//dao类
ArrayList<Courseinfo> list = (ArrayList<Courseinfo>) daoallCourses();//这个方法是返回所有的课程
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int i = 0; i < listsize(); i++) { //遍历所有课程,把内容依次添加到dataset里
datasetaddValue(listget(i)getCoursenum(), "totalnum", listget(i)getCoursename());
}
JFreeChart freechart = ChartFactorycreateBarChart3D("选课信息统计图",
"课程名称", "选课人数", dataset, PlotOrientationVERTICAL, true,true, true);
freechartsetBackgroundPaint(ColorLIGHT_GRAY);
freechartgetTitle()setPaint(ColorBLUE);
freechartgetLegend()setVisible(true);
Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null;
txtTitle = freechartgetTitle();
txtTitlesetFont(font);
CategoryPlot plot = freechartgetCategoryPlot();
CategoryAxis domainAxis = plotgetDomainAxis();
//设置距离左端距离
domainAxissetLowerMargin(002);
//设置距离右端距离
domainAxissetUpperMargin(002);
domainAxissetLabelFont(new Font("黑体", FontPLAIN, 14));
//水平底部标题
domainAxissetTickLabelFont(new Font("宋体", FontPLAIN, 14));
//垂直标题
ValueAxis rangeAxis = plotgetRangeAxis();//获取柱状
rangeAxissetLabelFont(new Font("黑体", FontPLAIN, 14));
plotsetDomainAxis(domainAxis);
//2
rangeAxissetUpperMargin(008);
//设置最低的一个柱与底端的距离
rangeAxissetLowerMargin(024);
plotsetRangeAxis(rangeAxis);
//3
BarRenderer3D bar = new BarRenderer3D();
barsetBaseOutlinePaint(ColorBLACK);
//设置 Wall 的颜色
barsetWallPaint(ColordarkGray);
//设置每种代表的柱的颜色
barsetSeriesPaint(0, new Color(255, 0, 0));
barsetSeriesPaint(1, new Color(0, 255, 0));
barsetSeriesPaint(2, ColorBLUE);
//设置每种代表的柱的 Outline 颜色
barsetSeriesOutlinePaint(0, ColorBLACK);
barsetSeriesOutlinePaint(1, ColorBLACK);
barsetSeriesOutlinePaint(2, ColorBLACK);
//设置平行柱的之间距离
barsetItemMargin(002);
//显示每个柱的数值,并修改该数值的字体属性
barsetItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barsetDrawBarOutline(true);
barsetIncludeBaseInRange(true);
barsetItemLabelFont(new Font("华文新魏", FontPLAIN, 8));
barsetItemLabelsVisible(true);
plotsetRenderer(bar);
BarRenderer3D renderer = (BarRenderer3D) plotgetRenderer();
renderersetWallPaint(ColorPINK);
plotsetForegroundAlpha(100f);
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderersetBasePositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchorOUTSIDE12, TextAnchorBASELINE_LEFT));
renderersetItemLabelAnchorOffset(10D);
GradientPaint gradientpaint = new GradientPaint(00F, 00F,
Colorblue, 00F, 00F, new Color(0, 0, 64)); //设定特定颜色
GradientPaint gradientpaint1 = new GradientPaint(00F, 00F,
Colorcyan, 00F, 00F, new Color(0, 64, 0));
renderersetSeriesPaint(0, gradientpaint);
renderersetSeriesPaint(1, gradientpaint1);
//设置柱的 Outline 颜色
renderersetSeriesOutlinePaint(0, ColorBLACK);
renderersetSeriesOutlinePaint(1, ColorBLACK);
//设置每个category所包含的平行柱的之间距离
renderersetItemMargin(01);
//显示每个柱的数值,并修改该数值的字体属性
renderer
setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
String filename = ServletUtilitiessaveChartAsPNG(freechart, 600,
400, null, session);
String grapUrl = requestgetContextPath()
+ "/DisplayChartfilename=" + filename;
%>
<center>
<img src="<%=grapUrl%>" width="700" height="500" border="0"
usemap="#<%=filename%>">
</center>
上面的给出了jsp内嵌java的最初模式,现在一般是三层结构了即MVC结构,就这个例子我来给你解释下是怎么做的,java对连接数据库提供了统一的接口,各个数据库厂商根据提供的接口规范开发自己的连接方法顺序如下:1、用ClassforName()方法加载驱动:ClassforName("commicrosoftjdbcsqlserverSQLServerDriver")newInstance(); 黑体部分为数据库厂商自己开发的驱动。2、定义好连接数据库的url地址,连接串String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";黑体部分为固定写法不用理会。回到你最初的问题,如何创建数据库,这里你可以去baidu下每个数据库创建的方法,一般数据库安装的时候都有默认的数据库名,和对应的系统管理员工号和密码,DatabaseName=pubs这里说明sql serv 2000中建立了一个名字叫pubs的数据库jdbc:microsoft:sqlserver://localhost:1433固定写法唯一不同的是1433端口号,可能你在安装sql serv 2000的时候改变了该端口号为1500那么这里就应该为jdbc:microsoft:sqlserver://localhost:15003、定义好DatabaseName=pubs的登录用户名和密码 String user="sa";用户名
String password="";密码4、创建Connection对象,通过调用DriverManagergetConnection方法获得。 Connection conn= DriverManagergetConnection(url,user,password);黑体部分就是你定义好的连接串,用户名,密码,不可改变顺序。到这里为止数据库就连接上了,但是连接好了数据库还要做点什么,比如打印出来,接下看。5、通过获得的Connection对象conn创建Statement 对象stmtStatement stmt=conncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE,ResultSetCONCUR_UPDATABLE);黑体部分是定义ResultSet的一些属性的,具体含义可以参考JDK的api。6、定义好你准备取得数据的sql语句,比如下面 select from test说明想从test表中取得所有的数据,关于sql语句可以去查找相关数据库资料。 String sql="select from test";定义好语句后,就用上一步创建好的Statement 对象stmt来执行这个sql语句,并返回一个ResultSet对象。
ResultSet rs=stmtexecuteQuery(sql);执行完这步后rs中已经取得了test表所有的数据,那么接下来要展现在网页上。7、rsnext()对你取得的记录集做一个循环直到没有值为止,rsgetString(1)代表你test表中的第一个字段rsgetString(2)代表你test中的第二个字段,如果还有更多字段可以继续rsgetString(3)rsgetString(N) while(rsnext()) {%>
您的第一个字段内容为:<%=rsgetString(1)%>
您的第二个字段内容为:<%=rsgetString(2)%>
<%}%>8、当所有数据展现完毕,调用close()方法将所有资源关闭。 rsclose();
stmtclose();
connclose();回顾下大致过程:加载驱动 ClassforName();定义好相关的数据,调用DriverManagergetConnection(driver,user,password)获得一个数据库连接conn通过conn创建Statement对象stmt,conncreateStatement();通过stmt执行定义好的sql语句获得数据集ResultSet rs=stmtexecuteQuery(“select from test”);通过rsnext()方法循环遍历数据集的数据,通过rsgetString(1)获得第一条数据的第一个字段内容,这里要注意的是getString是对应数据库是字符类型,如果test表的第一个字段不是字符类型则用rsgetInt(1)获得。展现完毕后关闭所有资源conn stmt rs close方法。
创建数据库
选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。
在对象资源管理器窗口中展开服务器,然后选择数据库节点
右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。
执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。
在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。
切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到文件组页,在这里可以添加或删除文件组。
完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。
最简单的JSP页面中的数据库 *** 作方法:
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<%@page import="javasql"%>
<center>
<H1> <font color="blue" size="12">管理中心</font></H1>
<HR />
<table width="80%" border="1">
<tr>
<th>ID</th>
<th>书名</th>
<th>作者</th>
<th>价格</th>
<th>删除</th>
</tr>
<%
// 数据库的名字
String dbName = "zap";
// 登录数据库的用户名
String username = "sa";
// 登录数据库的密码
String password = "123";
// 数据库的IP地址,本机可以用 localhost 或者 127001
String host = "127001";
// 数据库的端口,一般不会修改,默认为1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//声明需要使用的资源
// 数据库连接,记得用完了一定要关闭
Connection con = null;
// Statement 记得用完了一定要关闭
Statement stmt = null;
// 结果集,记得用完了一定要关闭
ResultSet rs = null;
try {
// 注册驱动
ClassforName("commicrosoftsqlserverjdbcSQLServerDriver");
// 获得一个数据库连接
con = DriverManagergetConnection(connectionUrl);
String SQL = "SELECT from note";
// 创建查询
stmt = concreateStatement();
// 执行查询,拿到结果集
rs = stmtexecuteQuery(SQL);
while (rsnext()) {
%>
<tr>
<td>
<%=rsgetInt(1)%>
</td>
<td>
<a href="prepareupdateID=<%=rsgetInt("ID")%>" target="_blank"><%=rsgetString(2)%></a>
</td>
<td>
<%=rsgetString(3)%>
</td>
<td>
<%=rsgetString(4)%>
</td>
<td>
<a href="deleteID=<%=rsgetInt("ID")%>" target="_blank">删除</a>
</td>
</tr>
<%
}
} catch (Exception e) {
// 捕获并显示异常
eprintStackTrace();
} finally {
// 关闭我们使用过的资源
if (rs != null)
try {
rsclose();
} catch (Exception e) {}
if (stmt != null)
try {
stmtclose();
} catch (Exception e) {}
if (con != null)
try {
conclose();
} catch (Exception e) {}
}
%>
</table>
<a href="insertjsp">添加新纪录</a>
</center>
<html>
<head>
<title>JSP中使用 Java Bean的测试</title>
</head>
<body>
<jsp:useBean id="test" class="SimleBean" />
<jsp:setProperty name="test" property="message" value="Hello JSP"/>
<p>消息:
<jsp:getProperty name="test" property="message" />
</body>
</html>
解释:
<jsp:useBean id="test" class="SimleBean" />:表示定义一个java bean的实例,实例的名称是test,类的名称是SimleBean。
<jsp:setProperty name="test" property="message" value="Hello JSP"/>:表示设置实例test的属性message,其值是"Hello JSP"。
<jsp:getProperty name="test" property="message" />:表示在页面中输出实例test的属性message的值。
· testjsp文件中用到的java bean 的代码SimpleBeanjava如下:
package test;
//注意这里好像一定要有包名,没有包我试过不行,SimpleBeanclass连同父文件夹放在WEB-INF\classes\下面
public class SimpleBean
{
private String message;
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
thismessage = message;
}
}
1、 <jsp:useBean>
javaBean是特殊类型的java类,它与普通java类相比主要区别是包含了两种特殊的方法:set…(设置属性的方法)、get…(取属性值的方法)。
<jsp:useBean>动作用来查找或实例化一个jsp页面使用的JavaBeans组件。
在程序中可把逻辑控制、数据库 *** 作放在javabeans组件中,然后在jsp文件中调用它,这样可增加程序的清晰度及程序的可重用性。
· 语法如下:
<jsp:useBean id="beanInstanceName"
scope="page | request | session | application"
class="packageclaaa"
type="packageclaaa"
other elements
/>
· 属性:
1) id="beanInstanceName"
用来绑定Bean实例的变量。
2) class|type="packageclaaa"
表明该bean具体是对哪个类的实例化。
3) scope="page | request | session | application"
表示该bean的有效范围。
Page:实例的有效范围是当前页面。
Request:实例的有效范围是一个单独客户请求的生命周期内。
Session:实例的有效范围是整个用户会话的生命周期内。
Application:实例的有效范围是应用的生命周期内。
2、 <jsp:setProperty>
该动作的含义是使用bean中相应的set()方法设置一个或多个属性的值,值的来源是通过value属性明确给出,或者利用request对象中相应的参数。
假设某个bean有一个string类型的可被JSP文件使用的属性myProperty,则它必须有一个public方法setMyProperty(string value),<jsp:setProperty>动作使用的就是该方法。
· 语法如下:
<jsp:setProperty name="beanInstanceName"
property="" | property ="propertyName"
value="具体的值"
/>
· 属性:
1) name="beanInstanceName"
这个属性是必须的,用来表明对哪个bean实例执行下面的动作,这个值和动作<jsp:useBean>中定义的id必须对应起来,包括大小写都必须一致。
2) property="" | property ="propertyName"
这个属性是必须的,用来表示要设置哪个属性。如果property的值是"",表示用户在可见的JSP页面中输入的全部值,存储在匹配的bean属性中。匹配的方法是:bean的属性名称必须与输入框的名字相同。
3) value="具体的值"
它用来指定bean的属性的值。
3、 <jsp:getProperty>
这个动作提取指定bean属性的值,转换成字符串,然后输出。该动作实际是调用了bean的get()方法。
按上文提到的某个bean有一个string类型的可被JSP文件使用的属性myProperty,它必须有一个返回类型为string的public方法getMyProperty()。<jsp:getProperty>使用的就是这个方法。
语法如下:
<jsp:getProperty name="beanInstanceName" property="propertyName"/>
· 属性:
1) name="beanInstanceName"
这个属性是必须的,用来表明对哪个bean实例执行下面的动作,这个值和动作<jsp:useBean>中定义的id必须对应起来,包括大小写都必须一致。
2) property="" | property ="propertyName"
这个属性是必须的,用来表示要获取哪个属性。
以上就是关于jsp页面 jfreechart调用数据库中的数据并以柱状图的形式显现出来全部的内容,包括:jsp页面 jfreechart调用数据库中的数据并以柱状图的形式显现出来、jsp连接数据库方法(详细的)、求一个,jsp页面应用 ajax 通过 server 调用 数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)