`
EJB_wawa
  • 浏览: 108992 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用servlet生成图片,在jsp叶面中显示

    博客分类:
  • web
阅读更多
用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生成验证码图片

    ### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...

    JSP 调用servlet 显示图片

    在本文中,我们将介绍如何使用 Servlet 显示图片,并在 JSP 页面中调用 Servlet 实现图片的显示。 首先,我们需要创建一个 Servlet 程序来显示图片。这个 Servlet 程序需要继承 HttpServlet 类,并重写 doGet() ...

    使用Servlet生成图片验证码

    在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...

    使用servlet,jdbc将mysql中数据显示在jsp页面中

    在Web开发中,Servlet、JDBC以及JSP(JavaServer Pages)是常见的技术组合,用于构建动态、数据驱动的Web应用程序。在这个项目示例中,我们将深入探讨如何使用这些技术将MySQL数据库中的数据呈现到JSP页面上。 首先...

    在JSP中显示servlet中生成的或读取的图片

    在JSP中显示Servlet生成或读取的图片是一项常见的任务,尤其在动态网站开发中,例如用户上传的图片处理、验证码生成等场景。本篇将详细介绍如何实现这一功能,涉及的知识点包括Java Servlet、JSP、HTTP协议以及文件I...

    Servlet生成图片验证码

    在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...

    java jsp+servlet根据数据生成饼状图.rar

    总结来说,这个项目展示了如何在Java Web环境中结合使用JSP和Servlet,通过处理数据和利用图表库生成饼状图,最终以图像形式在网页上展示。这种能力在数据分析、报表系统等场景中非常常见,有助于提升用户对数据的...

    简单的servlet+jsp图片上传并显示图片解压就可用

    在本文中,我们将深入探讨如何使用Servlet和JSP实现一个简单的图片上传并显示的功能。Servlet是一种Java编程技术,常用于扩展服务器的功能,处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,可以方便...

    jsp+servlet实现图片上传

    在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...

    Head First Servlet & JSP

    在《Head First Servlet & JSP》中,你会了解到如何创建Servlet,包括Servlet生命周期、服务方法、初始化参数、会话管理以及如何在Servlet间进行协作。 JSP则是另一种用于生成动态网页的技术,它将HTML模板与Java...

    JSP+Servlet实现简易购物车功能

    在Web开发领域,JSP(JavaServer Pages)和Servlet是常用的两种技术,它们结合使用能够构建动态、交互式的Web应用程序。本项目“JSP+Servlet实现简易购物车功能”就是一个典型的示例,它展示了如何利用这两者来创建...

    JSPServlet技术在管理信息系统中的应用.pdf

    ### JSPServlet技术在管理信息系统中的应用:深入解析与实践 #### 一、JSPServlet技术概述 JSPServlet技术是JavaServer Pages (JSP) 和 Servlet 的组合使用,为Web应用程序开发提供了强大的支持。JSP是一种动态...

    jsp+servlet生成报表

    慕课网上jsp+servlet技术生成报表 一课的源码。并不完全,且要配数据库,但是基础知识点都是用到的,且能正常运行。希望对初学者有所帮助。我也是花了很多时间编写和调试的。

    jsp+servlet项目

    在实际项目中,通常使用JSP处理视图展示,而Servlet负责处理请求和业务逻辑。Servlet接收到请求后,进行必要的数据处理,然后可能将结果存储在域对象中(如HttpSession或RequestScope),最后转发或重定向到JSP页面...

    用Servlet实现的二维码图片生成

    在IT行业中,二维码(QR ...通过这个简单的例子,你可以了解如何使用Servlet和ZXing库实现二维码图片的动态生成。在`QR_Code_Servlet`压缩包文件中,应该包含了上述提及的Servlet代码和相关的JSP页面,供你参考和学习。

    登陆验证+servlet动态生成图片验证码

    在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是一些关键步骤: 1. **生成随机字符串**:使用`java.util.Random`和`char[]`数组来创建一个指定长度的...

    javax.servlet---jsp-api jar包

    例如,你可以使用Servlet来处理HTTP请求,执行业务逻辑,然后用JSP来生成动态HTML,展示给用户。它们也是许多Web框架,如Spring MVC、Struts的基础。 4. **开发与部署**: 开发者通常会将`javax.servlet` 和 `jsp-...

    jsp+servlet小项目(实现图片上传功能)

    在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 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍...

    旅游管理系统 jsp+servlet.zip

    - 使用JSP和Servlet进行前后端交互 - 设计和实施SQL查询以操作MySQL数据库 - 理解MVC架构并应用到实际项目中 - 部署和调试Java Web应用 - 实现用户认证和授权机制 - 数据库设计和优化 总的来说,"旅游管理...

Global site tag (gtag.js) - Google Analytics