日期:2014-05-18  浏览次数:20804 次

做简单struts项目遇到的问题
一个小论坛,当用户进入论坛看见用户发言的内容。

我是写把用户发言的内容读取出来不会。
后台是这么读取的,放在一个Vector   中。不知道这么写对不对。听说是把集合放在session或者request中,怎么放,在哪个文件中放入....?
public   Vector   BbsFile()
{
Vector   vc=new   Vector();
String   bbs= "select   *   from   bbs ";
try   {
ResultSet   rs=con.createStatement().executeQuery(bbs);
while(rs.next())
{
Vector <String>   v=new   Vector <String> ();
v.add(rs.getString(2).toString());
v.add(rs.getString(3).toString());
v.add(rs.getString(4).toString());
v.add(rs.getString(5).toString());
vc.addAll(v);
}
}   catch   (SQLException   e)   {
e.printStackTrace();
}
return   vc;
}

返一个Vector   。不知道怎么在jsp页面中显示。jsp界面不能出现 <%%> 这样的符号。
不知道在Action中写什么。然后在jsp怎么读取....

希望详细说明,因为是刚学什么都不是很懂...

------解决方案--------------------
1、首先不明白楼主用Vector的原由,在java 1.4.13版本以上已经出现了ArrayList,本人对Vector的研究不是很多;
2、用request或session带回页面方法不一样,相信他们作用域楼主应该知道吧,现在我就来说说带回页面方法:在while(){}后加上:
request.setAttribute( "vector ",vc),然后用RequestDispatcher方法传回页面;
session 也是一样。
------解决方案--------------------
java:request.setAttribute( "myList ",vc);or session.setAttribute(...);
jsp界面不能出现 <%%> 这样的符号:用logic:iterate 标签
------解决方案--------------------
在action中把从数据库查出来的集合放到request中,如
List user = UserDao.getAllUser();
request.setAttribute( "allUser ", user);

在页面中用标签循环出来,如
<logic:iterate name= "allUser " id= "user ">
<tr>
<td> <bean:write name= "user " property= "name "/> </td>
....................省略
</tr>
</logic:iterate>

------解决方案--------------------
昨晚赶到寝室要熄灯,没把问题回答完全,接着昨天的:
先写一个dispatcher的转向类:
public void RequestDispatcher(HttpServletRequest request, HttpServletResponse response,String str) throws ServletException, IOException{
RequestDispatcher rd=request.getRequestDispatcher(str);
rd.forward(request, response);
}
在while(){}后加上:
1、request:
request.setAttribute( "vector ",vc);
RequestDispatcher(request, response, "你所要转向的JSP页面,注意路径! ");
2、session:
HttpSession session=request.getSession();
session.setAttribute( "vector ",vc);
RequestDispatcher(request, response, "你所要转向的JSP页面,注意路径! ");
还有把你的函数改成有参无返回值的,即:
public void Vector BbsFile(HttpServletRequest request, HttpServletResponse response){}//因为有了RequestDispatcher方法,就不用return了!
在页面接收值应该用Struts标签,就像楼上朋友说的那样,不过你还可用EL或者是JSTL来接收值,EL就像这样${vector.属性}



------解决方案--------------------
不用构造Vevtor对象,只需构造一个List对象,然后将List对象放在一个session中,再在以
<logic:iterate> 取出就可以了,多看一些JSTL吧