jsp在页面中无法显示取出的数据

129find 2009-03-18 10:05:17
<%
String goodsid="";
if(request.getParameter("giftid")==null)
{
goodsid="1";
}else
{
goodsid=request.getParameter("giftid");
}

String goodsname="";
String goodsimage="";
int goodsmoney=0;
if(goodsid!=null)
{
db.executeQuery("getGoodsInfo","SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
while(db.next("getGoodsInfo"))
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");
%>
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
<%
}

System.out.print("======="+goodsid+goodsimage);
}

%>
以上代码能正确从数据库取出值...System.out.print("======="+goodsid+goodsimage); 能打印出取出的值!问题在于在jsp页面上无法显示取出的值
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
这行代码无法显示数据!
什么原因?找不出。。。。
...全文
392 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
129find 2009-03-22
  • 打赏
  • 举报
回复
问题我已经解决!可以结贴了,呵呵!谢谢帮忙!以后多交流。。。。
wad12302 2009-03-21
  • 打赏
  • 举报
回复
并在层中显示相关的信息!显示信息的地方是层,而不是页面!是在层中动态的显示信息!




这个层和 页面的效果 的基本原理 应该是一样的把 怎么弹出层我就不知道到了 可能要用到css 和js 这个方面的 渲染吧 如果 你点击按钮 层弹出来了 剩下的 不就是和 弹出窗口的 里面显示信息的原理一样码?

只是 层 你看不到 有状态栏 而 ie 多了边框 还有状态栏 而且 又没有样式 修饰 所以看起来效果不同

这个方面我就不知道了

如果 层 能弹出来 就已经解决了 90%

你有代码 码 贴上来我看看 还有关联的Js 和CSS

我也想看看

我理解的那个层也就是一个窗口 只不过 你看不到边框 还有状态栏 看到的只是主体内容 按钮 就是

在层里面放置的按钮之类的 和 jsp 页面区别不大吧

知识有限 就只知道这么多 可以探讨
~~~~~~~~~~~~~~~~~~~~~~
还有我仔细看了你的图

你的意思是这个样子的吧

点击 “送礼” 是弹出一个层出来 ,这里其实是弹出来一个窗口 这里是可以不用不用AJAX 技术

而在弹出来的窗口这里 有个下拉 列表 那里 有个 “赠送给”:谁 如果这里还想显示出来 这个人 的信息 这个才是
要使用ajax 的地方 是不是你要把ajax 使用的地方弄错了
wad12302 2009-03-21
  • 打赏
  • 举报
回复
并在层中显示相关的信息!显示信息的地方是层,而不是页面!是在层中动态的显示信息!




这个层和 页面的效果 的基本原理 应该是一样的把 怎么弹出层我就不知道到了 可能要用到css 和js 这个方面的 渲染吧 如果 你点击按钮 层弹出来了 剩下的 不就是和 弹出窗口的 里面显示信息的原理一样码?

只是 层 你看不到 有状态栏 而 ie 多了边框 还有状态栏 而且 又没有样式 修饰 所以看起来效果不同

这个方面我就不知道了

如果 层 能弹出来 就已经解决了 90%

你有代码 码 贴上来我看看 还有关联的Js 和CSS

我也想看看

我理解的那个层也就是一个窗口 只不过 你看不到边框 还有状态栏 看到的只是主体内容 按钮 就是

在层里面放置的按钮之类的 和 jsp 页面区别不大吧

知识有限 就只知道这么多 可以探讨
~~~~~~~~~~~~~~~~~~~~~~
还有我仔细看了你的图

你的意思是这个样子的吧

点击 “送礼” 是弹出一个层出来 ,这里其实是弹出来一个窗口 这里是可以不用不用AJAX 技术

而在弹出来的窗口这里 有个下拉 列表 那里 有个 “赠送给”:谁 如果这里还想显示出来 这个人 的信息 这个才是
要使用ajax 的地方 是不是你要把ajax 使用的地方弄错了
129find 2009-03-21
  • 打赏
  • 举报
回复
呵呵,不好意思,老麻烦你啊!谢谢,谢谢!
你上面的代码我看了,可以出效果,但对于我的要求来说还是不行!
我的要求是点击按钮弹出一个隐藏层,并在层中显示相关的信息!显示信息的地方是层,而不是页面!是在层中动态的显示信息!
按钮和层都同在一个页面中!
129find 2009-03-20
  • 打赏
  • 举报
回复
我把以上问题进行简化。。如下:

<a href="javascript:;" onclick="show2(<%=goodsid%>)" id="goods"><img src="images/present/as1.gif" /></a>
//这是按钮,调用show2()函数弹出一个层,在层中显示goodsid相对应的物品信息,goodsid通过ajax无刷新传递

以下是在层根据id获取的物品信息
<%
String goodsid="";
String goodsname="";
String goodsimage="";
int goodsmoney=0;
String id="";
if(request.getParameter("goodsid")==null)
{
goodsid="1";

}
if(request.getParameter("goodsid")!=null)
{
goodsid=request.getParameter("goodsid");

}
System.out.println("这是节日送礼语句"+"SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
db.executeQuery("getGoodsInfo","SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
if(db.next("getGoodsInfo"))
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");

}
db.clearQuery("getGoodsInfo");
out.print(goodsname);
%>

现在问题是System.out.println("这是节日送礼语句"+"SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");能正确打印传过的goodsid值out.print(goodsname);却总是打印出默认id为1的信息
也就说sytem.out.print()可以在后台打印出根据id而获取的值,但out.print()却无法获取根据id而获取的值!页面无法显示。。。。急啊!谢谢帮忙啊!
以下是ajax代码

var XMLHttpReq,giftid; //创建XMLHttpRequest对象
function createXMLHttpRequest()
{
if(window.XMLHttpRequest)
{
//Mozilla浏览器
XMLHttpReq = new XMLHttpRequest();
}else if(window.ActiveXObject)
{
//IE浏览器
try
{
XMLHttpReq = new ActiveXObject( "Msxm12.XMLHTTP" );
}catch(e)
{
try
{
XMLHttpReq = new ActiveXObject( "Microsoft.XMLHTTP" );
}catch(e)
{}
}
}
}
//发送Ajax请求
function sendAjaxRequest(url)
{
createXMLHttpRequest(); //创建XMLHttpRequest对象
XMLHttpReq.open("get",url,false);
XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
XMLHttpReq.send(null);
}

//回调函数processResponse
function processResponse()
{
if(XMLHttpReq.readyState==4)
{ //对象状态
if(XMLHttpReq.status==200)
{//信息已成功返回,开始处理信息
var xmlReturn = XMLHttpReq.responseText;
}else
{
window.alert("所请求的页面有异常");
}
}

}

function show2(goodsid)
{

document.all.ly2.style.display="block";
document.all.ly2.style.width=document.body.clientWidth+20;
document.all.ly2.style.height=document.body.clientHeight+20;
document.all.divTest2.style.display='block';
document.getElementById("divTest2").style.visibility="visible";
var url = "present.jsp?goodsid="+goodsid;
sendAjaxRequest(url);
window.alert(gid);
}












wad12302 2009-03-20
  • 打赏
  • 举报
回复
window.open('present.jsp?goodsid=<%=goodsid%>', '礼物详细信息', 'width=300, height=300, scrollbars=no');
wad12302 2009-03-20
  • 打赏
  • 举报
回复
赶紧弄弄看晚上回去你再提问题把 下午一直在想你的问题 。

我要平静 ~~~ 呼吸 深呼吸
wad12302 2009-03-20
  • 打赏
  • 举报
回复
花了很长时间弄好了
DB。java 我就不传了
我传test2.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<%@page import="db.*"%>
<%
request.setCharacterEncoding("GB18030");
//中午的 DB 没有放入包 也没引入 现在把代码 放入 db包 引入 代码忘记引DB文件了
//仔细看我的注释吧 可能是细节不清楚
//这里都是我自己的测试数据 我测试成功
String goodsid = "a001";
String goodsname = "初始化数据";
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}

//function sendAjaxRequest(goodsid)
function sendAjaxRequest()
{
createXMLHttpRequest();
//ajax 要受缓存影响 "×tamp=" + new Date().getTime() 使得每次时间都不同 而不使用缓存内容
//注意这个url 我刚才拼错了几次 晕 function sendAjaxRequest(goodsid)这样传递参数我的报错 换个方法 我
var url ="present.jsp?goodsid=<%=goodsid%>×tamp=" + new Date().getTime();
xmlHttp.open("get",url,true);//我写的这个是true
xmlHttp.onreadystatechange = processResponse;//指定响应函数
xmlHttp.send(null);
}

function processResponse() {
if(xmlHttp.readyState==4) {
if(xmlHttp.status==200) {
//这里用innertHTML写入到<span id="reText"></span>
reText.innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";
}else {
window.alert("所请求的页面有异常");
}
}
}

function show2(goodsid) {
//sendAjaxRequest(goodsid);
//window.open()是在新窗口 中显示信息
//window.open('present.jsp?goodsid=<//%=goodsid%>', '礼物详细信息', 'width=300, height=300, scrollbars=no');
//我想不清楚你说的调用show2()函数弹出一个层,在层中显示goodsid相对应的物品信息
//既然你要ajax要转向另一个页面present.jsp?goodsid="+goodsid 那么这个页面里面应该有 查询数据库的操作吧 查询礼物
//XMLHttpReq.open("get",url,false); 我用的是 xmlHttp.open("GET", url, true);
//function processResponse() 这个里面 你只是拿到了var xmlReturn = XMLHttpReq.responseText;
//而且这个信息也不知道 你是要显示在 哪个页面 还是显示在persont。jsp页面
}

</script>
<title>Insert title here</title>
</head>
<body>
<center>
<h1>这里是 原页面 我的 test2.jsp 页面</h1><br>
<%
//System.out.println("这是节日送礼语句");
String sql = "select item_no,item_name,spec,pattern from t_items where item_no=?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DB.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, goodsid);

rs = pstmt.executeQuery();
if (rs.next()) {
goodsname = rs.getString("item_name");
System.out.println("数据库里面能够根据id查询出 一个礼物");
} else {
System.out.println("数据库根据id 查询 00000 个礼物");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db.DB.closeResultSet(rs);
db.DB.closeStatement(pstmt);
db.DB.closeConnection(conn);
}
out.print(goodsname);
%>
<br>
<!-- 直接使用sendAjaxRequest() -->
<a href="javascript:;" onclick="sendAjaxRequest()" id="goods"><img
src="images/present/as1.gif" />
</a>
<h1>
<span id="reText"></span>
</h1>
<!--
这个地方应该就是你说的 用ajax 的异步处理从 ajax 处理完后返回的内容显示的地方把
如果你是想 点击show2()弹出一个页面出来 在上面显示礼物信息 那么就没有必要用AJax了 直接在
persent.jsp页面里面调用 通过传递过去的goodsid 数据库操作查询礼物资料把
使用 Ajax 的回调函数 可以使得 你查询物料的结果 返回来这个页面显示 而不是persent页面显示
//我在我电脑上已经测试成功那个能正确 返回数据 并显示

//window.open("") 还有 reText.innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";
//我也就知道这2种方法了 不知道那个合适你 或者还有其他的方法
-->
</center>
</body>
</html>




<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.sql.*" %>
<%@ page import="db.*" %>
<%
request.setCharacterEncoding("GB18030");
String goodsid = request.getParameter("goodsid"); //这个是你传递过来的id 我现用固定的测试
//String goodsid = "001";
//我这里就不使用Manager管理了 直接使用原始数据库连接 不然麻烦 要写好多东西
String sql = "select item_no,item_name,spec,pattern from t_items where item_no=?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String goodsname = "初始化数据";
try{
conn = db.DB.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,goodsid);

rs = pstmt.executeQuery();
if(rs.next()){
goodsname = rs.getString("item_name");
//测试成功后可以删除
System.out.println("数据库里面能够根据id查询出 一个礼物");
}else {
//测试成功后可以删除
System.out.println("数据库根据id 查询 00000 个礼物");
}
}catch(Exception e){
e.printStackTrace();
}finally{
db.DB.closeResultSet(rs);
db.DB.closeStatement(pstmt);
db.DB.closeConnection(conn);
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<center>
<h1>Present 页面数据</h1><br>
goodsid:<%=goodsid%><br>
goodsname:<%=goodsname%><br>
</center>
</body>
</html>

数据库

| item_no | item_name | spec | pattern | category | unit |
| a001 | 维生素D | 蓝瓶 | ISO8859 | B03 | C01 |

结果
http://127.0.0.1:8080/message/test2.jsp

这里是 原页面 我的 test2.jsp 页面

维生素D


Present 页面数据

goodsid:a001
goodsname:维生素D


你看看把
129find 2009-03-20
  • 打赏
  • 举报
回复
点击一按钮就弹出一个层,在点击按钮的同时把一个id传到层中,并在层中显示相对应的id信息?如何实现 ?其实我就是想实现这样的效果!有没什么好的方法?
129find 2009-03-20
  • 打赏
  • 举报
回复
真的很感谢你的帮忙!我仔细分析了我的代码,我想应该是ajax的原因。。。
wad12302 2009-03-20
  • 打赏
  • 举报
回复
我以前用到的

function validate(field) {
if (trim(field.value) != "") {
createXMLHttpRequest();
var url="../servlet/ClientIdValidateServlet?clientId=" + field.value + "×tamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange=callback;
xmlHttp.send(null);
}else {
document.getElementById("resText").innerHTML = "";
}
}


function callback() {}

时间到了 晚上有问题再说把
wad12302 2009-03-20
  • 打赏
  • 举报
回复

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="java.sql.*" %>
<%
String goodsid="";
String goodsname="";
String goodsimage="";
int goodsmoney=0;
String id="";
if(request.getParameter("goodsid")==null)
{
goodsid="1";

}
if(request.getParameter("goodsid")!=null)
{
goodsid=request.getParameter("goodsid");

}
System.out.println("这是节日送礼语句"+"SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
//db.executeQuery("getGoodsInfo","SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<!--
1、仔细分析你的原因 : 首先 你 说 你已经 成功 拿到 goodsid=request.getParameter("goodsid"); 已经拿到了 goodid 比如说现在是 3; 原来的是 1;
接下来的就是数据库查询了 很可能问题出现在这里 而且 你用的 是自己的 DB 数据库连接 我不太清楚
我给你写一个 简单 的 你区查询看 能查询出结果码 这个先放后面

而且 你后台打印的只是sytem.out.print()可以在后台打印出根据id而获取的值 id 而已 没有数据
2. 你说的页面 jsp 页面

是出现异常 报一大堆错误

还是 jsp页面 就是空白页 什么没有


如果是空白也 那么 就跟我想的一样了
if(db.next("getGoodsInfo"))//这个方法我不知道怎么回事 具体的不清楚 我帮你写的看看 也就是
换另一种形式
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");

}
如果页面是空白 那么 是这样执行的 if(db.next("getGoodsInfo")) 并没有执行进去
要么是你数据库查询出错 或者 没有 查询结果 那么 db.next("getGoodsInfo")=false

out.print(goodsname); 你这个输出的 依旧是你在顶端 初始化时候的数据 String goodsname="";
很明显 是if(db.next("getGoodsInfo")) 没执行到里面 而是跳过了

3.现在首要问题是解决你 这个jsp 页面 的输出问题 是否输出正确结果 (你是说现在 你的 out.print(goodsname); 输出有问题)
是否是你的数据查询这里出现问题
4.ajax 问题我也不是很精通 ,如果你在其他地方使用通过 那么 也不会有什么技术方面问题
-->
<%
//我写的数据库连接 你要做的就是换我这个查询数据库 如果 能查出来 显示正确 那么就是 很明显了
String sql = "SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid=?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

try{
// DB.getConnection();//这里是拿到conn
conn = DB.getConnection();
pstmt = conn.prepareStatement(sql);
//goodsid 是上request 取出来的
pstmt.setString(1,goodsid);

rs = pstmt.executeQuery();
//按照id查出来的应该是一个结果 或者 要么 就没有
if(rs.next()){
goodsname=rs.getString("goodsname");
goodsimage=rs.getString("goodsimage");
goodsmoney=rs.getInt("goodsmoney");
//这里打3一句提示性语句 数据库查询结果 注意看后台提示
System.out.println("数据库里面能够根据id查询出 一个礼物");
}else {
//else 写出来是为了查看 数据库查询结果 注意看后台提示
System.out.println("数据库根据id 查询 00000 个礼物");
}
}catch(Exception e){
e.printStackTrace();
}finally{
DB.closeResultSet(rs);
DB.closeStatement(pstmt);
DB.closeConnection(conn);
}
//这个就是最后goodsname 的值 要么if(rs.next())执行了 要么 就是 String goodsname="";
out.print(goodsname);

// 我建议你还是 把 结果 是放在 ResultSet 这样明显

//你还是现用这个数据库连接检查下看看

//你的那个结果 表示 没有 DB。java 我还是看不明白
//你同样可以把这个方法封装到java文件 调用就行 返回结果大jsp页面就可以
//这个只是大概思路了
// 希望继续提问
//我要找时间看看ajax 那里的代码 ,找你说的意思 还没有到ajax 那里出错 ,下午还要忙一端时间 要晚上 9点才能上网~
%>
</body>
</html>



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DB {

/**
* 拿到MySql数据库连接
* * 不要忘记把数据库连接的jar 包引进
* @return
*/
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// 数据库 名称和 密码 用户名自己写
conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/XXX?user=root&password=XXX");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
System.out.println("连接数据库失败");
e.printStackTrace();
}
return conn;
}

/**
* 关闭数据连接conn
* @param conn
*/
public static void closeConnection(Connection conn) {
if(conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
System.out.println("关闭数据库连接出错");
e.printStackTrace();
}
}
}

/**
*
* 关闭数据连接stmt
* @param stmt
*/
public static void closeStatement(Statement stmt) {
if(stmt != null) {
try {
stmt.close();
stmt = null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

/**
*
* 关闭数据连接rs
* @param rs
*/
public static void closeResultSet(ResultSet rs) {
if(rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

wad12302 2009-03-19
  • 打赏
  • 举报
回复
我再次看一下代码 又发现新问题 如果根据id查询 是查询结果要得到一个物品时候 结果不要用 while 不然 下次的值循环后还是空值 而取到的只是上一次的值 建议用if 只执行一次
按理说db.executeQuery("getGoodsInfo","SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
这个语句 查询出来的 就只有一个结果(除非你的数据库里面 多个数据 供一个id主键)



<table width="100%" cellspacing="0" cellpadding="0">
<%
//~~~~~~~~~~~~~~~~~~省略一些代码
if(db.next("getGoodsInfo"))
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");
out.print("礼物名是"+goodsname);
//特别注意的这里 你别又啊 表格放到 while循环外面了 要放在 while 的} 这个括号里面 啊 不然又重复上面的问题了
//按理说 这个查询语句 要么 结果 是null 要么 只有一个结果 while 是 循环查询结果有多个结果的。除非你的根据一个 id
// 能查出多个礼物出来 哪 我就判断错误了 如果 是 单个 礼物查找 后面就用 if 吧 不然 while 循环最后会吧 jsp页面
// 显示的就是空白了
//
//还有就是 你给的页面不够完整 而且 按钮的jsp 代码也没有 不知道什么情况
// 能啊整个jsp 页面放出来最好
%>

<tr>
<td width="33%" rowspan="3" align="center"> <img src=" <%=basePath+goodsimage %>" /> </td>
<td width="67%" class="pre_detail">礼物: <%=goodsname%> </td>
</tr>

<%
// 注意这个括号的位置 啊
} else {
//下面输出是测试一下 你的查询结果情况
%>
out.println("数据库查询不到结果结果");
<%
}
%>

<tr>
</table>
129find 2009-03-19
  • 打赏
  • 举报
回复
详细内容如下:

这个送礼的按扭和点击按钮弹出的送礼的那个层同在一个页面!现在做的效果是点击按钮就在层中显示该礼物的信息!
<a href="javascript:;" onclick="show2(<%=gsid%>)" id="goods"><img src="images/present/as1.gif" /></a>这是送礼按纽,点击按钮时就弹出一个送礼的层,同时把id传过去,然后根据id在层中获取相对应的礼物信息
代码如下:
<div class="adetail">
<table width="100%" cellspacing="0" cellpadding="0">
<%
String goodsid="";
String goodsname="";
String goodsimage="";
int goodsmoney=0;
if(request.getParameter("giftid")==null)
{
goodsid="1";

}else
{
goodsid=request.getParameter("giftid");
}
db.executeQuery("getGoodsInfo","SELECT goodsname,goodsmoney,goodsimage FROM goods_info WHERE goodsid='"+goodsid+"'");
while(db.next("getGoodsInfo"))
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");
out.print("礼物名是"+goodsname);
}
%>
<tr>
<td width="33%" rowspan="3" align="center"><img src="<%=basePath+goodsimage %>" /></td>
<td width="67%" class="pre_detail">礼物:<%=goodsname%></td>
</tr>
<tr>
</table>
</div>

因为这个层和按钮在同一个页面,但没有点击按钮时id并没有传过去,所以
if(request.getParameter("giftid")==null)
{
goodsid="1";

}
但问题是当我点机按钮时传过去了id值比如传过去为2或3的时候,页面却依然显示id为1的礼物信息!层中的礼物信息并没有因为id值的改变而改变....
急!
wad12302 2009-03-18
  • 打赏
  • 举报
回复
我还补充一点 就是

System.out.print("======="+goodsid+goodsimage);


你看到的结果 就是 我例子说的 i=9 时的

goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");
%>
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
<%

而不是 i=10 时候的结果 i=10 的时候你没有进入循环体 所以
goodsid+goodsimage 2个都是i=9 时候赋的值 你看下是不是这个结果
快乐的2 2009-03-18
  • 打赏
  • 举报
回复
还可以去你使用的服务器目录中查看下生成的Java文件是不是有什么不对的?
Tomcat5.5的在%Tomcat—HOME%\work\Catalina\localhost\_\org\apache\jsp文件夹下。
再或者重新启动下服务器。
希望对你有帮助。
wad12302 2009-03-18
  • 打赏
  • 举报
回复
我觉得 问题出在这里

while(db.next("getGoodsInfo"))
{
goodsname=db.getString("getGoodsInfo","goodsname");
goodsimage=db.getString("getGoodsInfo","goodsimage");
goodsmoney=db.getInt("getGoodsInfo","goodsmoney");
%>
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
<%
}
你看 你这里只是循环 而且 循环体又不在表格里面 你这样输出的只是最后一次结果 。

假设 i=9;
如果while(i<10)就执行里面的{
输出
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
i++
}
那么你就能看到 结果了 ,但是这样看到的结果就是只有第 i=9的结果 前面的结果都没有

当这次循环结束后
i=10 那么while 就不执行里面的 循环了
while (){} 里面的语句就根本没有机会显示了
而使跳过while 了 而是执行到
System.out.print("======="+goodsid+goodsimage);


但是 如果你吧这个while 循环 放到一个table里面 放到

<table></table>
while{
<tr>
XXXXXXXX
</tr>
}
</table>

你试试看
这样还是有机会显示的 ,每循环一次 就一行 而不是覆盖原来的

应该是这样
快乐的2 2009-03-18
  • 打赏
  • 举报
回复
在IF语句后面加个ELSE查看JSP页面输出的是哪个.看看是不是执行数据库查询了?
fys249931556 2009-03-18
  • 打赏
  • 举报
回复
%>
礼物名: <%=goodsname%>
礼物价格: <%=goodsmoney%>
<%

换成out.println("礼物名:"+goodsname) 这样的,方便看。。

你System.out.println();是在循环结束后输出的。。
你把它放到while循环中,看是否能正确取出数据库的值。

81,094

社区成员

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

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