用servlet生成图片,在jsp叶面中显示。
代码如下~:
也是在网上找到的,但不知道为什么不能正确生成jpeg图片
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
public class VoteImage extends HttpServlet {
private String strFile = null;
private Color color[]={Color.red,Color.black,Color.orange,Color.green};
private int baseAng = 30;
public void doGet(ServletContext context,HttpServletResponse response) throws ServletException,IOException {
strFile = context.getRealPath("count.txt");
float[][] xy = new float[4][2];
xy = getNumAndPercent(strFile);
int[] ang = new int[4];
ang[0] = (int)(xy[0][1]*360);
ang[1] = (int)(xy[1][1]*360);
ang[2] = (int)(xy[2][1]*360);
ang[3] = 360-ang[0]-ang[1]-ang[2];
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
response.setContentType("image/jpeg");
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(150,100,BufferedImage.
TYPE_INT_RGB);
Graphics2D g=(Graphics2D)image.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.white);
g.fillRect(0,0,150,100);
AffineTransform at = null;
Arc2D arc = null;
int fromAng = baseAng;
at = AffineTransform.getRotateInstance((-20*java.lang.Math.PI)/180,45,37);
g.setTransform(at);
int r =6;
int dx = (int)(r*java.lang.Math.cos((baseAng+ang[0])/2.0*java.
lang.Math.PI/180));
int dy = (int)(r*java.lang.Math.sin((baseAng+ang[0])/2.0*java.
lang.Math.PI/180));
arc = new Arc2D.Double(10+dx,24-dy,80,50,fromAng,ang[0],Arc2D.PIE);
g.setColor(color[0]);
g.fill(arc);
fromAng+=ang[0];
for (int i=1;i<4;i++){
g.setColor(color[i]);
arc = new Arc2D.Double(10,24,80,50,fromAng,ang[i],Arc2D.PIE);
g.fill(arc);
fromAng+=ang[i];
if (fromAng>360){
fromAng-=360;
}
}
at = AffineTransform.getRotateInstance(0,arc.getCenterX(),arc.
getCenterY());
g.setTransform(at);
for (int i=0;i<4;i++){
g.setColor(color[i]);
g.fillRect(100,15*i+20,10,10);
g.drawString((char)('A'+i)+"",120,15*i+20+8);
}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doGet(request,response);
}
public synchronized float[][] getNumAndPercent(String sFileName){
float xx[][] = new float[4][2];
int totalNum = 0 ;
String strTemp = null;
int i = 0;
java.io.RandomAccessFile rf = null;
try {
rf = new java.io.RandomAccessFile (sFileName,"r");
} catch(Exception e){
System.out.println(e);
System.exit(0);
}
for (i=0;i<4;i++){
int m=0;
try {
strTemp = rf.readLine();
} catch (Exception e){
strTemp = "0";
}
if (strTemp == null) strTemp = "0";
m = new Integer(strTemp).intValue();
xx[i][0]=m;
totalNum += m;
}
if (totalNum==0) totalNum=1;
for ( i=0;i<4;i++){
xx[i][1] = xx[i][0]/totalNum;
}
return xx;
}
}
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
for(int i=0;i<xx.length;i++)
{
sos.write(xx[i]);
}
sos.close();
}
ServletOutputStream out = response.getOutputStream();
Graphics g2d = image.getGraphics();
Graphics2D g= (Graphics2D)g2d;
.
.
.
response.setContentType("image/gif");
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
分享到:
相关推荐
### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...
在本文中,我们将介绍如何使用 Servlet 显示图片,并在 JSP 页面中调用 Servlet 实现图片的显示。 首先,我们需要创建一个 Servlet 程序来显示图片。这个 Servlet 程序需要继承 HttpServlet 类,并重写 doGet() ...
在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...
在Web开发中,Servlet、JDBC以及JSP(JavaServer Pages)是常见的技术组合,用于构建动态、数据驱动的Web应用程序。在这个项目示例中,我们将深入探讨如何使用这些技术将MySQL数据库中的数据呈现到JSP页面上。 首先...
在JSP中显示Servlet生成或读取的图片是一项常见的任务,尤其在动态网站开发中,例如用户上传的图片处理、验证码生成等场景。本篇将详细介绍如何实现这一功能,涉及的知识点包括Java Servlet、JSP、HTTP协议以及文件I...
在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...
总结来说,这个项目展示了如何在Java Web环境中结合使用JSP和Servlet,通过处理数据和利用图表库生成饼状图,最终以图像形式在网页上展示。这种能力在数据分析、报表系统等场景中非常常见,有助于提升用户对数据的...
在本文中,我们将深入探讨如何使用Servlet和JSP实现一个简单的图片上传并显示的功能。Servlet是一种Java编程技术,常用于扩展服务器的功能,处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,可以方便...
在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...
在《Head First Servlet & JSP》中,你会了解到如何创建Servlet,包括Servlet生命周期、服务方法、初始化参数、会话管理以及如何在Servlet间进行协作。 JSP则是另一种用于生成动态网页的技术,它将HTML模板与Java...
在Web开发领域,JSP(JavaServer Pages)和Servlet是常用的两种技术,它们结合使用能够构建动态、交互式的Web应用程序。本项目“JSP+Servlet实现简易购物车功能”就是一个典型的示例,它展示了如何利用这两者来创建...
### JSPServlet技术在管理信息系统中的应用:深入解析与实践 #### 一、JSPServlet技术概述 JSPServlet技术是JavaServer Pages (JSP) 和 Servlet 的组合使用,为Web应用程序开发提供了强大的支持。JSP是一种动态...
慕课网上jsp+servlet技术生成报表 一课的源码。并不完全,且要配数据库,但是基础知识点都是用到的,且能正常运行。希望对初学者有所帮助。我也是花了很多时间编写和调试的。
在实际项目中,通常使用JSP处理视图展示,而Servlet负责处理请求和业务逻辑。Servlet接收到请求后,进行必要的数据处理,然后可能将结果存储在域对象中(如HttpSession或RequestScope),最后转发或重定向到JSP页面...
在IT行业中,二维码(QR ...通过这个简单的例子,你可以了解如何使用Servlet和ZXing库实现二维码图片的动态生成。在`QR_Code_Servlet`压缩包文件中,应该包含了上述提及的Servlet代码和相关的JSP页面,供你参考和学习。
在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是一些关键步骤: 1. **生成随机字符串**:使用`java.util.Random`和`char[]`数组来创建一个指定长度的...
例如,你可以使用Servlet来处理HTTP请求,执行业务逻辑,然后用JSP来生成动态HTML,展示给用户。它们也是许多Web框架,如Spring MVC、Struts的基础。 4. **开发与部署**: 开发者通常会将`javax.servlet` 和 `jsp-...
在IT行业中,Web开发是一项重要的技能,而JSP(JavaServer Pages)和Servlet是Java Web开发中的关键组件,尤其在构建动态网站时。本项目"jsp+servlet小项目(实现图片上传功能)"旨在教授如何利用这两者创建一个简单...
基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍...
- 使用JSP和Servlet进行前后端交互 - 设计和实施SQL查询以操作MySQL数据库 - 理解MVC架构并应用到实际项目中 - 部署和调试Java Web应用 - 实现用户认证和授权机制 - 数据库设计和优化 总的来说,"旅游管理...