1, Fitter Servlet (Filter)
Please refer to
http://www.donews.net/stevenjiang/archive/2004/05/12/18482.aspx
2, httpsessionattributeListener listener
It is used to listen to Attributes for a session object being applied by add (Attribute of a specific name), and the REPLACE (the value of the named Attribute is reset) and transove (session expires or is forced to delete) . These three events correspond to three listening methods:
Public void attributeadded (httpsessionBindingEvent SE)
Public void attributemoved (httpsessionBindingEvent SE)
Public Void AttributeReplaced (httpsessionBindingEvent SE)
//Counterfitter.java, write the visitor's IP to session
Package edu.cust.Web.counter;
Import javax.servlet. *;
Import javax.servlet.http. *;
Import java.io. *;
Import java.util. *;
Public class counterfitter extends httpservlet imports filter {
PRIVATE FILTERCONFIG FILTERCONFIG;
Public void init (filterconfig filterconfig) {
THIS.FILTERCONFIG = FilterConfig;
}
// Process the Request / Response PAIR
Public Void Dofilter (ServletRequest Request, ServletResponse Response, Filterchain Filterchain) {
HttpservletRequest HR = (httpservletRequest) Request;
Httpsession session = hr.getsession;
IF (session.getattribute ("counter"
== NULL) {
Session.setttribute ("counter", hr.getRemoteAddr ());
}
Try {
Filterchain.dofilter (Request, Response);
}
Catch (servletexception SX) {
Filterconfig.getServletContext (). log (sx.getMessage ());
}
Catch (IOException IOX) {
FilterConfig.getServletContext (). log (Iox.getMessage ());
}
}
// Clean Up Resources
Public void destroy () {
}
}
//Onlinevisitor.java, read the IP from the session and write to the cache
Package edu.cust.Web.counter;
Import javax.servlet. *;
Import javax.servlet.http. *;
Import java.io. *;
Import java.util. *;
Public class onlinevisitor extends httpservlet imports httpsessionattributeListener {
Private static hashset ip = new hashset ();
Public void attributeadd (httpsessionbindingevent se) {
HttpSession session = se.getations ();
String onlineIP = (string) session.getattribute ("counter"
;
IP.Add (OnlineIP);
}
Public void attributeMoved (httpsessionBindingEvent se) {
HttpSession session = se.getations ();
String onlineIP = (string) session.getattribute ("counter"
;
Ip.Remove (OnlineIP);
}
Public void attributeced (httpsessionBindingEvent se) {
}
Public hashset getip () {
Return THIS.IP;
}
Public int getCount () {
Return ip.size ();
}
}
//test.java, test, you can also use JSP pages
Package edu.cust.Web.counter;
Import javax.servlet. *;
Import javax.servlet.http. *;
Import java.io. *;
Import java.util. *;
Import edu.cust.web.counter.onlinevisitor;
Public class getvisitors extends httpservlet {
Private static final string content_type = "text / html; charset = GBK";
// Initialize Global Variables
Public void init () throws servletexception {
}
// Process the http get request
Public void doget (httpservletRequest request, httpservletResponse response) throws servletexception, ioException {
Onlinevisitor online = new onlinevisitor ();
HttpSession session = request.getations (TRUE);
Response.setContentType (Content_Type);
PrintWriter out = response.getwriter ();
Date Date = new date ();
Out.println (""
;
Out.println ("
;
Out.println ("
;
Out.println ("