我做的是当一个用户登陆以后,可以查询除了自己以外所有注册过的用户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") %>
是可以查询到上个页面循环的最后一个用户名的
我知道应该加个循环,可是写了半天没写明白,大家指点我一下,这个循环应该怎么写,才能把上个页面传过来的所有值都输出。谢谢,在线等
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") %>
是可以查询到上个页面循环的最后一个用户名的
我知道应该加个循环,可是写了半天没写明白,大家指点我一下,这个循环应该怎么写,才能把上个页面传过来的所有值都输出。谢谢,在线等
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();
}
你如果存储的时候是数组;接受的时候也应该定义个新的数组进行接收!
object[] username = request.getAttribute("username") ;
//这里可以循环了
for(int i=0;i<username.length;i++)
{
System.out.println(username[i]);
}
jsp中直接迭代这个list就好了,放到数组中不是多此一举呢?
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中的值的时候,一定要进行向下类型转换,然后才可以用。