![]() |
| 编程社区 » web开发 » 在servlet中把对象数组放进session,怎么在JSP页中取出来? |
在servlet中把对象数组放进session,怎么在JSP页中取出来? |
CKJ172 |
发表:
|
数组也是对象
应该是你代码的问题
贴出来看看
何必用数组呢,我觉得如果是新闻的话应该把数据库数据封装到对象中,再放到List里,在JSP页中得到List,做显示,这样做可以实现很多功能,排序,分页等等,而且过程比放到数组里简单。
在SERVLET中这样写:
laws = new lawBean[count];
int i=0;
while(rs.next()){
laws[i].setId(rs.getInt("id"));
laws[i].setDanwei(rs.getString("danwei"));
laws[i].setNumber(rs.getString("number"));
laws[i].setTitle(rs.getString("title"));
i++;
}
HttpSession session = request.getSession(false);
session.setAttribute("LAWS",laws);
在JSP中这样写:
<%@ page import="bean.lawBean"%>
<jsp:useBean id="LAWS" scope="session" class="bean.lawBean"/>
<%
lawBean[] laws = (lawBean[])LAWS;
if(laws==null){
out.print("None");}
else{
for(int i=0;i<=laws.length;i++){
out.print(laws[i].getDanwei() + " " + laws[i].getTitle() +
" " + laws[i].getNumber() + "
");
}
}
%>
在下菜鸟,不太会用,是这个类吗?java.lang.reflect.Array
michaelkingdom(战士)
比较同意,你用的是OOP思想编程,用多用OOP看着也清楚,也便于调试和使用。
继承,封装,多态,要从你的代码中体现出来,养成良好的编程习惯。
不要用数组。。。
用Vector或HashMap之类的就很好解决了。。
你写个FormBean用于封装你的数据,
如:public class UserActionForm extends ActionForm {
private String user_name;
private String user_password;
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name= user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_age(String userpasswordage) {
this.user_password= user_password;
}
把数据通过setXXX(XXX xxx)方法放入FormBean中
再定义一个集合类型,如;list,verctor,等等调集合的ADD(FormBean)方法把FormBean放集合,
再把集合通过Session或request等等传入下一个页面,在jsp页面里再反向的把FormBean取出来,进行相应的操作,通过FormBean的getXXX()方法,把你开始放入FormBean的值取出来显视就OK了
我非常的同意qiang029(风) 的说法!这样做也是很理想的做法!可以试试吧!
关注~@_@~~
有错误,改正如下:
laws = new lawBean[count];
int i=0;
while(rs.next()){
laws[i].setId(rs.getInt("id"));
laws[i].setDanwei(rs.getString("danwei"));
laws[i].setNumber(rs.getString("number"));
laws[i].setTitle(rs.getString("title"));
i++;
}
HttpSession session = request.getSession(false);
session.setAttribute("LAWS",laws);
在JSP中这样写:
<%@ page import="bean.lawBean"%>
<jsp:useBean id="LAWS" scope="session" class="bean.lawBean[]"/>
<%-- 这儿LAWS是lawBean[]类型的引用,你写成bean.lawBean当然有错了,你换成我改的这个写法试一下,这个也不一定对,因为在jsp:useBean中我也不知道能不能这样用,你自己试一下吧 --%>
<%
lawBean[] laws = (lawBean[])LAWS;
if(laws==null){
out.print("None");}
else{
for(int i=0;i<=laws.length;i++){
out.print(laws[i].getDanwei() + " " + laws[i].getTitle() +
" " + laws[i].getNumber() + "
");
}
}
%>
我觉得在servlet中还有个地方有错:
对于这段代码
laws = new lawBean[count];
int i=0;
while(rs.next()){
laws[i].setId(rs.getInt("id"));
laws[i].setDanwei(rs.getString("danwei"));
laws[i].setNumber(rs.getString("number"));
laws[i].setTitle(rs.getString("title"));
i++;
}
我觉得在laws[i].setXX()之前应该加一句laws[i] = new lawBean();
因为laws = new lawBean[count]过后laws只是一个数组,每个元素都是null。
另外,在JSP文件中,我不知道<jsp:useBean id="LAWS" scope="session" class="bean.lawBean[]"/>这样写是否正确,反正这样写一定对,你可以试试:
lawBean[] laws = (lawBean[]) session.getArribute("LAWS");
还是qiang029(风) 的好
dreamover(梦醒了) 和 langya333(potato) 说的都不行啊
我想用ArrayList,但还是有问题,急啊,高手帮忙~~~!!!!
ArrayList laws = new ArrayList();
while(rs.next()){
lawBean law = new lawBean();
law.setId(rs.getInt("id"));
law.setDanwei(rs.getString("danwei"));
law.setNumber(rs.getString("number"));
law.setTitle(rs.getString("title"));
laws.add(law);
}
HttpSession session = request.getSession(false);
session.setAttribute("LAWS",laws);
在JSP中这样写:
<%@ page import="bean.lawBean,java.util.ArrayList"%>
<%
ArrayList laws = (ArrayList)session.getAttribute("LAWS");
Iterator ls = laws.iterator();
while(ls.hasNext()){
lawBean l = (lawBean)ls.next();
out.println(l.getTitle());
}
%>
各位,这个问题还是解决不了啊。我想我不是第一个要这样写的人吧?有类似的代码嘛?贴出来看看啊!
急用啊~~~!!!!已经两天了!
呵呵
反正我没这样写过~~
dreamover(梦醒了) 写得很详细,而且很对呀。
你试了吗?不行吗?
哪里出的错?把错误贴出来
楼主把完整代码贴出来吧。感觉不是这样用的,楼主要好好看下书!◎_
dreamover(梦醒了)
的方法很不错的了啊!
确实如此,这是通用方法,简单明了
dreamover(梦醒了)的方法就可以了,你干吗不用呢!
各位兄弟,我想实现的功能是查询数据库把所有符合要求的文章都列出来,用SERVLET去查询,用JSP作显示,应该怎么做?以上各种方法我都试过了,还是有问题,不过现在我用JSP直接操纵数据库了,问题看似解决,但这始终不是好的办法啊~
| 编程社区 2008 浙ICP备09013498号 |
| © TinyBBS.cn |
| 编程好站连接:codeproject sf.net codeplex |