关于JSP中javaBean的问题。
我正在学习JSP,我用JSP开发了一个查询系统,但是数据库中明明有要查找的东西,但就是查不到,经过我的排查,发现问题出在javaBean上。填写的关键字提交给servle...
我正在学习JSP,我用JSP开发了一个查询系统,但是数据库中明明有要查找的东西,但就是查不到,经过我的排查,发现问题出在javaBean上。填写的关键字提交给servlet控制器,servlet调用查询类查询,返回结果存放在一个Vector对象中,然后将这个Vector对象放在一个javaBean中以便将数据传到结果页面显示出来,在结果页面,我使用<jsp:useBean>创建了那个javaBean的实例,Scope为session,问题就出在这里,经过我检测,发现,Vector对象在servlet中时还有数据,但到JSP页面里时就变成了null,也就是说,javaBean中的数据丢失了,难怪总是查不到信息。这是怎么回事。我的javaBean的scope是session,按理数据在整个会话期间都有效。
展开
1个回答
展开全部
这是servlet和jsp的通信问题.
在jsp中使用useBean动作实际上是创建了一个新的javabean,里面当然是空的了.
在servlet中应该确实得到了Vector,但是不知道你的页面转向是怎么做的,如果只是想在jsp页面中显示,建议你把得到的查询结果放在request里面,然后利用request转向到jsp页面,jsp页面中使用脚本或者EL表达式直接取值.
servlet中:
...
Vector data = 查询方法();
//将data放在请求里
request.setAttribute("data",data);
//转向到jsp,如果结果在请求中一定要这样转向
request.getRequestDispatcher("jsp页面地址").forward(request,response);
jsp页面中:
<% Vector data = (Vector)request.getAttribute("data");%>
或者直接用EL表达式 ${requestScope.data},这个需要用<c:foreach>来遍历
在jsp中使用useBean动作实际上是创建了一个新的javabean,里面当然是空的了.
在servlet中应该确实得到了Vector,但是不知道你的页面转向是怎么做的,如果只是想在jsp页面中显示,建议你把得到的查询结果放在request里面,然后利用request转向到jsp页面,jsp页面中使用脚本或者EL表达式直接取值.
servlet中:
...
Vector data = 查询方法();
//将data放在请求里
request.setAttribute("data",data);
//转向到jsp,如果结果在请求中一定要这样转向
request.getRequestDispatcher("jsp页面地址").forward(request,response);
jsp页面中:
<% Vector data = (Vector)request.getAttribute("data");%>
或者直接用EL表达式 ${requestScope.data},这个需要用<c:foreach>来遍历
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询