[Implementing the image access counter]

The JAVA code is as follows:

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

public class CountServlet extends HttpServlet {

 

/**

*/

private static final long serialVersionUID = 1L;

 

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

resp.setContentType("image/jpeg");

// Set the browser not to cache this image

resp.setHeader("Pragma", "No-cache");

resp.setHeader("Cache-Control", "no-cache");

resp.setDateHeader("Expires", 0);

 

ServletOutputStream sos = resp.getOutputStream();

 

BufferedImage image = new BufferedImage(80, 20,

BufferedImage.TYPE_INT_RGB);

Graphics g = image.getGraphics();

g.setColor(Color.WHITE);

g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18));

String value = "1";

try {

value = getAccessCount(req);

} catch (Exception e) {

e.printStackTrace ();

}

 

g.drawString(value, 0, 18);

// End the drawing process of the image and complete the image

g.dispose();

ImageIO.write(image, "JPEG", sos);

sos.close();

 

 

}

 

private String getAccessCount(HttpServletRequest req) throws Exception {

// Get the URL address of the referenced page and use it as the retrieval keyword for the number of visits

String pageKey = req.getHeader("referer");

if (pageKey == null) {

return "0";

}

 

HttpSession session = req.getSession();

 

int number = session.isNew() ?1 :Integer.valueOf((null==session.getAttribute("visit")?"1":""+session.getAttribute("visit")));

if (session.getAttribute("visit") == null) {

 

 

session.setMaxInactiveInterval(60 * 60 * 24);// Set the maximum duration in seconds

// Internal files such as count.txt are best stored in the WEB-INF directory

String countFilePath = getServletContext()

.getRealPath("/count.txt");

 

FileInputStream in = new FileInputStream(countFilePath);

DataInputStream dataIn = new DataInputStream(in);

String v = String.valueOf(dataIn.read());

System.out.println("--------v --"+v );

number = Integer.valueOf(v);

++number;

 

session.setAttribute("visit", number);// Set unvisited to visit

 

 

in.close();

dataIn.close();

 

 

FileOutputStream out = new FileOutputStream(countFilePath);

DataOutputStream dataOut = new DataOutputStream(out);

dataOut.writeInt(number);

out.close();

dataOut.close();

}

 

return number + "";

}

 

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(req, resp);

}

 

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

super.service(req, resp);

}

 

@Override

public void service(ServletRequest req, ServletResponse res)

throws ServletException, IOException {

// TODO Auto-generated method stub

super.service(req, res);

}

 

}

 

The effect is as follows



 problem solved:



 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326850845&siteId=291194637