我在java后台查询数据库,获得一个列表,我怎样在jsp页面输出这个列表?????java后台程序
if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){

db2.dbConnect();
String sqlStr = "select * from db2admin.news where code='测试数据'";
System.out.println(111111);
db2.setSqlStr(sqlStr);
rst = db2.executeQuery(sqlStr);
System.out.println(222222);
//获得查询列表
while(rst.next()){

String title = rst.getString("title");
String code = rst.getString("code");



System.out.println(title);
System.out.println(code);

request.setAttribute("title",rst.getString("title"));//???怎样传值
request.setAttribute("code",rst.getString("code"));

}
System.out.println(111111);



rst.close();
db2.dbClose();
                 }
jsp页面尝试获取:  
                    <%=request.getAttribute("title")%>
                  <%=request.getAttribute("code")%>//我这样做的话,只能得到查询获得的最后一条记录,应该怎样写???

解决方案 »

  1.   

    java后台程序 
    if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ db2.dbConnect(); 
    String sqlStr = "select * from db2admin.news where code='测试数据'"; 
    System.out.println(111111); 
    db2.setSqlStr(sqlStr); 
    rst = db2.executeQuery(sqlStr); 
    System.out.println(222222); 
    List list = new ArrayList();
    Map map = null
    //获得查询列表 
    while(rst.next()){ 
    map = HashMap();
    String title = rst.getString("title"); 
    String code = rst.getString("code"); 
    map.put("title",title);
    map.put("code",code);
    list.add(map);System.out.println(title); 
    System.out.println(code); } 
    request.setAttribute("myList",list);//???怎样传值 
    System.out.println(111111); rst.close(); 
    db2.dbClose(); 
                    } 
    jsp页面尝试获取:  
    <%
    List list = (java.io.List)request.getAttribute("myList");
    for(int i = 0; i < list.size; i++){
         Map map = (java.io.Map)list.get(i);
         System.out.println(map.get("title"));
         System.out.println(map.get("code"));
    }
    %>
      

  2.   

    一般你应该有一个news类,title,code 是这个类的属性,并为他们提供get/set方法
    List list = new ArrayList();
    while(rst.next()){String title = rst.getString("title");
    String code = rst.getString("code");
    News news = new News();
    news.setTitle(title);
    news.setCode(code);
    list.add(news);

    request.setAttribute("list");
    jsp中
    List list = request.getAttribute("list");
     for(Iterator iter = list.iterator(); iter.hasNext();) {
    News news = (String)iter.next();
    out.println(news.getTitle());
    out.println(nes.getCode());
    }
      

  3.   

    我修改代码以后:java后台程序 
    if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ db2.dbConnect(); 
    String sqlStr = "select * from db2admin.news where code='测试数据'"; 
    System.out.println(111111); 
    db2.setSqlStr(sqlStr); 
    rst = db2.executeQuery(sqlStr); 
    System.out.println(222222); 
    List list = new ArrayList(); 
    Map map = null 
    //获得查询列表 
    while(rst.next()){ 
    map = HashMap(); //这句报错,不能执行 提示没有定义HashMap
    方法

    String title = rst.getString("title"); 
    String code = rst.getString("code"); 
    map.put("title",title); 
    map.put("code",code); 
    list.add(map); System.out.println(title); 
    System.out.println(code); 

    request.setAttribute("myList",list);//???怎样传值 
    System.out.println(111111); 
    rst.close(); 
    db2.dbClose(); 
                    } 
    jsp页面尝试获取:  
    <% 
    List list = (java.io.List)request.getAttribute("myList");//(java.io.List) (java.io.Map)报错    Map map = (java.io.Map)list.get(i); 
        System.out.println(map.get("title")); 
        System.out.println(map.get("code")); 

    %>我的包:
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import javax.servlet.ServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import db2.Db2;
    jsp配置:
    <%@ page language="java" import="java.util.*" import="java.io.*" pageEncoding="utf-8"%>请问具体怎样实现啊,谢谢
      

  4.   

    对 map = new HashMap();要实例化下
      

  5.   

    谢谢,<% 
    List list = (java.io.List)request.getAttribute("myList"); 
    for(int i = 0; i < list.size; i++){ 
        Map map = (java.io.Map)list.get(i); 
        System.out.println(map.get("title")); 
        System.out.println(map.get("code")); 

    %>
    //(java.io.List)(java.io.Map)提示java.io.List cantnot be resolved to a type.
    java.io.Map cantnot be resolved to a type.

    应该怎样改???应该怎样写????
      

  6.   

    List list = (java.util.ArrayList)request.getAttribute("myList"); 
      

  7.   


    List接口是java.util包下的java.util.List
    Map接口也是util包下的
    List list = (java.util.List)request.getAttribute("myList");
      

  8.   

    试试看<%
        if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ 

    db2.dbConnect(); 
    String sqlStr = "select * from db2admin.news where code='测试数据'"; 
    System.out.println(111111); 
    db2.setSqlStr(sqlStr); 
    rst = db2.executeQuery(sqlStr); 
    System.out.println(222222); 
    List list = new ArrayList(); 
    Map map = null 
    //获得查询列表 
    while(rst.next()){ 
    map =HashMap(); //这句报错,不能执行 提示没有定义HashMap
    //要map = new HashMap() 
    方法 
    String title = rst.getString("title"); 
    String code = rst.getString("code"); 
    map.put("title",title); 
    map.put("code",code); 
    list.add(map); 

    System.out.println(title); 
    System.out.println(code); 



    request.setAttribute("myList",list);//???怎样传值 (这样就可以保存值了)
    System.out.println(111111); 


    rst.close(); 
    db2.dbClose(); 
     } 



     %>
    <% 
    List list = (java.util.List)request.getAttribute("myList");//(改正)
                    //(java.io.List) (java.io.Map)报错    Map map = (java.io.Map)list.get(i);
    //list 要导util包下的:java.util.List 
                    //由于循环输入,所有要循环输入
    for (int i = 0;i < list.size();i++)
    {
    map = (HashMap)list.get(i);
    System.out.println(map.get("title")); 
                 System.out.println(map.get("code")); 
    }
       

    %>注意导包啊,兄弟! List HashMap 都是util包下的!
    试试看
    一定可以!
    ^_@
      

  9.   

    同样楼上,
    我个人觉的把它当成servlet好点
      

  10.   

    取数据放在servlet中,前台再取。
    注意OO,不要乱写一气。
      

  11.   

    先定义一个POJO类,就是为数据库里的每个属性设置get/set方法,
    然后读取数据:
    List list=new ArrayList(); 
    news n=new news();
    while(rst.next())

         String title = rst.getString("title"); 
         String code = rst.getString("code"); 
                    
         n.setTitle(title);
         n.setCode(Code);
         list.add(n); 

    request.setAttribute("myList",list);//???怎样传值 (这样就可以保存值了)然后输出数据:
     <% 
            List list = (java.util.List)request.getAttribute("myList");//(改正)
    Iterator iter=list.iterator();
    while(iter.hasNext())
    {
        news n=(news)iter.next();
        System.out.println(n.getTitle()); 
                System.out.println(n.getCode()); 
    }        
    %>
      

  12.   

    javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /show.jsp at line 3128: <% 
    29: List list = (java.util.ArrayList)request.getAttribute("myList"); 
    30: for(int i = 0; i < 8; i++){ 
    31:     Map map =(java.util.Map)list.get(i); 
    32:     System.out.println(map.get("title")); 
    33:     System.out.println(map.get("code")); 
    34: } 运行时,页面报错,应该怎么改啊???????、
      

  13.   

    javax.servlet.ServletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /show.jsp at line 31 28: <% 
    29: List list = (java.util.ArrayList)request.getAttribute("myList"); 
    30: for(int i = 0; i < 8; i++){ 
    31:    Map map =(HashMap)list.get(i);  
    32:    System.out.println(map.get("title")); 
    33:    System.out.println(map.get("code")); 
    34: } 后台能够运行,可我的页面不显示,于是我在java后台写了一个测试request.setAttribute("code",rst.getString("code"));
    在JSP中我用<%=request.getAttribute("code")%>能在页面显示,请教什么错误??
      

  14.   

    看看这个:先定义一个POJO类,就是为数据库里的每个属性设置get/set方法, 
    然后读取数据: 
    List list=new ArrayList(); 
    news n=new news(); 
    while(rst.next()) 

        String title = rst.getString("title"); 
        String code = rst.getString("code"); 
                    
        n.setTitle(title); 
        n.setCode(Code); 
        list.add(n); 

    request.setAttribute("myList",list);//???怎样传值 (这样就可以保存值了) 然后输出数据: 
    <% 
            List list = (java.util.List)request.getAttribute("myList");//(改正) 
    Iterator iter=list.iterator(); 
    while(iter.hasNext()) 

        news n=(news)iter.next(); 
        System.out.println(n.getTitle()); 
                System.out.println(n.getCode()); 
    }        
    %> 
      

  15.   

    你的数据可以放在list中然后在页面通过struts标签中的<logic:iterate>标签。或者是
    <%
      List list = (List)request.getAttribute("name");   
      for( int i = 0 ; i < list.size ; i ++ ){
    %>
      <%= list.get(i) %>
    <%
      }
    %>
      

  16.   

    java后台程序 
    if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ db2.dbConnect(); 
    String sqlStr = "select * from db2admin.news where code='测试数据'"; 
    System.out.println(111111); 
    db2.setSqlStr(sqlStr); 
    rst = db2.executeQuery(sqlStr); 
    System.out.println(222222); 
    List list = new ArrayList(); 
    Map map = null 
    //获得查询列表 
    while(rst.next()){ 
    map = new java.util.HashMap(); 
    String title = rst.getString("title"); 
    String code = rst.getString("code"); 
    map.put("title",title); 
    map.put("code",code); 
    list.add(map); System.out.println(title); 
    System.out.println(code); 

    request.setAttribute("myList",list);
    System.out.println(111111); 
    rst.close(); 
    db2.dbClose(); 
                    } 
    jsp页面尝试获取:  
    <% 
    java.util.List list = (java.util.List)request.getAttribute("myList"); 
    for(int i = 0; i < list.size; i++){ 
        Map map = (java.util.Map)list.get(i); 
        System.out.println(map.get("title")); 
        System.out.println(map.get("code")); 

    %>
      

  17.   

    Map map =(HashMap)list.get(i); 
    你list塞进去的是String类型,你取出来怎么能赋值给Map类型呢?
      

  18.   

    方案1:
    请注意以下代码在Jsp中书写:<%
            if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ 
        
                db2.dbConnect(); 
                String sqlStr = "select * from db2admin.news where code='测试数据'"; 
                System.out.println(111111); 
                db2.setSqlStr(sqlStr); 
                rst = db2.executeQuery(sqlStr); 
                System.out.println(222222); 
                List list = new ArrayList(); 
                Map map = null 
                //获得查询列表 
                while(rst.next()){ 
                    map =HashMap(); //这句报错,不能执行 提示没有定义HashMap
                    //要map = new HashMap() 
                    方法 
                    String title = rst.getString("title"); 
                    String code = rst.getString("code"); 
                    map.put("title",title); 
                    map.put("code",code); 
                    list.add(map); 
                
                    System.out.println(title); 
                    System.out.println(code); 
                
            
                } 
                request.setAttribute("myList",list);//???怎样传值 (这样就可以保存值了)
                System.out.println(111111); 
            
            
                rst.close(); 
                db2.dbClose(); 
         } 
        
        
        
         %>
        <% 
            List list = (java.util.List)request.getAttribute("myList");//(改正)
                    //(java.io.List) (java.io.Map)报错    Map map = (java.io.Map)list.get(i);
            //list 要导util包下的:java.util.List 
                    //由于循环输入,所有要循环输入
            for (int i = 0;i < list.size();i++)//这里是list.size();不是8;
            {
                map = (HashMap)list.get(i);
        %>
               <%=map.get("title")%>
               <%=map.get("code")%>
        <%
            }
           
        } 
        %>
    方案2:
    就是我在10楼写的;可行,最后的是把title code 保存在一个bean 对象中,然后添加的list中
    然后在jsp页面用jstl 的forEach 循环出来。
    这样是最好的解决方法。
    对象 ……
      

  19.   

    输出有两种方法:
    使用Logic标签进行遍历输出这两种方法都是遍历一个链表(List,HashMap,Hashtable之类的链表容器),因此需要你在后台进行页面派发前将所有记录都集中放到这个链表容器中,之后将容器打包放入request(即request.setAttribute('resultList', resultList)),之后在JSP页面上取出该容器,循环遍历输出即可。
    至于你上面所用的HashMap map = new HashMap()报错,是因为HashMap、HashTable、List、Set等容器类在实例化时需要知道将要放入其中的元素的类型,比如将要放入的Key为String类型,Value也为String类型,则需要这么声明:
    HashMap<String, String> map = new HashMap<String, String>();
    同理,如果声明List,则应该List<elementType> list = new ArrayList<elementType>();/** Class News */
    public class News {/** title */
    private String title;/** code */
    private String code;/**
     * 初始化
     */
    public News(final String titleParm, final String codeParm) {
    setTitle(titleParm);
    setCode(codeParm);
    }public String getTitle() {
    return title;
    }public void setTitle(final String titleParm) {
    this.title = titleParm;
    }public String getCode() {
    return code;
    }public void setCode(final String codeParm) {
    this.code = codeParm;
    }}// java后台程序,查询数据库,将查询结果以List形式放入request中
    ......
    if(id!=null&&!id.equals("")&&id.equalsIgnoreCase("13")){ db2.dbConnect(); 
    String sqlStr = "select * from db2admin.news where code='测试数据'"; 
    db2.setSqlStr(sqlStr); 
    rst = db2.executeQuery(sqlStr); 
    List<News> newsList = new ArrayList<News>();
    // 获得查询列表 
    while(rst.next()){ 
    String title = rst.getString("title"); 
    String code = rst.getString("code"); 
    newsList.add(new News(title, code));

    request.setAttribute("AttributeNewsList", newsList);
    rst.close(); 
    db2.dbClose(); 

    ......JSP页面使用Logic标签进行输出:
    <logic:iterate id="newsItem" name="AttributeNewsList" scope="request">
    <bean:write name="newsItem" property="title"/>
    <bean:write name="newsItem" property="code"/>
    </logic:iterate>
      

  20.   

    System.out.print()的函数是在服务器端进行输出,当然,如果服务器部署在本地是可以在本地看到输出信息的,可是如果将来服务器部署在远程,那么是在服务器端输出,客户端只能看到页面。