读书人

在线人员统计有关问题修改

发布时间: 2012-01-03 22:16:06 作者: rapoo

在线人员统计问题修改
下面的这个是可以的,谁能帮我修改下,就是用数据库来实现,登陆一个用户用库就记录进数据库,输出的时候将数据库数据写出就可以了,会写的话应该很快的。。。。

Java code
package online.MyEclipse.outpackage.online;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class CountListener implements ServletContextListener,ServletContextAttributeListener,HttpSessionListener,HttpSessionAttributeListener {    private ServletContext application = null ;    private HttpSession session = null ;    public void contextInitialized(ServletContextEvent sce) {        //初始化一个application对象,即application就是一个        //以tomcat的一次启动为整个周期的ServletContext        this.application=sce.getServletContext();        //设置一个列表属性online,用于保存在线用户名        this.application.setAttribute("online", new ArrayList());    }    public void contextDestroyed(ServletContextEvent sce) {}    public void attributeAdded(ServletContextAttributeEvent scab) {}    public void attributeRemoved(ServletContextAttributeEvent scab) {}    public void attributeReplaced(ServletContextAttributeEvent scab) {}    public void sessionCreated(HttpSessionEvent se) {}    public void sessionDestroyed(HttpSessionEvent se) {           //取得用户名列表        List online=(List)this.application.getAttribute("online") ;        //取得当前用户名        String username=(String)se.getSession().getAttribute("name") ;        //将此用户名从列表中删除        online.remove(username) ;        //将删除后的列表重新设置到application属性中        this.application.setAttribute("online", online) ;    }    //当session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法    public void attributeAdded(HttpSessionBindingEvent se) {        //取得用户名列表        List online=(List)this.application.getAttribute("online") ;        //将当前用户名添加到列表中.list数组添加值的方式 list.add();        online.add(se.getValue()) ;        //若是多维数组则调用相对应的属性的时候se.getValue("name");        //将添加后的列表重新设置到application属性中        this.application.setAttribute("online", online) ;    }    public void attributeRemoved(HttpSessionBindingEvent se) {}    public void attributeReplaced(HttpSessionBindingEvent se) {}}


Java code
<%@ page contentType="text/html;charset=GB2312"%><%@ page import="java.util.*"%><html>    <head>        <title>sessionlistener</title>    </head>    <body>        <form action="sessionlistener.jsp" method="post">            用户名:            <input type="text" name="username" />            <input type="submit" value="登录" />            <a href="logout.jsp">注销</a>        </form>        <%            String username = request.getParameter("username");            if (username != null) {                session.setAttribute("name", username);            }        %>        <p>        <h3>            在线用户:        </h3>        <hr>        <%            List online = (List) getServletContext().getAttribute("online");            Iterator iter = online.iterator();            while (iter.hasNext()) {        %>        <li>            <%=iter.next()%>        </li>        <%        }        %>    </body></html>


Java code
<%@ page contentType="text/html;charset=GB2312" %><html>  <head>    <title>logout</title>  </head>    <body><%    //将session销毁    session.invalidate() ;    response.setHeader("refresh","3;URL=sessionlistener.jsp") ;%>    <h3>注销成功!</h3>    3秒后自动返回登录页面<br>    如果没有跳转,请点<a href="sessionlistener.jsp">这里</a>  </body></html> 



Java code
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"     xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <listener>      <listener-class>online.MyEclipse.outpackage.online.CountListener</listener-class>  </listener></web-app>



驱动和url这样就可以了
<init-param>
<param-value>jdbc:mysql://localhost:3306/user</param-value>
</init-param>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>

前面发过帖子可是都解决不了 可以见:http://topic.csdn.net/u/20081017/13/69df628a-41d3-46e7-a51c-c1e29b937cd0.html ,所以索性全部贴上来了,谁先帮我写好分全给,谢谢了。

[解决办法]
我帮楼主写个大概吧!

Java code
package online.MyEclipse.outpackage.online;import javax.sql.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class CreateDBServlet extends HttpServlet{    private String url;    private String user;    private String password;    public void init() throws ServletException{        String driverClass = getInitParameter("driver");        url = getInitParameter("url");//这里这些都是从web.xml里面获取的,所以xml要修改        user = getInitParameter("user");//修改好的xml下面帖出来        password = getInitParameter("password");       try{             Class.forName(driverClass);//加载驱动       }       catch(ClassNotFoundExcrption ce){//捕获异常            throw new UnavailableException("加载数据库驱动失败!");       }     }     //下面就是对前台jsp页面发送的请求做处理,比如就是对用户登陆进行判断,     //看数据库中是否有该用户     } 

读书人网 >Java Web开发

热点推荐