我有一个页面:关键代码如下:
......
<table>
<%
List lst=new ArrayList();
lst.clear();
lst=(List)application.getAttribute("USERS");
for(int i=0;i<lst.size();i++)
{
%>
<tr>
<td><%=(String)lst.get(i)%></td>
</tr>
<%
}
%>
</table>
......表格中的列是通过application隐含对象获取值的,问题是我每刷新一次页面,就会产生一个新列,用our对象打印亦如此,求解!

解决方案 »

  1.   

    刷新没有处理页面,我是手动点击刷新网页按钮刷新的,项目中总共四个页面(login.jsp,doLogin.jsp,chat.jsp,doChat.jsp)下面是处理登录页面(doLogin.jsp)的所有代码:
    <%@ page pageEncoding="GBK" contentType="text/html;charset=GBK" import="java.util.*,com.company.all.*"%>
    <%
    request.setCharacterEncoding("GBK");
    UsersDaoImpl udi=new UsersDaoImpl(); //此类用来验证登录登录是否成功
    List lst=new ArrayList();
    if(application.getAttribute("USERS")!=null)
    {
    if(((List)application.getAttribute("USERS")).size()>0) //如果application中有值
    {
    lst=(List)application.getAttribute("USERS"); //则用application对现象的值初始化List对象
    }
    }
    if(udi.validateLogin(request.getParameter("loginUserName"),request.getParameter("loginPassword"))!="") //如果验证通过则将登录窗口中文本框的值保添加到List对象中
    {
    lst.add(request.getParameter("loginUserName"));
    }
    application.setAttribute("USERS",lst); //为application重新赋值
    request.getRequestDispatcher("chat.jsp").forward(request,response); //全部搞定后跳转页面
    %>最后一句中的chat.jsp就是问题中的页面。负责显示成功登录的用户名。为题就是每次我点击刷新按钮后网页总是网页总还是留着上一次的打印的信息,这样就造成了重复,怎么解决呢!
      

  2.   

    我是LZ,我觉得问题就出在chat.jsp这个页面上,我点击刷新并不是真的刷新了网页而还是留着以前的信息,这是怎么回事呢?
      

  3.   

    不可能的事。而且,你连表格的border都没有显示,你怎么知道是多了一列呢?搞不好是你的LIST中的值在变呢?
      

  4.   


    用application应该是业务需要把  否则lz应该会用session来做 
      

  5.   

    Socket做的话比较方便  这个我到没有做过 不清楚 一起等待问题如何解决
      

  6.   

    你这个不就是传说中的刷新页面,重复提交吗,要把最后的跳转到chat.jsp的改成redirect方式
      

  7.   

    谢谢大家,woaini314的方法我试试看!
      

  8.   

    你这个是又进行了一次请求 然后又创建了一次application 和跳转页面没有关系
      

  9.   

    List lst=new ArrayList();
    lst.clear();??????这个清除有什么作用??????
    lst=(List)application.getAttribute("USERS");
      

  10.   

    List lst=new ArrayList();
    lst.clear();??????这个清除有什么作用??????并未清除application.getAttribute("USERS")的数据应该放在最后执行
    lst=(List)application.getAttribute("USERS");
      

  11.   

    谢谢各位,lst.clear()错了,已删。我用woaini314同志说的sendRedirect方法跳转确实解决了问题,但新的问题是我登录后显示两个自己的名字,如:(不能截图,比较悲剧)
    用户列表:
    admin //这是第一个登录的用户
    doudou //这是第二个登录的用户
    doudou //这里重复显示了一次,但庆幸的是刷新后没有先前的问题了
      

  12.   

    呃,我把所有页面中的application替换成session后问题解决,哎~整整一天时间搞这个了,看来我的基础有很大问题,在此十分感谢CSDN的兄弟姐妹我会努力的。