???″?ㄥ??搴???????锛?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