java后台查询的列表,怎样在jsp页面输出???

sun403 2009-03-23 09:45:09
我在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")%>//我这样做的话,只能得到查询获得的最后一条记录,应该怎样写???
...全文
844 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Epiphone 2009-03-23
  • 打赏
  • 举报
回复
List list = (java.util.ArrayList)request.getAttribute("myList");
sun403 2009-03-23
  • 打赏
  • 举报
回复
谢谢,<%
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.

应该怎样改???应该怎样写????
fanyuanwaifdl 2009-03-23
  • 打赏
  • 举报
回复
同意ls
ljh0242 2009-03-23
  • 打赏
  • 举报
回复
对 map = new HashMap();要实例化下
beanj 2009-03-23
  • 打赏
  • 举报
回复
map = new HashMap();
sun403 2009-03-23
  • 打赏
  • 举报
回复
我修改代码以后:

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"%>

请问具体怎样实现啊,谢谢
zhj92lxs 2009-03-23
  • 打赏
  • 举报
回复
一般你应该有一个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());
}
铁匠梁 2009-03-23
  • 打赏
  • 举报
回复
页面的javascript写就可以了
goldlive_8888 2009-03-23
  • 打赏
  • 举报
回复
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"));
}
%>
NonActive 2009-03-23
  • 打赏
  • 举报
回复
System.out.print()的函数是在服务器端进行输出,当然,如果服务器部署在本地是可以在本地看到输出信息的,可是如果将来服务器部署在远程,那么是在服务器端输出,客户端只能看到页面。
NonActive 2009-03-23
  • 打赏
  • 举报
回复
输出有两种方法:
使用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>

hoojo 2009-03-23
  • 打赏
  • 举报
回复
方案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 循环出来。
这样是最好的解决方法。
对象 ……
tanhaihui 2009-03-23
  • 打赏
  • 举报
回复
Map map =(HashMap)list.get(i);
你list塞进去的是String类型,你取出来怎么能赋值给Map类型呢?
goldlive_8888 2009-03-23
  • 打赏
  • 举报
回复
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"));
}
%>
luoping544 2009-03-23
  • 打赏
  • 举报
回复
19楼正解
sun403 2009-03-23
  • 打赏
  • 举报
回复
兄弟,哭了,不报错,但是不在前台输出啊
jklot66 2009-03-23
  • 打赏
  • 举报
回复
你的数据可以放在list中然后在页面通过struts标签中的<logic:iterate>标签。或者是
<%
List list = (List)request.getAttribute("name");
for( int i = 0 ; i < list.size ; i ++ ){
%>
<%= list.get(i) %>
<%
}
%>
lgq_0714 2009-03-23
  • 打赏
  • 举报
回复
看看这个:

先定义一个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());
}
%>

sun403 2009-03-23
  • 打赏
  • 举报
回复
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")%>能在页面显示,请教什么错误??
sun403 2009-03-23
  • 打赏
  • 举报
回复
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 =(java.util.Map)list.get(i);
32: System.out.println(map.get("title"));
33: System.out.println(map.get("code"));
34: }

运行时,页面报错,应该怎么改啊???????、
加载更多回复(8)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧