📄 imageservlet.java
字号:
package com.struts2.framework.util;
import Acme.JPM.Encoders.GifEncoder;
import com.eteks.awt.*;
import com.eteks.filter.*;
import java.awt.*;
import java.awt.image.FilteredImageSource;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ImageServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
FONT_PATH = config.getServletContext().getRealPath("WEB-INF/fonts");
graphicsManager = PJAGraphicsManager.getDefaultGraphicsManager();
graphicsManager.loadFonts(FONT_PATH);
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String str = null;
String ostr = req.getPathInfo();
try {
// System.out.println("[IMGDEBUG]ostr $$$$$$$$$$$ " + ostr);
ostr = ostr.substring(1, ostr.lastIndexOf("."));
// System.out.println("[IMGDEBUG]ostr $$$$$$$$$$$ " + ostr);
// str = decryptKey(ostr);
str = decode(ostr);
// System.out.println("[IMGDEBUG]str $$$$$$$$$$$ " + str);
} catch (Exception exception) {
}
if (str == null || str.length() < 1) {
System.err.println("Error Security Code:" + ostr);
str = "Oops!";
}
try {
Image image = createImage(46, 20);
Graphics gc = image.getGraphics();
((PJAGraphicsExtension) gc).setFont("", 1, 14);
gc.setColor(Color.gray);
gc.draw3DRect(0, 0, 45, 19, false);
gc.setColor(Color.black);
gc.drawString(str, 5, 16);
sendGIFImage(image, resp);
} catch (Exception ex) {
resp.setContentType("text/plain");
PrintWriter writer = resp.getWriter();
writer.print("Sorry,Can't generate image\n");
ex.printStackTrace(writer);
writer.flush();
writer.close();
}
}
public Image createImage(int width, int height) {
return new PJAImage(width, height);
}
public void sendGIFImage(Image image, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/gif");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
// response.setHeader("Cache-Control", "must-revalidate");
// response.setDateHeader("Expires",0);
response.setHeader("Expires", "Thu, 01 Jan 2002 00:00:00 GMT");
OutputStream out = response.getOutputStream();
try {
(new GifEncoder(image, out)).encode();
} catch (IOException ioexception) {
(new GifEncoder(new FilteredImageSource(image.getSource(),
new Web216ColorsFilter()),
out))
.encode();
}
out.flush();
}
public static String encode(String code) {
byte[] _tmp = code.getBytes();
byte j = 51;
for(int i = 0; i < _tmp.length; i++) {
_tmp[i] = new Integer(_tmp[i] + j).byteValue();
j++;
}
return new String(_tmp);
}
public static String decode(String key) {
byte[] _tmp = key.getBytes();
byte j = 51;
for(int i = 0; i < _tmp.length; i++) {
_tmp[i] = new Integer(_tmp[i] - j).byteValue();
j++;
}
return new String(_tmp);
}
public ImageServlet() {
FONT_PATH = null;
graphicsManager = null;
}
String FONT_PATH;
PJAGraphicsManager graphicsManager;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -