- 浏览: 1092279 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (30)
- Spring (14)
- iBATIS (6)
- Hibernate (13)
- JVM (5)
- JSON (10)
- Ajax (5)
- Flex (1)
- JavaScript (25)
- PowerDesigner (4)
- 项目管理 (7)
- 数据库 (29)
- 生活 (18)
- 软件应用 (21)
- 无线技术 (2)
- Linux (39)
- TOP开发学习 (2)
- JAVA工具小TIPS (2)
- Java通用 (52)
- XML (3)
- 软件测试 (29)
- Maven (10)
- Jquery (1)
- 正则表达式 (3)
- 应用服务器 (15)
- Android (5)
- linux 和windowx 下 tomcat 设置JVM (8)
- 应用服务器 连接池 (4)
- Linux 后台输出中文乱码 (1)
- Hadoop (28)
- python (2)
- Kafka (7)
- Storm (5)
- Elasticsearch (7)
- fddd (1)
最新评论
-
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
分布式消息系统Kafka初步 -
小灯笼:
LoadRunner性能测试实战课程网盘地址:http://p ...
LoadRunner性能测试应用(八) -
成大大的:
Kafka分布式消息系统实 ...
分布式消息系统Kafka初步 -
hulalayaha2:
Loadrunner性能测试视频教程下载学习:http://p ...
LoadRunner性能测试应用(八) -
993042835:
搞好 谢谢
org.hibernate.exception.ConstraintViolationException: could not delete:
服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用 收藏
一,响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息
常用的响应报头
Location
Content-Type
Referer
二,在Servlet中设置HTTP响应报头HttpServletResponse接口
使用HttpServletResponse的setHeader方法,参数为报头名字和报头的值。 和设置状态代码一样。必须在返回实际的文档之前指定相关的报头。
setDateHeader(String headerName,Long 毫秒数):设置含有日期和整数的报头。
setIntHeader(String header,int headerValue):将int类型的状态代码转换为String插入报头。
Http容许相同的报头多次出现,上面3中方法将替换任何同名的已有报头。而使 addHeader,addDateHeader和addIntHeader方法添加一个报头。 可以使用containsHeader发发进行检查是否已经设置了特定的报头。
HttpServletResponse常用的设置报头的方法。
setContentType(String mimeType)方法设置Content-type报头。
setContentLength(int length)发发设置Content-length报头,用于浏览器持续性HTTP连接。
addCookie(Cookie c)方法:向set-cookie报头插入一个cookie。
sendRedirect(String url)方法,设置设置状态码和Location报头。
三,构建Excel电子表格 (响应报头Content-type的应用)
Excel至少接受3种不同格式的输出:用制表符分隔的数据,HTML表格和本地二进制格式。 使用Content-type响应报头告诉客户程序正在发送电子表格。使用setContentType设置Content-type响应头。Excel表格的MIME类型是application/vnd.ms-excel
使用制表符分隔的数据生成电子表格:
response.setContentType(“application/vnd.ms-excel;charset=gb2312”);
PrintWriter out = response.getWriter();
输出含有制表符\t的一些数据,不需要输出HTML标签。
四,servlet状态的维持和页面的自动重载。(servlet数据存储方式和Referer响应报头的应用)
servlet状态的维持,对于servlet或jsp需要较长时间来处理的请求:
1,跨请求存储数据,维护状态 不专属任意客户的数据,存储在servlet的字段中。 对于用户专属数据,存储在HttpSession对象中。 对于其他servlet或jsp需要用到的数据,存储在ServletContext中。
2,在请求发送给客户程序后,继续进行处理。 启动一个线程响应请求,响应之后自动结束线程。另个线程将继续保持运行处理请求,为保持服务器性能,将继续处理请求的线程优先级调低。
3,在需要较长时间处理的请求处理完后,指示浏览器请求更新。 由于浏览器不维护与服务器之间的连接,服务器需要主动将结果发送给浏览器。 所以使用Referer响应报头,指示浏览器请求更新。
五,使用Servlet生成图像和文字(响应报头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) 有一个例子,有传送重新定位源代码。 图象可以被保存在浏览器的cache中,当再次请求时不必重新运行servlet,因此减轻了服务器的负担。
图象不能从磁盘中删除,因此您必须写一段程序来定期清理图象目录,或进入目录 后用手工删除。(或买一张大点的硬盘)
(2),用Java 2 JPEGCodec类,或Acme Labs' GIFEncoder类将Java Graphics 转换成图象文件或二进制流。
在<img>的src属性中调用实现上述功能的Servlet并传递相关的参数,如背景图片路径、输出文字、文字输出的位置、字体、大小等, 由该Servlet进行图文处理,并返回处理后的图像数据,从而在网页上显示出加上文字的图像。 这个原理也是实现将数据库中的图像数据显示到网页上所用的原理。
实现方法:
1,设置Content-Type响应报头为“images/jpeg”或“image/gif”或其他图片类型的报头。
使用HttpServletResponse的setContentType方法设置。必须在返回实际的内容之前指定相关的报头。
2,获取原始的输出流。
使用ServletResponse接口的getOutputSteam方法。 注意:request的getOutputStream和getWriter不能同时使用 也不能重复调用。前者为输出流后者为打印流!
3,获取图片的真实路径,封装为File对象。
使用ServletContext接口的getRealPath方法指定虚拟路径,把虚拟路径映射为真实路径。 File类
4,获取二进制文件流。
图片大多数是二进制数据,所以使用字节输入流读入图片文件的。使用FileInputSteam类。
5,创建图片在程序内的缓冲对象:BufferedImage对象。
通过构造函数创建一个BufferedImage对象。给出宽度,高度,以及由BufferedImage类中定义的常量所定义的图像类型。
**可以在BufferedImage上绘制内容。调用图像的getGraphics方法,将得到的Graphics对象转换成Graphics2D,使用Graphics2D 来进行绘画操作。
6,对图片进行解编输入码输出处理的二种方法。
【1】,使用专门的API处理jpg图片或gif图片:读入文件解码输入,放入BufferedImage缓冲对象后编码输出。
JPG和GIF图片文件可以使用com.sun.image.codec.jpeg.JPEGImageDecoder类和Acme Labs的GIFEncoder类。
对输入流数据进行解码后输入
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(二进制文件流)方法 返回将读入的二进制文件流按jpg图片格式进行解码的解码器对象。
图片缓冲对象临时存储解码图片
BufferedImage image = decoder.decodeAsBufferedImage()方法将解码后的图片放入BufferedImage缓冲对象中。
对输出流数据进行编码后输出
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();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
super.destroy();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
@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);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
super.destroy();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
@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);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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】,使用javax.imageio.ImageIO类对响应报头中指定的图片类型进行解编码处理。 使用ImageIO类的write方法,该方法根据不同用途进行了重载。
使用ImageIO类的Read方法读入一个输入流获得一个BufferedImage对象。
使用ImageIO类的write方法,该方法进行了重载。
使用ImageIO类的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();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
super.destroy();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
@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);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
super.destroy();
}
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
@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);
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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();
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@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】,不使用解码和编码来处理输入流和输出流。直接BufferedOutputStream输出缓冲流,输出BufferedImage缓冲对象。
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>新闻</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
发表评论
-
java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
2013-05-10 16:10 824C:\Program Files (x86)\MyEc ... -
读取word pdf中的文字 用第三方组件 pdfbox 和 poi
2013-03-20 23:51 1010读取word pdf中的文字 用第三方组件 pdfbox 和 ... -
非常好使的FileUtil 类
2013-03-09 12:45 1008package com.zqk.util; imp ... -
eclipse 3.4.1 导入项目后 Target runtime Apache Tomcat v5.0 is not defi...
2012-05-29 09:27 1807下载最新版本eclipse3.4.1后,导入以前的项目,报 ... -
MyEclipse 6.5 序列号生成器
2011-06-10 09:47 1672import java.awt.event.ActionEve ... -
字节序 整形与字节数组转换
2010-12-15 13:43 2347Big Endian and Little Endian ... -
JPEG文件数据结构以及将位图保存为JPG的代码 转2
2010-12-02 13:31 2858三、实例分析 用系统自带的画图程序画一个32×24的红色方块 ... -
JPEG文件数据结构以及将位图保存为JPG的代码 转1
2010-12-02 13:30 3054JPEG文件数据结构以及将位图保存为JPG的代码一、简 ... -
Nginx+resin调优文档
2010-11-18 17:02 2306http://blog.liuts.com/post/204/ ... -
分析 Tomcat startup.bat 启动脚本
2010-11-03 14:53 3227分析 Tomcat startup.bat 启 ... -
Tomcat配置优化 转
2010-11-03 14:51 10731.精简Tomcat和配置文件1.1 .删除不需要的管理应用和 ... -
URLConnection 读取字节流
2010-10-27 13:15 32682008-11-08 山寨Wget实现又惹事了 h ... -
字节到整形的转换
2010-10-27 12:47 1427public byte[] intToByte(int i) ... -
Gif 文件格式分析
2010-10-27 11:45 1068GIF文档ˉˉˉˉˉˉ 1.概述~~~~~~~~ ... -
JPG文件格式解码图片高度和宽度的分析
2010-10-27 10:34 986013. 简单说一下 JPG 文件的解码 ---------- ... -
CSS制作多种链接样式
2010-10-15 11:54 1121多种链接样式制作方法 ... -
虚拟主机上给一个网卡设置多个IP地址
2010-10-13 17:22 1892配置虚拟主机时有一种方式是在一块网卡上绑定多个IP,操作如下: ... -
linux下一个网卡配置多个IP
2010-10-13 17:21 966文本控制台下面有netconfig,还有ifconfig工具, ... -
[转载]linux中sar的详细使用
2010-10-13 17:06 886在使用UNIX操作系统的过程中,我们常常 ... -
Linux中sar命令
2010-10-13 17:05 995Linux中sar命令 sar这东 ...
相关推荐
Java在线生成图像源码是一种常见的Web开发技术,它允许服务器动态创建并返回图像给客户端,例如用于验证码、数据图表或者自定义logo等场景。在Java中,我们可以利用Servlet或者Struts框架来实现这一功能。本项目是...
4. 使用GD或Chart::Graph库创建图像,将服务器响应时间数据转化为图形。 5. 将生成的图像和相关HTML结构写入到一个HTML文件中,便于查看和分析。 标签 "PERL ping html 图形" 概括了这个项目的关键技术点:Perl编程...
通过分析和学习这个项目,你可以掌握如何在Struts中处理图像生成的请求,以及如何利用Java的图形API或第三方库来动态创建图像。这对于提升你的Web开发技能,尤其是涉及动态内容生成和服务器端图像处理的项目,将非常...
在ASP.NET中,校验码图像生成是一项常用的功能,主要用于防止自动化程序(如机器人)进行非法操作,如注册、登录等。校验码通常是一串随机的字母或数字,与图片结合,用户需要输入看到的验证码文字以证明其是人而...
服务器端会生成一个二进制的图像数据,这个过程可以借助各种编程语言,比如Java。在Java中,有两种主要的生成图像方式:一是客户端Applet,它在用户的浏览器中运行,可以直接绘制图形,但需要客户端支持Applet且图形...
具体实现可能需要与JavaScript、CSS和服务器端编程语言(如Python或Node.js)结合,以处理图像生成的逻辑和交互。 4. **网页布局与设计**:HTML源码通常会结合CSS(层叠样式表)和JavaScript来控制页面的外观和交互...
**JSP动态生成图像**是一种常见的Web开发技术,主要用于在服务器端动态创建并发送图像到客户端。这种技术在很多场景下都非常有用,比如验证码生成、图表制作、个性化头像生成等。下面我们将深入探讨JSP如何实现动态...
在这个实例中,iBatis可能用于存储和检索与图像生成相关的配置或者数据,如随机字符集、颜色配置等。 随机图像生成的核心在于生成随机字符串并将其转化为图像。在ASP.NET中,我们可以使用System.Drawing命名空间下...
图像生成客户端的源代码,是 Protocol404N 专有自开发平台 OpenFXT 的一项服务。它称为图像生成器。它调用图像生成和文本响应服务器的 API,该服务器也是由 Protocol404N 构建和维护的.zip
标题中的“从图像生成Bootstrap配色方案的Rails应用程序”是一个基于Ruby on Rails的Web应用,它的主要功能是根据用户上传的图像自动生成匹配的Bootstrap配色方案。Bootstrap是一款流行的前端开发框架,它提供了丰富...
在本项目中,它可能会包含用于iBATIS的配置段,以及用于图像生成的相关设置。 4. **sqlMap.config**:这是iBATIS的SQL映射配置文件,用于定义SQL查询、存储过程和其他数据库操作。在生成图像签名的过程中,可能包含...
3. **HTTP响应**:在服务器端生成验证码后,将其作为图像内容发送到客户端,可以通过设置HTTP响应的`Content-Type`为`image/jpeg`或`image/png`,并直接输出图像的字节数组。 4. **验证**:客户端输入验证码后,...
在WebGIS开发中,“预生成”技术可以应用于多种场景,例如,在地图显示时,可以预先生成静态图像,存储在服务器端,然后根据客户端的请求,快速传输图像到客户端,以提高响应速度。在POI(Point of Interest)显示时...
- 服务器响应内存数据,Ajax回调函数接收到数据后,更新图表。 - 使用JavaScript图表库解析数据并绘制图像。 - 在前端页面上显示图表,实现动态更新。 6. 安全和优化:虽然这种实时监控很有用,但需要注意安全和...
动态图像生成允许根据用户请求或特定条件实时创建和提供图像,而不是预先存储在服务器上的静态图像。本项目"DynamicImage简单Web生成图片"就是这样一个示例,它利用.NET框架实现了一个简单的Web应用来动态生成图片。...
- **响应图像**:返回生成的二维码图像,通常以Base64编码的字符串形式,嵌入到HTML的`<img>`标签中。 4. **安全性考虑** - **验证输入**:确保请求的数据安全无误,防止注入攻击。 - **权限控制**:限制非授权...
4. 服务端将生成的图像数据作为响应返回给客户端。 5. 客户端接收到图像数据后显示或保存。 在提供的文件列表中,"qr"可能是生成的二维码图像文件,而"1"可能是某种数据或配置文件。具体用途需结合实际项目来解读。...
首先,JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发者在HTML代码中嵌入Java代码,从而实现服务器端的数据处理和动态内容生成。在本项目中,JSP用于创建后端逻辑,接收和处理Ajax请求,以及...
在Java编程领域,生成网页图片是一项常见的需求,例如用于数据可视化、动态图表或者自定义的图形元素。这个项目,"java 生成网页图片Web源...通过深入理解和实践这些技术,可以构建出高效且功能丰富的Web图像生成系统。
而Imagick则提供了更高级的功能,如滤镜和特效,更适合复杂的图像生成需求。 5. **在线生成**:程序运行在服务器上,用户通过网页界面提交文字,服务器端的PHP程序接收到请求后生成图片并返回给用户。这涉及到前端...