Response对象:使用 `response` 对象实现简单的数据统计与分析。
inputamounts.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body background =../image/back.gif>
<style>
#textStyle{
font-family:宋体;font-size:18;color:blue
}
</style>
<p id="textStyle">
<form action="dataAnalysis.jsp" method=post >
输入对烈士信息了解有关数据:<br>
烈士信息了解程度调查总人数:<input type="text" name="totalAmounts" value=1 size=12 /><br>
不了解也不知道:<input type="text" name="amount0" value=1 size=12 /><br>
知道一些但不多:<input type="text" name="amount1" value=1 size=12 /><br>
知道许多:<input type="text" name="amount2" value=1 size=12 /><br>
愿意花时间去了解他(她)们:<input type="text" name="amount3" value=1 size=12 /><br>
以他(她)们为榜样学习:<input type="text" name="amount4" value=1 size=12 /><br>
<input type="submit" name="submit" id="textStyle" value="看数据分析"/><br>
<input type="submit" name="submit" id="textStyle" value="看数据饼图"/>
</form>
</p></body></HTML>
dataanalysis.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="javax.imageio.ImageIO" %>
<% request.setCharacterEncoding("utf-8");
String submitValue = request.getParameter("submit");
String totalAmounts = request.getParameter("totalAmounts");
String amounts0 = request.getParameter("amount0");
String amounts1 = request.getParameter("amount1");
String amounts2 = request.getParameter("amount2");
String amounts3 = request.getParameter("amount3");
String amounts4 = request.getParameter("amount4");
int amounts0_number = Integer.parseInt(amounts0);
int amounts1_number = Integer.parseInt(amounts1);
int amounts2_number = Integer.parseInt(amounts2);
int amounts3_number = Integer.parseInt(amounts3);
int amounts4_number = Integer.parseInt(amounts4);
int totalAmounts_number = Integer.parseInt(totalAmounts);
boolean isRight = totalAmounts_number == amounts0_number+amounts1_number+
amounts2_number+amounts3_number+amounts4_number ;
if(isRight == false) {
response.sendRedirect(" inputamount.jsp");
return;
}
double percent0 = (double)amounts0_number/totalAmounts_number;
double percent1 = (double)amounts1_number/totalAmounts_number;
double percent2 = (double)amounts2_number/totalAmounts_number;
double percent3 = (double)amounts3_number/totalAmounts_number;
double percent4 = (double)amounts4_number/totalAmounts_number;
double angSt = 0;
double angExt = 0;
int x = 450,y =50;
if(submitValue.equals("看数据饼图")){
response.setContentType("image/jpeg");//response更改相应用户的MIME类型
int width=1000, height=500;
BufferedImage image =
new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
Graphics2D g_2d=(Graphics2D)g;
Arc2D arc=new Arc2D.Double(0,0,400,400,0,360,Arc2D.PIE);
arc.setAngleStart(angSt); //设置饼弧的开始角度
angExt = -percent4*360;
arc.setAngleExtent(angExt); //设置饼弧度数
g_2d.setFont(new Font("",Font.PLAIN,22));
g_2d.setColor(Color.black);
g_2d.drawString("黑色以他(她)们为榜样学习",x,y);
g_2d.fillRect(x+150,35,30,15);
g_2d.fill(arc); //绘制不及格的饼图
angSt = -percent4*360;
angExt = -percent3*360;
arc.setAngleStart(angSt); //设置饼弧的开始角度
arc.setAngleExtent(angExt); 设置饼弧度数
g_2d.setColor(Color.green);
g_2d.drawString("绿色 愿意花时间去了解他(她)们",x,y=y+30);
g_2d.fillRect(x+150,65,30,15);
g_2d.fill(arc); //绘制60-69分的饼图
angSt = -(percent4*360+percent3*360);
angExt = -percent2*360;
arc.setAngleStart(angSt); //设置饼弧的开始角度
arc.setAngleExtent(angExt); 设置饼弧度数
g_2d.setColor(Color.yellow);
g_2d.drawString("黄色 知道许多",x,y=y+30);
g_2d.fillRect(x+150,95,30,15);
g_2d.fill(arc); //绘制70-79分的饼图
angSt = -(percent4*360+percent3*360+percent2*360);
angExt = -percent1*360;
arc.setAngleStart(angSt); //设置饼弧的开始角度
arc.setAngleExtent(angExt); 设置饼弧度数
g_2d.setColor(Color.blue);
g_2d.drawString("蓝色 知道一些但不多",x,y=y+30);
g_2d.fillRect(x+150,125,30,15);
g_2d.fill(arc); //绘制80-89分的饼图
angSt = -(percent4*360+percent3*360+percent2*360+percent1*360);
angExt = -percent0*360;
arc.setAngleStart(angSt); //设置饼弧的开始角度
arc.setAngleExtent(angExt); 设置饼弧度数
g_2d.setColor(Color.pink);
g_2d.drawString("粉色 不了解也不知道",x,y=y+30);
g_2d.fillRect(x+150,155,30,15);
g_2d.fill(arc); //绘制90-100分的饼图
try {
OutputStream outClient= response.getOutputStream();//指向用户端的输出流
boolean boo =ImageIO.write(image,"jpeg",outClient);
}
catch(Exception exp){}
}
%>
<HTML><body background =../image/back.gif>
<p style="font-family:宋体;font-size:18;color:blue">
<%
String percent0Result = String.format("%.3f%%",percent0*100);
String percent1Result = String.format("%.3f%%",percent1*100);
String percent2Result = String.format("%.3f%%",percent2*100);
String percent3Result = String.format("%.3f%%",percent3*100);
String percent4Result = String.format("%.3f%%",percent4*100);
%>
<b>成绩百分比分布(保留3位小数)<br>
不了解也不知道:<%=percent0Result %><br>
知道一些但不多:<%=percent1Result %><br>
知道许多:<%=percent2Result %><br>
愿意花时间去了解他(她)们:<%=percent3Result %><br>
以他(她)们为榜样学习:<%=percent4Result %><br>
</p></body></HTML>