我做的是当一个用户登陆以后,可以查询除了自己以外所有注册过的用户servlet代码如下package huoshichuli;import java.sql.Connection;
import java.sql.ResultSet;import java.sql.Statement;
import java.util.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.softengine.util.database.DBCloser;public class SelectAllUser extends BusinessController {
public String exectue(HttpServletRequest request,
HttpServletResponse response) {
String userName = request.getParameter("userName");
Connection dbCon = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList list=new ArrayList();
try {
dbCon = ConnectionFactory.getConnection();
String sql = "select username from page where username!='"
+ userName + "'";
stmt = dbCon.createStatement();
rs = stmt.executeQuery(sql);
int i = 0; while (rs.next()) {
i = 1;
list.add(rs.getString("username"));
}
if (i == 0) {
return "/jsp/SelectAllUserError.jsp";
} else {
Object object[]=list.toArray();
for(int j=0;j<object.length;j++)
{
                     request.setAttribute("username", object[j]);
                     System.out.println(object[j]);
}
return "/jsp/SelectAllUserSuccess.jsp";
} } catch (Exception e) {
e.printStackTrace();
return "/jsp/dbException.jsp";
} finally {
DBCloser.clearDatabaseResource(dbCon, stmt, rs);
}
}
}
我想问的是这样的。else {
Object object[]=list.toArray();
for(int j=0;j<object.length;j++)
{
                     request.setAttribute("username", object[j]);我用了setAttribute方法把剩余的注册用户传递过去
那jsp页面中就应该用getAttribute方法
如果直接用<%=request.getAttribute("username") %>
是可以查询到上个页面循环的最后一个用户名的
我知道应该加个循环,可是写了半天没写明白,大家指点我一下,这个循环应该怎么写,才能把上个页面传过来的所有值都输出。谢谢,在线等

解决方案 »

  1.   

    <%object[] username = request.getAttribute("username") %> 再循环,你给设置个数组,你需要数组接收啊!
      

  2.   

    这样的思路是不对的,
    List list = new ArrayList();
    for(int j=0;j <object.length;j++){ 
         list.add(object[j]); 

    request.setAttribute("list",list);
    然后在页面在循环这个list就可以啦。
    request.getAttribute("list",list);
    for(int i=0;i<list.size();i++){
      username = list.get(i).toString();   
    }
      

  3.   

    按照你的思路:
    你如果存储的时候是数组;接受的时候也应该定义个新的数组进行接收!
    object[] username = request.getAttribute("username") ;
    //这里可以循环了
    for(int i=0;i<username.length;i++)
    {
      System.out.println(username[i]);
    }
      

  4.   

    直接把你的list放到request里不行吗?
    jsp中直接迭代这个list就好了,放到数组中不是多此一举呢?
      

  5.   

    else { 
    Object object[]=list.toArray(); 
    for(int j=0;j <object.length;j++) 

                         request.setAttribute("username", object[j]); 因为你这段代码意思是循环吧object[]中的值取出来赋给username对象,当然第二个就会覆盖掉第一个,
    建议这么写
    else { 
    Object object[]=list.toArray();                      request.setAttribute("username", object); 
    这样username中放的就是一个object数组,在jsp页面中用request.getAttribute("username")返回的也是个object[]数组
    然会对这个数组进行循环,还有用list的时候最好用上泛型,这样会减少运行时的ClassCastException异常,还有,记得在循环得到object中的值的时候,一定要进行向下类型转换,然后才可以用。