首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

集合有关问题加分100

2012-01-19 
集合问题加分100问题在代码中已经写出public Vector select(String title){// title是体育新闻,根据体育新

集合问题加分100
问题在代码中已经写出 
public Vector select(String title) 
{// title是体育新闻,根据体育新闻查询出TitleName(标题名)和FilePath(要发布的文件的路径名) 
// 把查询出来的加入secondBean 中,再把secondBean加入Vector集合并返回 到.jsp文件中 
  
Vector v = new Vector(); 
try 

System.out.println("data title=" + title); 

String sql = "select * from SecondTitle where ParentTitle=?"; 

PreparedStatement pstmt = data.getConnectin().prepareStatement(sql); 
pstmt.setString(1, title); 
ResultSet rs = pstmt.executeQuery(); 

while (rs.next()) 

secondBean.setTitleName(rs.getString("TitleName")); 
secondBean.setFilePath(rs.getString("FilePath")); 

v.addElement(secondBean); 
/* 
 * for语句输出的结果 * secondBean==E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 
 * 火箭主场狂胜欧洲冠军.htm" 第0次循环 
 *  
 * secondBean==E:\Eclipse1\news\new\雅虎体育-画报.mht 第0次循环 
 * secondBean==E:\Eclipse1\news\new\雅虎体育-画报.mht 第1次循环 
 *  
 * secondBean==E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
 * 第0次循环 secondBean==E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 
 * 火箭主场狂胜欧洲冠军.htm" 第1次循环 
 * secondBean==E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
 * 第2次循环 
 *  
 * secondBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
 * secondBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
 * secondBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
 *  
 *  
 *  
 *  
 *  
 */ 
int j = 0; 
for (int i = 0; i < v.size(); i++) 

System.out.println("secondBean==" 
+ secondBean.getFilePath()); 
System.out.println("第" + i + "次循环"); 

System.out.println(); 



} catch (SQLException e) 

// TODO 自动生成 catch 块 
e.printStackTrace(); 

return v;//返回给调用它的对象 


  


这是调用它的页面 <% 
dataOperate data = new dataOperate(); 
String title = request.getParameter("title"); 
String tit = new String(title.getBytes("iso-8859-1")); 
System.out.println("title=" + tit); 

Vector v = data.select(tit); 
//以下for语句应该输出如下: 
//E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
//E:\Eclipse1\news\new\雅虎体育-画报.mht  
//E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
// 但它确输出了如下 
// secondBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
/ condBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
/ condBean=E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm" 
for (int i = 0; i < v.size(); i++) 

SecondLeveBean secondBean = (SecondLeveBean) v.get(i); 
System.out.println("secondBean=" + secondBean.getFilePath()); 



for (int i = 0; i < v.size(); i++) 

SecondLeveBean secondBean = (SecondLeveBean) v.elementAt(i); 
% > 
<a href=" <%=secondBean.getFilePath()% >" > <%=secondBean.getTitleName()% > 
</a > 
<br > 
<% 

% >

[解决办法]
while (rs.next())
{
//you sould new secondBean again
secondBean = new SecondBean(); //这里是关键


secondBean.setTitleName(rs.getString("TitleName"));
secondBean.setFilePath(rs.getString("FilePath"));

v.addElement(secondBean); //这里放的是secondBean对象的引用,如果上面不重新new一次,那么每次加进来的都是同一个引用,而上面每次都对引用设置新值,最终你得到的就都是最后一次被设置过的新值E:\Eclipse1/news/new/麦蒂缺阵姚明独揽21分 火箭主场狂胜欧洲冠军.htm", 所以,每次往vector追加元素时,必须重新new一个对象以获得不同的引用。



[解决办法]
while (rs.next())
{
secondBean.setTitleName(rs.getString("TitleName"));
secondBean.setFilePath(rs.getString("FilePath"));


里面加一句,如下:
while (rs.next())
{
secondBean = new SecondBean();
secondBean.setTitleName(rs.getString("TitleName"));
secondBean.setFilePath(rs.getString("FilePath"));

热点排行