TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
说明: 请直接存放在tomcat/webapps/ 下则可使用
会直接输出Jpg的计数器
请用HTML语法 img src=http://ip:port/count/countPng
环境
java: j2sdk1.4.2以上
Version: Apache Tomcat/5.0.30 以上
request 参数
bgr=0&bgg=0&bgb=0&size=24&fr=255&fg=255&
fb=255&f=Courier
背景R G B的颜色分别为: bgr bgg bgb
前景R G B的颜色分别为: fr fg fb
字型大小 size
字体 f (只吃英文)
使用方法
http://ip:port/count/countPng
http://ip:port/count/countPng?bgr=0&bgg=0&bgb=0&size=24&fr=255&fg=255&fb=255&f=Courier 运行图: 主要代码:- package web;
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.io.*;
- import java.util.Date;
- import javax.imageio.ImageIO;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class Web_count1 extends HttpServlet
- {
- public Web_count1()
- {
- }
- public void init(ServletConfig config)
- throws ServletException
- {
- super.init(config);
- }
- public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException
- {
- doPost(req, res);
- }
- public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException
- {
- int bgr;
- if(req.getParameter("bgr") == null || req.getParameter("bgr").equals(""))
- bgr = 121;//背景色中的红色值
- else
- bgr = Integer.parseInt(req.getParameter("bgr"));
- int bgg;
- if(req.getParameter("bgg") == null || req.getParameter("bgg").equals(""))
- bgg = 82;//背景色中的绿色值
- else
- bgg = Integer.parseInt(req.getParameter("bgg"));
- int bgb;
- if(req.getParameter("bgb") == null || req.getParameter("bgb").equals(""))
- bgb = 205;//背景色中的兰色值勤
- else
- bgb = Integer.parseInt(req.getParameter("bgb"));
- int size;
- if(req.getParameter("size") == null || req.getParameter("size").equals(""))
- size = 24;//字体大小
- else
- size = Integer.parseInt(req.getParameter("size"));
- int fr;
- if(req.getParameter("fr") == null || req.getParameter("fr").equals(""))
- fr = 255;//字体颜色值中的红色值
- else
- fr = Integer.parseInt(req.getParameter("fr"));
- int fg;
- if(req.getParameter("fg") == null || req.getParameter("fg").equals(""))
- fg = 255;//字体颜色值中的绿色值
- else
- fg = Integer.parseInt(req.getParameter("fg"));
- int fb;
- if(req.getParameter("fb") == null || req.getParameter("fb").equals(""))
- fb = 255;//字体颜色值中的兰色值
- else
- fb = Integer.parseInt(req.getParameter("fb"));
- String f;
- if(req.getParameter("f") == null || req.getParameter("f").equals(""))
- f = "Courier";//字体名
- else
- f = req.getParameter("f");
- res.setContentType("image/jpeg");
- HttpSession session = req.getSession(true);
- String url = getServletContext().getRealPath("/");
- if(!session.isNew())
- {
- Date halfAgo = new Date((long)((double)System.currentTimeMillis() - 1800000D));
- Date create = new Date(session.getLastAccessedTime());
- if(create.before(halfAgo))
- {
- session.invalidate();
- session = req.getSession(true);
- }
- }
- Integer count = (Integer)session.getAttribute("tracker.count");
- if(count == null)
- count = new Integer(got_count(url));//增加计数
- session.setAttribute("tracker.count", count);
- String str = new String(session.getAttribute("tracker.count").toString());
- BufferedImage outimg = out_image(url, (new String("0000000" + str)).substring(
- ("0000000" + str).length() - 7, ("0000000" + str).length()), bgr, bgg, bgb, size, f, fr, fg, fb);
- ServletOutputStream sos = res.getOutputStream();
- ImageIO.write(outimg, "PNG", sos);
- sos.close();
- res.flushBuffer();
- }
- public void destroy()
- {
- super.destroy();
- }
- public String getServletInfo()
- {
- return "Servlet Call Test";
- }
- private int got_count(String url)
- {
- File f = new File(url, "count.txt");
- String str = "0";
- try
- {
- if(!f.exists())
- {
- f.createNewFile();
- FileWriter fo = new FileWriter(f);
- fo.write("0".toString());
- fo.close();
- }
- FileReader fi = new FileReader(f);
- StringBuffer sb = new StringBuffer("");
- for(int ch = 0; (ch = fi.read()) != -1;)
- sb.append((char)ch);
- fi.close();
- f = null;
- str = new String(String.valueOf(Integer.parseInt(sb.toString()) + 1));
- FileWriter fw = new FileWriter(url + "count.txt");
- fw.write(str);
- fw.close();
- f = null;
- }
- catch(Exception e)
- {
- System.out.println(e.toString());
- }
- return Integer.parseInt(str.toString());
- }
- private BufferedImage out_image(String url, String count, int bgr, int bgg, int bgb, int size, String f,
- int fr, int fg, int fb)
- {
- Font font = new Font(f, 1, size);
- Color bg = new Color(bgr, bgg, bgb);
- Color fontcolor = new Color(fr, fg, fb);
- int width = 112;
- int height = 21;
- BufferedImage image = new BufferedImage(width, height, 1);
- Graphics g = image.getGraphics();
- g.setColor(bg);
- g.fillRect(0, 0, width, height);
- g.setFont(font);
- FontMetrics fm = g.getFontMetrics(font);
- g.setColor(fontcolor);
- g.drawString(count, (width - fm.stringWidth(count)) / 2, (0 + fm.getHeight()) / 2);
- return image;
- }
- }
复制代码
源码下载:http://file.javaxxz.com/2014/10/10/065937906.zip |
|