写了个简单的用户登录界面,想通过用户登录来记录用户的登录状态。
用户登录代码是没问题的,可以运行。但当我加了监听器后,
在web.xml里配置<listener><listener-class>login.UserListener</listener-class></listener>时就出错,在IE上运行时,提示找不到我的文件。
web.xml的文件如下:<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <listener>
  <listener-class>login.UserListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>我不知道<listener><listener-class>login.UserListener</listener-class></listener>该加在那里?在web.xml文件里次序错了,程序也运行不了。真正的位置该放在那里?

解决方案 »

  1.   

    提示的是这样的错误2009-8-18 14:00:43 org.apache.catalina.startup.HostConfig restartContext
    信息: restartContext(/Login)
    2009-8-18 14:00:43 org.apache.catalina.core.StandardContext reload
    信息: Reloading this Context has started
    2009-8-18 14:00:44 org.apache.catalina.core.StandardContext listenerStart
    严重: Skipped installing application listeners due to previous error(s)
    2009-8-18 14:00:44 org.apache.catalina.core.StandardContext start
    严重: Error listenerStart
    2009-8-18 14:00:44 org.apache.catalina.core.StandardContext start
    严重: Context startup failed due to previous errors
    而运行程序时的界面如下:
    HTTP Status 404 - /Login/login.jsp--------------------------------------------------------------------------------type Status reportmessage /Login/login.jspdescription The requested resource (/Login/login.jsp) is not available.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.28
      

  2.   

    从上面的错误看来是listener类有问题,login.UserListener代码也发来吧
      

  3.   

    login.UserListener类的代码:
    package login;import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.*;public class UserListenter implements HttpSessionAttributeListener {
    int users=0; public void attributeAdded(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    if(arg0.getName().equals("username"))
    {
    users++;
    System.out.println("用户登录,用户名:"+arg0.getValue());
    System.out.println("当前用户数:"+users);
    } } public void attributeRemoved(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub
    if(arg0.getName().equals("username"))
    {
    users--;
    System.out.println("用户注销,用户名:"+arg0.getValue());
    System.out.println("当前用户数:"+users);
    } } public void attributeReplaced(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub }}
      

  4.   

    哦,原来是HttpSessionAttributeListener接口啊,这个好像不需要在web.xml中配置的。
      

  5.   

    不好意思,我之前看错了,HttpSessionAttributeListener是要注册的,我自己试了试,没有你这样的出错信息。
    HttpSessionAttributeListener是监听所有session属性的变化,因此用于在线人数统计并不合适。可以改用HttpSessionBindingListener具体可以参考
    http://blog.edu.cn/user2/gaobaolu/archives/2008/2166745.shtml
      

  6.   

    用HttpSessionBindingListener就行,不知道是不是那里必须要匹配什么的。刚学Struts,很多都不明白。
    谢谢了