仓酷云

标题: JAVA编程:经由过程Jsp发送静态图象 [打印本页]

作者: 不帅    时间: 2015-1-18 11:39
标题: JAVA编程:经由过程Jsp发送静态图象
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好。js|静态
  你是不是已经想过从jsp页面(大概servlet)中发送静态发生的图象?这篇技能告知你怎样做。要运转这里的代码,你必要一个Tomcat大概其他撑持JSP1.1的web服务器。
  当一个web页面带有image/jpeg(大概其他的图象格局)的MIME范例被发送时,你的扫瞄器将谁人前往了局看成一个图象,然后扫瞄器显现图象,作为页面的一部分大概完整作为图象本身。要为你的jsp页面设置MIME范例,你必要设置页面的contentType属性:
  

  然后你必要创立一个BufferedImage绘制你的静态图象:
  BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

  创立完一个BufferedImage后,你必要失掉图形情况举行绘制,一个Graphics大概Graphics2D对象:

Graphicsg=image.getGraphics();
//or
Graphics2dg2d=image.createGraphics();

  从如今起你就能够绘制图象内容了。对图形情况绘制就会画到BufferedImage。最入手下手这个图象都是玄色的,因而用你但愿的背景色彩添补图象是一个不错的主张,然后,当你完成图象的绘制,你必要dispose图形情况:

g.dispose();
//or
g2d.dispose();

  一旦完成图象的绘制,你在response中前往谁人图象。你可使用非尺度的com.sun.image.codec.jpeg包中的JPEGImageEncoder类编码图象,大概假如你利用JDK1.4,你可使用尺度的ImageIO类。在利用JPEGImageEncoder时有一个技能,你必需从ServletResponse取来ServletOutputStream而不克不及利用隐含的JSP输入变量out。
ServletOutputStreamsos=response.getOutputStream();
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
//or
ImageIO.write(image,"JPEG",out);

  这里有一个从一切的大概计划中(比方g.dispose();大概g2d.dispose();)拔取的一个完全的典范.这个例子利用Graphics对象绘制一个随机的多边形,图象经由过程JPEGImageEncoder绘制,你能够自在设置多边形的极点数失掉更庞大的外形,换言之,有更多极点和边。

  要运转这个典范,将从""之间的jsp代码放到一个名为image.jsp的文件中,将谁人文件放到你的web服务器能够找到的中央,在利用Tomcat的情形下是ROOT目次,启动Tomcat,会见http://localhost:8080/image.jsp

  <%@pagecontentType="image/jpeg"
  import="java.awt.*,java.awt.image.*,
  com.sun.image.codec.jpeg.*,java.util.*"
  %> 
  <%
  //Createimage
  intwidth=200,height=200;
  BufferedImageimage=newBufferedImage(width,
  height,BufferedImage.TYPE_INT_RGB);
  //Getdrawingcontext  
  Graphicsg=image.getGraphics();
  //Fillbackground
  g.setColor(Color.white);
  g.fillRect(0,0,width,height);
  //Createrandompolygon
  Polygonpoly=newPolygon();
  Randomrandom=newRandom();
  for(inti=0;i<5;i++){
  poly.addPoint(random.nextInt(width),
  random.nextInt(height));
  }
  //Fillpolygon
  g.setColor(Color.cyan);
  g.fillPolygon(poly);
  //Disposecontext
  g.dispose();
  //Sendbackimage
  ServletOutputStreamsos=response.getOutputStream();
  JPEGImageEncoderencoder=
  JPEGCodec.createJPEGEncoder(sos);
  encoder.encode(image);
  %>




最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
作者: 再见西城    时间: 2015-1-19 10:26
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 金色的骷髅    时间: 2015-1-24 12:08
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: 老尸    时间: 2015-2-1 10:17
是一种突破用户端机器环境和CPU
作者: 活着的死人    时间: 2015-2-9 10:21
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 深爱那片海    时间: 2015-2-11 18:02
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: admin    时间: 2015-3-2 16:13
是一种使用者不需花费很多时间学习的语言
作者: 柔情似水    时间: 2015-3-4 10:14
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 山那边是海    时间: 2015-3-6 13:50
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 分手快乐    时间: 2015-3-11 18:37
是一种使用者不需花费很多时间学习的语言
作者: 小魔女    时间: 2015-3-17 10:11
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 小女巫    时间: 2015-3-24 07:09
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 精灵巫婆    时间: 2015-3-24 09:27
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 透明    时间: 2015-3-27 00:10
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 海妖    时间: 2015-4-1 17:10
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 莫相离    时间: 2015-4-5 10:34
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 灵魂腐蚀    时间: 2015-4-12 06:14
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 飘飘悠悠    时间: 2015-4-16 01:44
是一种为 Internet发展的计算机语言
作者: 冷月葬花魂    时间: 2015-4-23 11:13
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 只想知道    时间: 2015-4-29 22:00
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2