此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【xiaobudong2458】截止到2008-07-22 17:36:10的历史汇总数据(不包括此帖):
发帖的总数量:47                       发帖的总分数:690                      每贴平均分数:14                       
回帖的总数量:18                       得分贴总数量:1                        回帖的得分率:5%                       
结贴的总数量:43                       结贴的总分数:630                      
无满意结贴数:8                        无满意结贴分:150                      
未结的帖子数:4                        未结的总分数:60                       
结贴的百分比:91.49 %               结分的百分比:91.30 %                  
无满意结贴率:18.60 %               无满意结分率:23.81 %                  
值得尊敬

解决方案 »

  1.   

    以下附上源码:登录页面 index.jsp
    ....
    <form action="login.do" method="post">
    用户名:
    <input type="text" name="username">
    <br>
    <br>
    密&nbsp;&nbsp;码:
    <input type="password" name="userpass">
    <br>
    <br>
    <button type="submit" name="" value="登录">
    登录
    </button>
    </form>
    ...
    登录 Action  LoginAction.java
    ...
    public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
    String username = loginForm.getUsername();
    String userpass = loginForm.getUserpass();
    String sql = "select * from talking where username = '" + username + "' and userpass = '" + userpass + "';";
    ArrayList list = UserDao.queryUser(sql);
    if(list.isEmpty()){
    return mapping.findForward("logfail");
    }
    HttpSession session = request.getSession();
    session.setAttribute("username", username);
    Vector v = (Vector)session.getServletContext().getAttribute("usernames");
    if(v == null){
    v = new Vector();
    }
    v.add(username);
    session.getServletContext().setAttribute("usernames", v);
    return mapping.findForward("logseccess");
    }
    }登录成功后进入聊天室页面
    ...
     <frameset rows="70%,30%" >
    <frameset cols="70%,30%" >
    <frame src="Chats.jsp" name="chats">
    <frame src="ShowUsers.jsp" name="showUsers">
    </frameset>
    <frame src="talk.jsp" name="talk">
    </frameset>
    ...显示用户 Action ShowUsersAction.java
    ...
    public class ShowUsersAction extends Action {
      public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    ShowUsersForm showUsersForm = (ShowUsersForm) form;// TODO Auto-generated method stub
    HttpSession session = request.getSession();
    ServletContext context = session.getServletContext();
    Vector v = (Vector)context.getAttribute("usernames");
    request.setAttribute("vector", v);
    return mapping.findForward("showusers");
    }
    }显示用户页面 ShowUsers.jsp
    ...
    <logic:iterate id="user" name="vector" >
    <bean:write name="user" property="username" /><br>
    </logic:iterate>
    ...
    (相关页面及代码已全部列出)各位帮忙看看问题出在哪里,登录成功后在 ShowUsers.jsp 页面里出错 错误码 500 can't find bean vector in any scope
      

  2.   

    Vector 类型的数据不可以直接输出吧?
      

  3.   

    我输出的并不是 Vector 类型数据呀,是 TalkingUser 类型的(我的一个 bean)
      

  4.   

    Vector对象里的元素要不能通过关键字取出,只能通过get(int index)方法取楼主可以先把vector类型转换成arraylist类型,然后可以取
      

  5.   

    Arraylist list = v.toArray() ;request.setAttribute("list", list); jsp中:<logic:iterate id="list" name="list" >
    <bean:write name="list" property="username" /> <br>
    </logic:iterate> 
      

  6.   

    对不起,上一个回复有错
    v.toArray() ;返回一个数组,可以把数组加到Arraylist里,然后输出到jsp
      

  7.   

    按楼上说的我改了一下,ShowUsersAction.java 里面添加如下代码:...
    int i = 0;
    ArrayList list = new ArrayList();
    while(!v.isEmpty()){
    list.add(v.get(i));
    i ++;
    }
    request.setAttribute("list", list);ShowUsers.jsp 里面改成以下代码:
    <logic:iterate id="user" name="list" >
    <bean:write name="user" property="username" /><br>
    </logic:iterate>页面错误如下:
    HTTP Status 500org.apache.jasper.JasperException: An exception occurred processing JSP page /ShowUsers.jsp at line 2219:  <center>
    20:  用户列表:
    21:  <br>
    22:  <logic:iterate id="user" name="list" >
    23:  <bean:write name="user" property="username" /><br>
    24:  </logic:iterate>
    25:  </center>javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean list in any scope我感觉是 ShowUsersAction.java 根本就没有工作啊....???
      

  8.   

    第一.按6楼的更改用ArrayList应该可行
    此标签<logic:iterate id="user" name="list" > 就指名type
    如:<logic:iterate id="user" name="list" type="User类的全限定名(即包名加类名)"> 
    第二.检查struts-config.xml文件中Action是否配置正确,在你的ShowUsersAction 类中测试是否工作
      

  9.   

    显示用户页面 ShowUsers.jsp 
    ... 
    <logic:iterate id="user" name="vector" > 
    <bean:write name="user" property="username" /> <br> 
    </logic:iterate> 错误:首先<logic:iterate id="user" name="vector" > 在之前Action动作中没有设置vector在任何的范围内
          其次根据你Action里对数据的处理来看,你的Vector集合放的是String并不包含username属性
          <bean:write name="user" property="username" />这句也会报错
      

  10.   

    对不起,没注意显示用户 Action ShowUsersAction.java 
    ... 
    public class ShowUsersAction extends Action { 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 
    ShowUsersForm showUsersForm = (ShowUsersForm) form;// TODO Auto-generated method stub 
    HttpSession session = request.getSession(); 
    ServletContext context = session.getServletContext(); 
    Vector v = (Vector)context.getAttribute("usernames"); 
    request.setAttribute("vector", v); 
    return mapping.findForward("showusers"); 
    } 这句看到,不好意思
      

  11.   

    检查你的Struts-config.xml文件的配置看是否ShowUsersAction跳转到ShowUsers.jsp 是否为上下文跳转因为你这里request.setAttribute("vector", v); 是放到request里所以跳转必须为上下文关系跳转,jsp页面才可以获取对象
    其次这句还是会报错
    <bean:write name="user" property="username" />这句也会报错
      

  12.   

    没有调用Action应该是你struts_config.xml 文件写的不对吧