日期:2014-05-17  浏览次数:20654 次

JSP调用JAVABEAN问题
摸JAVA没多久
<jsp:useBean id="PostsManager" class="com.bbs.struts.bean.PostsManager" scope="session" />
<tr bgcolor=lawngreen>
<%
java.sql.ResultSet rs=(java.sql.ResultSet)request.getAttribute("author");
while(rs.next()){
String authorname=rs.getString("AUTHOR");
//String username=rs.getString("username");
//String title=rs.getString("title");
%>
  <td><%=authorname%></td>
</tr>
<% } %>

JSP上的一段代码,目的是拿数据库的一个表内的所有数据到JSP上 然后报错是rs.next()空指针

servlet部分代码
PostsManager postsmanager=new PostsManager();
request.setAttribute("author", postsmanager.findauthor()); 

PostsManager部分代码
package com.bbs.struts.bean;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;


import com.bbs.struts.db.DB_conn;
import com.bbs.struts.form.LoginForm;
import com.bbs.struts.form.Posts_writeForm;

public class PostsManager {

DB_conn db = new DB_conn();

public ResultSet findauthor(){
String sql="select * from posts_table";
ResultSet rs=db.getQuery(sql);
return rs;
}
}

数据库连接的部分代码
public ResultSet getQuery(String sql){
Connection conn=getCon();
Statement stt=null;
ResultSet rs = null;
try{
stt=conn.createStatement();
rs=stt.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
return rs;
}

大家帮我看看哪里错了 看了好久不晓得

------解决方案--------------------
你的servlet到jsp是请求转发还是重定向,重定向的话会重新发送request,所以之前设的attribute会丢失。
------解决方案--------------------
request.setAttribute()改成session.setAttribute(),然后jsp取值时也要改成相对应的即可
------解决方案--------------------
servlet部分代码
PostsManager postsmanager=new PostsManager(); 
request.setAttribute("author", postsmanager.findauthor());
你这里输出下看看有没有结果postsmanager.findauthor();
也就是这样
PostsManager postsmanager=new PostsManager(); 
System.out.println(postsmanager.findauthor());
request.setAttribute("author", postsmanager.findauthor());
先判断第一步你的值有没有获取到 有输出结果的话那就按楼上的方法看下 设置为session