天天看點

伺服器響應圖像的生成

???″?ㄥ??搴???????锛?HTTP??搴??ュご????HttpServletResponse?ュ?g??搴????惰??

涓?锛???搴??ュご?

?????? ??搴??ュご??璁告???″?ㄤ???涓??芥?懼?ㄧ?舵??琛?涓?????????搴?淇℃??,浠ュ???充????″?ㄧ??淇℃????瀵?equest-URI????璇???璧?婧?杩?琛?涓?涓?姝ヨ?塊????淇℃?????

??????? 甯哥?ㄧ????搴??ュご???

???????????????? Location????

???????????????? Content-Type???

???????????????? Referer?????

?浜?锛???ervlet涓?璁劇疆HTTP??搴??ュごHttpServletResponse?ュ??

????????????? 浣跨??ttpServletResponse??setHeader?規?锛????頒負?ュご??瀛????ュご???箋??? ??璁劇疆?舵??浠g??涓??楓??蹇?椤誨?ㄨ???瀹???????妗d?????瀹??稿?崇???ュご?????

????????????? setDateHeader(String headerName锛?Long 姣?绉???锛?璁劇疆?????ユ?????存?扮???ュご??

????????????? setIntHeader(String header锛?int headerValue)锛?灏?int绫誨?????舵??浠g??杞???負String???ユ?ュご??

????????????? Http瀹矽?哥?稿?????ュご澶?娆″?虹?幫?涓???涓??規?灏??挎??換浣???????宸叉???ュご????浣?addHeader锛?addDateHeader??addIntHeader?規?娣誨??涓?涓??ュご??? ??浠ヤ嬌??ontainsHeader????杩?琛?妫??ユ????凡缁?璁劇疆浜??瑰?????ュご??

????????????? HttpServletResponse甯哥?ㄧ??璁劇疆?ュご???規?????

?????????????????????? setContentType锛?String mimeType锛??規?璁劇疆Content-type?ュご??

?????????????????????? setContentLength锛?int length锛?????璁劇疆Content-length?ュご锛??ㄤ?娴?瑙??ㄦ??缁???TTP杩??ャ????

?????????????????????? addCookie锛?Cookie c锛??規?锛???set-cookie?ュご???ヤ?涓?cookie????

????????????????????? sendRedirect锛?String url锛??規?锛?璁劇疆璁劇疆?舵??????Location?ュご??

涓?锛???寤?xcel?靛??琛ㄦ??锛???搴??ュごContent-type??搴?????

???????????? Excel?沖??ュ??3绉?涓????煎???杈??猴??ㄥ?惰〃绗????????版??锛?HTML琛ㄦ?煎?????頒?杩??舵?煎???? 浣跨??ontent-type??搴??ュご??璇?瀹㈡?風?搴?姝e?ㄥ?????靛??琛ㄦ?箋??浣跨??etContentType璁劇疆Content-type??搴?澶淬??Excel琛ㄦ?肩??MIME绫誨????application/vnd.ms-excel???

??????????? 浣跨?ㄥ?惰〃绗????????版???????靛??琛ㄦ?鹼??

?????????????????????? response.setContentType锛???application/vnd.ms-excel锛?charset=gb2312??锛?锛?

?????????????????????? PrintWriter out = response.getWriter锛?锛?锛???

?????????????????????? 杈??哄?????惰〃绗?t??涓?浜??版??锛?涓???瑕?杈???TML??绛俱??

??锛?servlet?舵????缁存????椤甸?㈢?????ㄩ??杞姐??锛?servlet?版??瀛??ㄦ?瑰???Referer??搴??ュご??搴?????

??????????? servlet?舵????缁存??锛?瀵逛?servlet??jsp??瑕?杈??挎?堕?存?ュ?????璇鋒?锛????

????????????????????? 1锛?璺ㄨ?鋒?瀛??ㄦ?版??锛?缁存?ょ?舵?????? 涓?涓?灞?浠繪??瀹㈡?風???版??锛?瀛??ㄥ??ervlet??瀛?娈典腑?????? 瀵逛??ㄦ?蜂?灞??版??锛?瀛??ㄥ??ttpSession瀵矽薄涓??????? 瀵逛??朵?servlet??jsp??瑕??ㄥ?扮???版??锛?瀛??ㄥ??ervletContext涓?????

?????????????????????? 2锛??ㄨ?鋒?????缁?瀹㈡?風?搴???锛?缁х畫杩?琛?澶????????? ???ㄤ?涓?绾跨???搴?璇鋒?锛???搴?涔??????ㄧ???绾跨?????釜绾跨?灏?缁х畫淇???杩?琛?澶???璇鋒?锛?涓轟??????″?ㄦ?ц?斤?灏?缁х畫澶???璇鋒???绾跨?浼???绾ц?浣?????

?????????????????????? 3锛??ㄩ??瑕?杈??挎?堕?村?????璇鋒?澶???瀹???锛???绀烘?瑙??ㄨ?鋒??存?般?????? ?變?娴?瑙??ㄤ?缁存?や????″?ㄤ??寸??杩??ワ????″?ㄩ??瑕?涓誨?ㄥ?缁???????缁?娴?瑙??ㄣ?????? ??浠ヤ嬌??eferer??搴??ュご锛???绀烘?瑙??ㄨ?鋒??存?般??

浜?锛?浣跨??ervlet?????懼??????瀛?锛???搴??ュごContent-Type??搴?????

??????????? (1)锛????懼????浠跺???ョ???骞舵??渚?杩??ャ??娉ㄦ?????ㄦ?ㄧ??web???″?ㄧ??褰???涓?锛?涓????ㄦ???″?ㄧ?????浠諱??版?歸?借?锛?????

?????????????????????? ?ㄤ?浜?servlet寮???璁劇疆涓?锛?servlet????褰?涓??介??杩?web server杩??ワ????介??杩?servlet寮??????? 涔?灏辨??璇存?ㄤ??介??杩?http:// URL?誨?锛??ㄥ??浠ュ???ㄧ??servlet杈??虹??HTML浼???IMG??绛撅???浼???HTTP???闆??浣??ヨ?╂?瑙??ㄧ?存?ヤ?杞藉?捐薄?? ?????

(CookieDetector (http://www.purpletech.com/code/CookieDetector.html) has an example, with source code, of sending a redirect.) ????? (CookieDetector (http://www.purpletech.com/code/CookieDetector.html)?? ??涓?涓?渚?瀛?锛???浼??????闆??浣?婧?浠g????????? ?捐薄??浠ヨ?淇?瀛??ㄦ?瑙??ㄧ??cache涓?锛?褰???娆¤?鋒??朵?蹇????拌?琛?servlet锛???姝ゅ??杞諱????″?ㄧ??璐?????????????

?????????????????????? ?捐薄涓??戒?纾???涓????わ???姝ゆ?ㄥ?椤誨??涓?娈電?搴??ュ????娓????捐薄??褰?锛???杩??ョ??褰? ???ㄦ??宸ュ???ゃ??锛???涔頒?寮?澶х?圭??纭???锛?

???????????? (2)锛???ava 2 JPEGCodec绫夥???Acme Labs' GIFEncoder绫誨?Java Graphics??杞??㈡???捐薄??浠舵??浜?杩??舵?????

????????????????????? ??lt;img>??src灞??т腑璋??ㄥ???頒?杩闆???界??Servlet骞朵????稿?崇?????幫?濡??????劇??璺?寰???杈??烘??瀛?????瀛?杈??虹??浣?缃???瀛?浣???澶у?绛?锛??? ?辮??ervlet杩?琛??炬??澶???锛?骞惰???澶????????懼???版??锛?浠????ㄧ?椤典??劇ず?哄??涓???瀛????懼??????? 杩?涓?????涔???瀹??闆??版??搴?涓????懼???版???劇ず?扮?椤典????ㄧ????????

?? 瀹??版?規?锛???

??????? 1锛?璁劇疆Content-Type??搴??ュご涓衡??images/jpeg??????image/gif?????朵??劇??绫誨?????ュご?????

???????????????? 浣跨??ttpServletResponse??setContentType?規?璁劇疆??蹇?椤誨?ㄨ???瀹???????瀹逛?????瀹??稿?崇???ュご?????

???????? 2锛??峰????濮???杈??烘?????

???????????????? 浣跨??ervletResponse?ュ?g??getOutputSteam?規?????? 娉ㄦ??锛?request??getOutputStream??getWriter涓??藉???朵嬌??涔?涓??介??澶?璋??ㄣ??????涓鴻??烘?????涓烘???版?锛??

???????? 3锛??峰???劇??????瀹?璺?寰?锛?灏?瑁?涓?ile瀵矽薄?????

????????????????? 浣跨??ervletContext?ュ?g??getRealPath?規???瀹?????璺?寰?锛???????璺?寰???灏?涓虹??瀹?璺?寰?????? File绫宦??

???????? 4锛??峰??浜?杩??舵??浠舵???

?????????????? ?劇??澶у??版??浜?杩??舵?版??锛???浠ヤ嬌?ㄥ????杈??ユ?璇誨?ュ?劇????浠剁????浣跨??ileInputSteam绫彙????

????????? 5锛???寤哄?劇???ㄧ?搴?????缂??插?矽薄锛?BufferedImage瀵矽薄????

???????????????? ??杩??????芥?闆??寤轟?涓?BufferedImage瀵矽薄??缁??哄?藉害锛?楂?搴??浠ュ????ufferedImage绫諱腑瀹?涔???甯擱????瀹?涔????懼??绫誨???????????????

???????????????? **??浠ュ??ufferedImage涓?缁??跺??瀹廣??璋??ㄥ?懼????getGraphics?規?锛?灏?寰??扮??Graphics瀵矽薄杞??㈡??Graphics2D锛?浣跨??raphics2D ?ヨ?琛?缁??繪??浣???????

???????????? 6锛?瀵瑰?劇??杩?琛?瑙g?杈??ョ??杈??哄?????浜?绉??規?????????

???????????????? ??1??锛?浣跨?ㄤ??ㄧ??API澶???jpg?劇????gif?劇??锛?璇誨?ユ??浠惰В??杈??ワ??懼??ufferedImage缂??插?矽薄??缂???杈??恒?????

?????????????????????? JPG??GIF?劇????浠跺??浠ヤ嬌??om.sun.image.codec.jpeg.JPEGImageDecoder绫誨??Acme Labs??GIFEncoder绫彙??

???????????????????? 瀵矽??ユ??版??杩?琛?瑙g????杈??ヂ???????

???????????????????????????? JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(浜?杩??舵??浠舵?)?規? 杩???灏?璇誨?ョ??浜?杩??舵??浠舵???jpg?劇???煎?杩?琛?瑙g????瑙g???ㄥ?矽薄???

????????????????????? ?劇??缂??插?矽薄涓存?跺???ㄨВ???劇????????

????????????????????????????? BufferedImage image = decoder.decodeAsBufferedImage()?規?灏?瑙g???????劇???懼??ufferedImage缂??插?矽薄涓?????????????????????

????????????????????? 瀵矽??烘??版??杩?琛?缂?????杈??郝???????

???????????????????????????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(杈??烘?)?規? 杩??? jpg?煎??劇????缂????ㄥ?矽薄??

?????????????????????? 瀵矽??烘?杩?琛?缂????ㄧ??灏?瑁??????????

???????????????????????????? encoder.encode(BufferedImage缂??插?矽薄)锛?灏?BufferedImage缂??插?矽薄杩?琛?缂?????璁╄??烘?杈??恒???

view plaincopy to clipboardprint?

package com.qu.servlet.responseHeaders.contentType;??

?

?

?

?

?

import java.awt.Color;??

?

import java.awt.Font;??

?

import java.awt.Graphics;??

?

?

?

import java.awt.image.*;??

?

import java.io.File;??

?

import java.io.FileInputStream;??

?

import java.io.IOException;??

?

import java.io.InputStream;??

?

import javax.servlet.ServletConfig;??

?

import javax.servlet.ServletException;??

?

import javax.servlet.ServletOutputStream;??

?

import javax.servlet.http.HttpServlet;??

?

import javax.servlet.http.HttpServletRequest;??

?

import javax.servlet.http.HttpServletResponse;??

?

?

?

import com.sun.image.codec.jpeg.*;??

?

?

?

public class JpegImageServlet extends HttpServlet {??

?

??????

?

??? private String text = "";?????????????? //瑕?宓?????瀛???

?

??? private String imagePath = "";????????? //琚?宓????劇????????璺?寰???

?

??? private int x = 0;????????????????????? //??????

?

??? private int y = 0;??

?

??? private String fontColor = "";????????? //瀛?浣?棰??猜??

?

??? private int fontSize = 0;?????????????? //瀛?浣?澶у???

?

??? private String fontStyle = "";????????? //瀛?浣?椋?????浣?,绮?浣?绛?)??

?

??? private String fontName = "";?????????? //瀛?浣???绉奧??

?

??? private String realPath;??????????????? //?劇??缁?瀵矽礬寰???

?

???????

?

??? public JpegImageServlet() {??

?

??????? super();??

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? public void destroy() {??

?

??????? super.destroy();??

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? public void init(ServletConfig config) throws ServletException {??

?

??????? System.out.println("11111111111");??

?

??????? text = this.getStrParameter(config,"text","");??

?

??????? imagePath = this.getStrParameter(config,"imagePath","");??

?

??????? x = this.getIntParameter(config,"x",0);??

?

??????? y = this.getIntParameter(config,"y",0);??

?

??????? fontColor = this.getStrParameter(config,"fontColor","");??

?

??????? fontSize = this.getIntParameter(config,"fontSize",16);??

?

??????? fontStyle = this.getStrParameter(config,"fontStyle","'");??

?

??????? fontName = this.getStrParameter(config,"fontName","");??

?

??????? realPath = config.getServletContext().getRealPath(imagePath);??

?

?????????

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? protected void doGet(HttpServletRequest request, HttpServletResponse response)??

?

??????????? throws ServletException, IOException {??

?

??????? ?

?

??????? request.setCharacterEncoding("gb2312");??

?

??????????

?

??????? ?

?

??????? response.setContentType("image/jpeg; charset=gb2312");??

?

??????????

?

??????? ServletOutputStream output = response.getOutputStream();??

?

??????????

?

??????? File imageFile = new File(realPath);??

?

??????? InputStream input = new FileInputStream(imageFile);??

?

??????

?

??????? JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(input);??

?

??????? BufferedImage bufimg = decoder.decodeAsBufferedImage();??

?

??????? ?

?

??????? Graphics g = bufimg.createGraphics();??

?

??????

?

??????? g.setColor(Color.white);//璁劇疆棰??猜??

?

??????? Font mFont = new Font(fontName,Font.PLAIN,fontSize);//璁劇疆瀛?浣?涓洪?璁ゅ??浣???

?

??????? if(fontStyle.equalsIgnoreCase("italic")) {??

?

??????????? mFont=new Font(fontName,Font.ITALIC,fontSize);??

?

??????? }??

?

??????? if(fontStyle.equalsIgnoreCase("bold")) {??

?

??????????? mFont=new Font(fontName,Font.BOLD,fontSize);??

?

??????? }??

?

??????? if(fontStyle.equalsIgnoreCase("plain")){???

?

??????????? mFont=new Font(fontName,Font.PLAIN,fontSize);??

?

??????? }??

?

??????? g.setFont(mFont);???

?

??????? g.drawString(text,x,y);//杈??烘??瀛???

?

?????????

?

?????? System.out.println("33333");??

?

??????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);??

?

??????? encoder.encode(bufimg);??

?

?

?

??????? input.close();??

?

??????? output.close();??

?

??????????

?

??????????

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? protected void doPost(HttpServletRequest req, HttpServletResponse resp)??

?

??????????? throws ServletException, IOException {??

?

??????? this.doGet(req, resp);??

?

??? }??

?

??????

?

??? public String getStrParameter(ServletConfig config, String parameter, String defaultValue){??

?

??????? String paraValue = config.getInitParameter(parameter);??

?

??????????

?

??????? if (paraValue != null && !paraValue.equals("")){??

?

??????????? //??瑕???璇?灏????闆?艱漿????

?

??????? }else{??

?

??????????? paraValue = defaultValue;??

?

??????? }??

?

??????? return paraValue;??

?

??? }??

?

??????

?

??? public int getIntParameter(ServletConfig config, String parameter, int defaultValue){??

?

??????? int paraValue;??

?

??????? String temp = config.getInitParameter(parameter);??

?

??????????

?

??????? if (temp != null && !temp.equals("")){??

?

??????????? paraValue = Integer.parseInt(temp);??

?

??????? }else{??

?

??????????? paraValue = defaultValue;??

?

??????? }??

?

??????????

?

??????? return paraValue;??

?

??? }??

?

}?

package com.qu.servlet.responseHeaders.contentType;

?

?

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

?

import java.awt.image.*;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

import com.sun.image.codec.jpeg.*;

?

public class JpegImageServlet extends HttpServlet {

?

?private String text = "";?????????????? //瑕?宓?????瀛?

?private String imagePath = "";????????? //琚?宓????劇????????璺?寰?

?private int x = 0;????????????????????? //????

?private int y = 0;

?private String fontColor = "";????????? //瀛?浣?棰???

?private int fontSize = 0;?????????????? //瀛?浣?澶у?

?private String fontStyle = "";????????? //瀛?浣?椋?????浣?,绮?浣?绛?)

?private String fontName = "";?????????? //瀛?浣???绉?

?private String realPath;????//?劇??缁?瀵矽礬寰?

?

?public JpegImageServlet() {

??super();

?}

?

?

?@Override

?public void destroy() {

??super.destroy();

?}

?

?

?@Override

?public void init(ServletConfig config) throws ServletException {

??System.out.println("11111111111");

??text = this.getStrParameter(config,"text","");

???? imagePath = this.getStrParameter(config,"imagePath","");

??????? x = this.getIntParameter(config,"x",0);

??????? y = this.getIntParameter(config,"y",0);

??????? fontColor = this.getStrParameter(config,"fontColor","");

??????? fontSize = this.getIntParameter(config,"fontSize",16);

??????? fontStyle = this.getStrParameter(config,"fontStyle","'");

??????? fontName = this.getStrParameter(config,"fontName","");

??????? realPath = config.getServletContext().getRealPath(imagePath);

??????

?}

?

?

?@Override

?protected void doGet(HttpServletRequest request, HttpServletResponse response)

???throws ServletException, IOException {

??

??request.setCharacterEncoding("gb2312");

??

???????

??response.setContentType("image/jpeg; charset=gb2312");

??

??ServletOutputStream output = response.getOutputStream();

??

??File imageFile = new File(realPath);

??InputStream input = new FileInputStream(imageFile);

?

??JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(input);

??BufferedImage bufimg = decoder.decodeAsBufferedImage();

??

??Graphics g = bufimg.createGraphics();

?

??????? g.setColor(Color.white);//璁劇疆棰???

??????? Font mFont = new Font(fontName,Font.PLAIN,fontSize);//璁劇疆瀛?浣?涓洪?璁ゅ??浣?

??????? if(fontStyle.equalsIgnoreCase("italic")) {

??????? ?mFont=new Font(fontName,Font.ITALIC,fontSize);

??????? }

??????? if(fontStyle.equalsIgnoreCase("bold")) {

??????? ?mFont=new Font(fontName,Font.BOLD,fontSize);

??????? }

??????? if(fontStyle.equalsIgnoreCase("plain")){

??????? ?mFont=new Font(fontName,Font.PLAIN,fontSize);

??????? }

??????? g.setFont(mFont);

??????? g.drawString(text,x,y);//杈??烘??瀛?

??????

?????? System.out.println("33333");

??????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);

??????? encoder.encode(bufimg);

?

??????? input.close();

??????? output.close();

???????

???????

?}

?

?

?@Override

?protected void doPost(HttpServletRequest req, HttpServletResponse resp)

???throws ServletException, IOException {

??this.doGet(req, resp);

?}

?

?public String getStrParameter(ServletConfig config, String parameter, String defaultValue){

??String paraValue = config.getInitParameter(parameter);

??

??if (paraValue != null && !paraValue.equals("")){

???//??瑕???璇?灏????闆?艱漿??

??}else{

???paraValue = defaultValue;

??}

??return paraValue;

?}

?

?public int getIntParameter(ServletConfig config, String parameter, int defaultValue){

??int paraValue;

??String temp = config.getInitParameter(parameter);

??

??if (temp != null && !temp.equals("")){

???paraValue = Integer.parseInt(temp);

??}else{

???paraValue = defaultValue;

??}

??

??return paraValue;

?}

}

???????????

?????????????????? ??2??锛?浣跨??avax.imageio.ImageIO绫誨?瑰??搴??ュご涓???瀹????劇??绫誨??杩?琛?瑙g???澶????????? 浣跨??mageIO绫葷??write?規?锛?璇ユ?規??規??涓????ㄩ??杩?琛?浜???杞姐?????

??????????????????????????????????? 浣跨??mageIO绫葷??Read?規?璇誨?ヤ?涓?杈??ユ??峰?涓?涓?BufferedImage瀵矽薄??

??????????????????????????????????? 浣跨??mageIO绫葷??write?規?锛?璇ユ?規?杩?琛?浜???杞姐????????????????????????????????????

????????????????????????????????? 浣跨??mageIO绫葷??write锛?浼???涓?涓?BufferedImage缂??插?矽薄锛?杩?琛?浜???瀹?涔???缁??炬??浣???缂??蹭?璇誨?ョ???劇??锛?锛???瀹?涓?涓?String???劇???煎?绫誨??锛?涓?涓?杈??烘?瀵矽薄??

view plaincopy to clipboardprint?

package com.qu.servlet.responseHeaders.contentType;??

?

?

?

import java.awt.Color;??

?

import java.awt.Font;??

?

import java.awt.Graphics;??

?

import java.awt.image.BufferedImage;??

?

import java.io.File;??

?

import java.io.FileInputStream;??

?

import java.io.IOException;??

?

import javax.imageio.ImageIO;??

?

import javax.servlet.ServletConfig;??

?

import javax.servlet.ServletException;??

?

import javax.servlet.ServletOutputStream;??

?

import javax.servlet.http.HttpServlet;??

?

import javax.servlet.http.HttpServletRequest;??

?

import javax.servlet.http.HttpServletResponse;??

?

?

?

?

?

public class ImageIOServlet extends HttpServlet {??

?

?

?

??????

?

??? private String text = "";?????????????? //瑕?宓?????瀛???

?

??? private String imagePath = "";????????? //琚?宓????劇????????璺?寰???

?

??? private int x = 0;????????????????????? //??????

?

??? private int y = 0;??

?

??? private String fontColor = "";????????? //瀛?浣?棰??猜??

?

??? private int fontSize = 0;?????????????? //瀛?浣?澶у???

?

??? private String fontStyle = "";????????? //瀛?浣?椋?????浣?,绮?浣?绛?)??

?

??? private String fontName = "";?????????? //瀛?浣???绉奧??

?

??? private String realPath;??????????????? //?劇??缁?瀵矽礬寰???

?

???????

?

??? public ImageIOServlet() {??

?

??????? super();??

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? public void destroy() {??

?

??????? super.destroy();??

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??????

?

??? public void init(ServletConfig config) throws ServletException {??

?

??????? System.out.println("11111111111");??

?

??????? text = this.getStrParameter(config,"text","");??

?

??????? imagePath = this.getStrParameter(config,"imagePath","");??

?

??????? x = this.getIntParameter(config,"x",0);??

?

??????? y = this.getIntParameter(config,"y",0);??

?

??????? fontColor = this.getStrParameter(config,"fontColor","");??

?

??????? fontSize = this.getIntParameter(config,"fontSize",16);??

?

??????? fontStyle = this.getStrParameter(config,"fontStyle","'");??

?

??????? fontName = this.getStrParameter(config,"fontName","");??

?

??????? realPath = config.getServletContext().getRealPath(imagePath);??

?

?????? System.out.println(realPath);??

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? protected void doGet(HttpServletRequest request, HttpServletResponse response)??

?

??????????? throws ServletException, IOException {??

?

??????? ?

?

??????? request.setCharacterEncoding("gb2312");??

?

????????????

?

??????? ?

?

??????? response.setContentType("image/gif; charset=gb2312");??

?

??????????

?

??????? ServletOutputStream output = response.getOutputStream();??

?

??????????

?

??????? File imageFile = new File(realPath);??

?

??????????

?

??????? FileInputStream imgInput = new FileInputStream(imageFile);??

?

??????????

?

??????? //Image img = ImageIO.read(imgInput);??

?

??????????

?

??????? BufferedImage bimg = ImageIO.read(imgInput);??

?

??????? ?

?

??????? Graphics g = bimg.getGraphics();??

?

??????????

?

??????? g.setColor(Color.red);//璁劇疆棰??猜??

?

??????? Font mFont = new Font(fontName,Font.PLAIN,fontSize);//璁劇疆瀛?浣?涓洪?璁ゅ??浣???

?

??????? if(fontStyle.equalsIgnoreCase("italic")) {??

?

??????????? mFont=new Font(fontName,Font.ITALIC,fontSize);??

?

??????? }??

?

??????? if(fontStyle.equalsIgnoreCase("bold")) {??

?

??????????? mFont=new Font(fontName,Font.BOLD,fontSize);??

?

??????? }??

?

??????? if(fontStyle.equalsIgnoreCase("plain")){???

?

??????????? mFont=new Font(fontName,Font.PLAIN,fontSize);??

?

??????? }??

?

??????? g.setFont(mFont);???

?

??????? g.drawString(text,x,y);//杈??烘??瀛???

?

??????????

?

??????? ImageIO.write(bimg, "gif", output);??

?

??????

?

??????? bimg.flush();??

?

??????? imgInput.close();??

?

??????? output.close();??

?

??????????

?

??? }??

?

?

?

??? ?

?

??? @Override?

?

??? protected void doPost(HttpServletRequest req, HttpServletResponse resp)??

?

??????????? throws ServletException, IOException {??

?

??????? this.doGet(req, resp);??

?

??? }??

?

??????

?

??? public String getStrParameter(ServletConfig config, String parameter, String defaultValue){??

?

??????? String paraValue = config.getInitParameter(parameter);??

?

??????????

?

??????? if (paraValue != null && !paraValue.equals("")){??

?

??????????? //??瑕???璇?灏????闆?艱漿????

?

??????? }else{??

?

??????????? paraValue = defaultValue;??

?

??????? }??

?

??????? return paraValue;??

?

??? }??

?

??????

?

??? public int getIntParameter(ServletConfig config, String parameter, int defaultValue){??

?

??????? int paraValue;??

?

??????? String temp = config.getInitParameter(parameter);??

?

??????????

?

??????? if (temp != null && !temp.equals("")){??

?

??????????? paraValue = Integer.parseInt(temp);??

?

??????? }else{??

?

??????????? paraValue = defaultValue;??

?

??????? }??

?

??????????

?

??????? return paraValue;??

?

??? }??

?

}?

package com.qu.servlet.responseHeaders.contentType;

?

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

?

public class ImageIOServlet extends HttpServlet {

?

?

?private String text = "";?????????????? //瑕?宓?????瀛?

?private String imagePath = "";????????? //琚?宓????劇????????璺?寰?

?private int x = 0;????????????????????? //????

?private int y = 0;

?private String fontColor = "";????????? //瀛?浣?棰???

?private int fontSize = 0;?????????????? //瀛?浣?澶у?

?private String fontStyle = "";????????? //瀛?浣?椋?????浣?,绮?浣?绛?)

?private String fontName = "";?????????? //瀛?浣???绉?

?private String realPath;????//?劇??缁?瀵矽礬寰?

?

?public ImageIOServlet() {

??super();

?}

?

?

?@Override

?public void destroy() {

??super.destroy();

?}

?

?

?@Override

?

?public void init(ServletConfig config) throws ServletException {

??System.out.println("11111111111");

??text = this.getStrParameter(config,"text","");

???? imagePath = this.getStrParameter(config,"imagePath","");

??????? x = this.getIntParameter(config,"x",0);

??????? y = this.getIntParameter(config,"y",0);

??????? fontColor = this.getStrParameter(config,"fontColor","");

??????? fontSize = this.getIntParameter(config,"fontSize",16);

??????? fontStyle = this.getStrParameter(config,"fontStyle","'");

??????? fontName = this.getStrParameter(config,"fontName","");

??????? realPath = config.getServletContext().getRealPath(imagePath);

?????? System.out.println(realPath);

?}

?

?

?@Override

?protected void doGet(HttpServletRequest request, HttpServletResponse response)

???throws ServletException, IOException {

??

??request.setCharacterEncoding("gb2312");

???

???????

??response.setContentType("image/gif; charset=gb2312");

??

??ServletOutputStream output = response.getOutputStream();

??

??File imageFile = new File(realPath);

??

??FileInputStream imgInput = new FileInputStream(imageFile);

??

??//Image img = ImageIO.read(imgInput);

??

??BufferedImage bimg = ImageIO.read(imgInput);

??

??Graphics g = bimg.getGraphics();

??

??????? g.setColor(Color.red);//璁劇疆棰???

??????? Font mFont = new Font(fontName,Font.PLAIN,fontSize);//璁劇疆瀛?浣?涓洪?璁ゅ??浣?

??????? if(fontStyle.equalsIgnoreCase("italic")) {

??????? ?mFont=new Font(fontName,Font.ITALIC,fontSize);

??????? }

??????? if(fontStyle.equalsIgnoreCase("bold")) {

??????? ?mFont=new Font(fontName,Font.BOLD,fontSize);

??????? }

??????? if(fontStyle.equalsIgnoreCase("plain")){

??????? ?mFont=new Font(fontName,Font.PLAIN,fontSize);

??????? }

??????? g.setFont(mFont);

??????? g.drawString(text,x,y);//杈??烘??瀛?

???????

??????? ImageIO.write(bimg, "gif", output);

???

??????? bimg.flush();

??????? imgInput.close();

??????? output.close();

???????

?}

?

?

?@Override

?protected void doPost(HttpServletRequest req, HttpServletResponse resp)

???throws ServletException, IOException {

??this.doGet(req, resp);

?}

?

?public String getStrParameter(ServletConfig config, String parameter, String defaultValue){

??String paraValue = config.getInitParameter(parameter);

??

??if (paraValue != null && !paraValue.equals("")){

???//??瑕???璇?灏????闆?艱漿??

??}else{

???paraValue = defaultValue;

??}

??return paraValue;

?}

?

?public int getIntParameter(ServletConfig config, String parameter, int defaultValue){

??int paraValue;

??String temp = config.getInitParameter(parameter);

??

??if (temp != null && !temp.equals("")){

???paraValue = Integer.parseInt(temp);

??}else{

???paraValue = defaultValue;

??}

??

??return paraValue;

?}

}

??

???????????????????? ??3??锛?涓?浣跨?ㄨВ????缂????ュ???杈??ユ???杈??烘????存??ufferedOutputStream杈??虹??叉?锛?杈???ufferedImage缂??插?矽薄???

view plaincopy to clipboardprint?

response.setContentType("images/jpeg"); //璁劇疆??搴??ュご???????

?

?

?

OutputStream output = response.getOutputStream();//寰??拌??烘????????

?

?

?

ServletContext context = getServletContext();//寰??頒?涓???瀵矽薄???????

?

?

?

InputStream imageIn=context.getResourceAsStream(imagePath);//??浠舵????????????

?

?

?

BufferedInputStream bis=new BufferedInputStream(imageIn);//浣跨?ㄨ??ユ???濮???杈??ョ??叉?????????

?

?

?

?BufferedOutputStream bos=new BufferedOutputStream(output);//浣跨?ㄨ??烘?????杈??虹??叉??????????

?

?

?

byte data[]=new byte[4096];//缂??插?????奧????????

?

?

?

int size= bis.read(data); //??濮???璇誨?ヂ???????

?

?

?

while (size!=-1)????????

?

?

?

{???????????

?

?

?

????????????? bos.write(data,0,size);//杈??鴻?誨?ョ??瀛????版?版??????????

?

?

?

????????????? size=bis.read(data);//璇誨??瀛????版?版?????????

?

?

?

}//end while????????

?

?

?

bis.close();//?抽??杈??ョ??叉?????????

?

?

?

bos.flush();//娓?绌鴻??虹??叉?????????????????

?

?

?

bos.close();?????????

?

?

?

output.close();//?抽??杈??烘??

response.setContentType("images/jpeg"); //璁劇疆??搴??ュご????

?

OutputStream output = response.getOutputStream();//寰??拌??烘?????

?

ServletContext context = getServletContext();//寰??頒?涓???瀵矽薄????

?

InputStream imageIn=context.getResourceAsStream(imagePath);//??浠舵?????????

?

BufferedInputStream bis=new BufferedInputStream(imageIn);//浣跨?ㄨ??ユ???濮???杈??ョ??叉??????

?

?BufferedOutputStream bos=new BufferedOutputStream(output);//浣跨?ㄨ??烘?????杈??虹??叉???????

?

byte data[]=new byte[4096];//缂??插?????奧?????

?

int size= bis.read(data); //??濮???璇誨?ヂ????

?

while (size!=-1)?????

?

{????????

?

????????????? bos.write(data,0,size);//杈??鴻?誨?ョ??瀛????版?版???????

?

????????????? size=bis.read(data);//璇誨??瀛????版?版??????

?

}//end while?????

?

bis.close();//?抽??杈??ョ??叉??????

?

bos.flush();//娓?绌鴻??虹??叉??????????????

?

bos.close();??????

?

output.close();//?抽??杈??烘?

??

WEB.XML

view plaincopy to clipboardprint?

<?xml version="1.0" encoding="UTF-8"?>?

?

<web-app version="2.4"???

?

??? xmlns="http://java.sun.com/xml/ns/j2ee"???

?

??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"???

?

??? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee???

?

??? http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">?

?

? <welcome-file-list>?

?

??? <welcome-file>imageIO</welcome-file>?

?

? </welcome-file-list>?

?

? <!-- Servlet start -->?

?

? <servlet>?

?

??? <servlet-name>ExcelServlet</servlet-name>?

?

??? <servlet-class>com.qu.servlet.responseHeaders.contentType.ExcelServlet</servlet-class>?

?

? </servlet>?

?

? <servlet>?

?

??? <servlet-name>JpegImageServlet</servlet-name>?

?

??? <servlet-class>com.qu.servlet.responseHeaders.contentType.JpegImageServlet</servlet-class>?

?

??? <init-param>?

?

??????? <param-name>text</param-name>?

?

??????? <param-value>?伴??lt;/param-value>?

?

??? </init-param>?

?

??? <init-param>?

?

??????? <param-name>imagePath</param-name>?

?

??????? <param-value>/images/bg.jpg</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>x</param-name>?

?

??????? <param-value>20</param-value>????

?

??? </init-param>???????

?

??? <init-param>????

?

??????? <param-name>y</param-name>?

?

??????? <param-value>20</param-value>????

?

??? </init-param>???????

?

??? <init-param>?

?

??????? <param-name>fontColor</param-name>?

?

??????? <param-value>red</param-value>?

?

??? </init-param>???

?

??? <init-param>????

?

??????? <param-name>fontSize</param-name>?

?

??????? <param-value>16</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>fontStyle</param-name>?

?

??????? <param-value>bold</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>fontName</param-name>?

?

??????? <param-value>瀹?浣?</param-value>?????????????????

?

??? </init-param>?

?

? </servlet>?

?

? <servlet>?

?

??? <servlet-name>ImageIOServlet</servlet-name>?

?

??? <servlet-class>com.qu.servlet.responseHeaders.contentType.ImageIOServlet</servlet-class>?

?

??? <init-param>?

?

??????? <param-name>text</param-name>?

?

??????? <param-value>婕??葷?濂?</param-value>?

?

??? </init-param>?

?

??? <init-param>?

?

??????? <param-name>imagePath</param-name>?

?

??????? <param-value>/images/MM.gif</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>x</param-name>?

?

??????? <param-value>50</param-value>????

?

??? </init-param>???????

?

??? <init-param>????

?

??????? <param-name>y</param-name>?

?

??????? <param-value>30</param-value>????

?

??? </init-param>???????

?

??? <init-param>?

?

??????? <param-name>fontColor</param-name>?

?

??????? <param-value>black</param-value>?

?

??? </init-param>???

?

??? <init-param>????

?

??????? <param-name>fontSize</param-name>?

?

??????? <param-value>20</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>fontStyle</param-name>?

?

??????? <param-value>bold</param-value>?

?

??? </init-param>?

?

??? <init-param>????

?

??????? <param-name>fontName</param-name>?

?

??????? <param-value>?朵功</param-value>?????????????????

?

??? </init-param>???

?

? </servlet>?

?

? <!-- servlet end -->?

?

? <!-- servlet mapping start -->?

?

? <servlet-mapping>?

?

??? <servlet-name>ExcelServlet</servlet-name>?

?

??? <url-pattern>/excel</url-pattern>?

?

? </servlet-mapping>?

?

? <servlet-mapping>?

?

??? <servlet-name>JpegImageServlet</servlet-name>?

?

??? <url-pattern>/jpegImage</url-pattern>?

?

? </servlet-mapping>?

?

? <servlet-mapping>?

?

??? <servlet-name>ImageIOServlet</servlet-name>?

?

??? <url-pattern>/imageIO</url-pattern>?

?

? </servlet-mapping>?

?

? <!-- servlet mapping end -->?

?

</web-app>?

?????ヨ??CSDN??瀹??杞?杞借?鋒?????哄?锛?http://blog.csdn.net/qfs_v/archive/2008/06/20/2567609.aspx