简单生活 发表于 2015-1-18 11:50:42

JAVA编程:利用Servlet静态天生图片

通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。servlet|静态在Web使用中,常常必要静态天生图片,好比及时股市行情,各类统计图等等,这类情形下,图片只能在服务器内存中静态天生并发送给用户,然后在扫瞄器中显现出来。实质上,扫瞄器向服务器哀求静态图片如jpeg时,服务器前往的仍旧是尺度的http呼应,只不外http头的contentType不是text/html,而是image/jpeg罢了,因而,我们在Servlet中只需设置好contentType,然后发送图象的数据流,扫瞄器就可以准确剖析并显现出图片。在Java中,java.awt和java.awt.image包供应了基础的绘制图象的才能,我们能够在内存中绘制好必要的图形,然后编码成jpeg或其他图象格局,最初发送响应给扫瞄器便可。上面是利用Servlet静态创立图象的具体步骤:1.创立BufferedImage对象,该对象存在内存中,卖力保留绘制的图象;2.创立Graphics2D对象,该对象卖力绘制所需的图象;3.当绘制完成后,挪用com.sun.image.codec.jpeg包的JPEG编码器对其编码;4.最初将编码后的数据输入至HttpResponse便可。注重com.sun.image.codec.jpeg包位于JDK目次的rt.jar包中,它不是公然的API,必要将rt.jar复制到web使用程序的WEB-INF/lib下。我们先创立一个最复杂的Servlet:publicclassCreateImageServletextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("image/jpeg");}}我们起首设置了response的contentType为image/jpeg,如许扫瞄器就能够准确辨认。然后,创立一个巨细为100x100的BufferedImage对象,筹办画图:intwidth=100;intheight=100;BufferedImagebi=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);接着,BufferedImage对象中猎取Graphics2D对象并画图:Graphics2Dg=bi.createGraphics();//创立Graphics2D对象//添补背景为红色:g.setBackground(Color.BLUE);g.clearRect(0,0,width,height);//设置远景色:g.setColor(Color.RED);//入手下手画图:g.drawLine(0,0,99,99);//绘制一条直线//画图完成,开释资本:g.dispose();bi.flush();然后,对BufferedImage举行JPEG编码:JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);JPEGEncodeParamparam=encoder.getDefaultJPEGEncodeParam(bi);param.setQuality(1.0f,false);encoder.setJPEGEncodeParam(param);try{encoder.encode(bi);}catch(IOExceptionioe){ioe.printStackTrace();}编码后的JPEG图象间接输入到了out对象中,我们只需传进response.getOutputStream()就能够间接输入到HttpResponse中。上面是完全的代码:packagecom.crackj2ee.web.util;importjava.io.*;importjava.awt.*;importjava.awt.image.*;importjavax.servlet.*;importjavax.servlet.http.*;importcom.sun.image.codec.jpeg.*;/***@authorLiaoXueFeng*/publicclassCreateImageServletextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("image/jpeg");createImage(response.getOutputStream());}privatevoidcreateImage(OutputStreamout){intwidth=100;intheight=100;BufferedImagebi=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);Graphics2Dg=bi.createGraphics();//setbackground:g.setBackground(Color.BLUE);g.clearRect(0,0,width,height);//setforecolor:g.setColor(Color.RED);//startdraw:g.drawLine(0,0,99,199);//enddraw:g.dispose();bi.flush();//encode:JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);JPEGEncodeParamparam=encoder.getDefaultJPEGEncodeParam(bi);param.setQuality(1.0f,false);encoder.setJPEGEncodeParam(param);try{encoder.encode(bi);}catch(IOExceptionioe){ioe.printStackTrace();}}}最初将这个Servlet编译,注册到web.xml中,映照路径为/CreateImage,写一个复杂的index.html测试:<html><head></head><body><imgsrc="CreateImage"></body></html>如能准确显现,半途而废!
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。

若天明 发表于 2015-1-21 16:15:10

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

admin 发表于 2015-1-23 10:18:46

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

飘飘悠悠 发表于 2015-1-30 17:37:53

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

因胸联盟 发表于 2015-2-2 18:09:29

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

海妖 发表于 2015-2-5 08:49:51

是一种为 Internet发展的计算机语言

变相怪杰 发表于 2015-2-7 06:39:29

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

仓酷云 发表于 2015-2-8 22:15:40

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

冷月葬花魂 发表于 2015-2-26 11:43:46

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

乐观 发表于 2015-3-3 17:00:31

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

蒙在股里 发表于 2015-3-11 01:19:53

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

若相依 发表于 2015-3-15 09:35:49

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

第二个灵魂 发表于 2015-3-21 23:06:03

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

谁可相欹 发表于 2015-3-26 05:35:46

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

再见西城 发表于 2015-3-28 21:47:30

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

愤怒的大鸟 发表于 2015-4-1 13:11:23

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

深爱那片海 发表于 2015-4-21 19:57:48

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

再现理想 发表于 2015-4-21 20:14:09

是一种语言,用以产生「小应用程序(Applet(s))

金色的骷髅 发表于 2015-5-1 21:10:57

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

老尸 发表于 2015-6-19 14:09:24

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
页: [1]
查看完整版本: JAVA编程:利用Servlet静态天生图片