📄 imagehandlerservlet.java
字号:
package org.sunxin.lesson.jsp.ch24;
import java.awt.image.BufferedImage;
import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;
import com.sun.image.codec.jpeg.*;
import org.sunxin.lesson.jsp.util.PicZoom;
public class ImageHandlerServlet extends HttpServlet
{
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException
{
String strId=req.getParameter("id");
if(null==strId || "".equals(strId))
{
throw new ServletException("图像参数错误!");
}
int id=Integer.parseInt(strId);
String srcImgFileName=null;
//此处为了简单,所以使用了switch/case语句,硬编码了images/1.jpg这幅图片,
//读者可以将图像数据保存到数据库中,根据请求的参数取出相应的图片。
//或者直接保存在硬盘上,为所有的图片文件做一个索引文件,
//得到请求参数后,通过查找索引文件得到图片的路径。
switch(id)
{
case 1:
srcImgFileName=getServletContext().getRealPath("/")+"images/1.jpg";
break;
case 2:
break;
default:
throw new ServletException("图像参数错误!");
}
resp.setContentType("image/jpeg");
ServletOutputStream sos=resp.getOutputStream();
//调用PicZoom类的静态方法zoom对原始图像进行缩放。
BufferedImage buffImg=PicZoom.zoom(srcImgFileName,80,80);
//创建JPEG图像编码器,用于编码内存中的图像数据到JPEG数据输出流。
JPEGImageEncoder jpgEncoder=JPEGCodec.createJPEGEncoder(sos);
//编码BufferedImage对象到JPEG数据输出流。
jpgEncoder.encode(buffImg);
sos.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -