第一次写了一个小程序
写了一个bean从数据库里取出数据存放在一个vector中,然后
在页面给bean赋值,输出取出的数据
可是不知道为什么进入页面取的数据全是null
需要刷新一遍才会显示正确的数据
之后刷新就不会变了
请大家帮帮忙,谢谢啦
新手没分,请见谅。

解决方案 »

  1.   

    你第一次进入页面是不是没有给bean赋值,所以查不出数据 输出全是null
    而刷新后可能哪里给bean赋值了,但怎么刷新都是同样的参数,肯定得到同样的结果啦
    先把源码贴出来看看吧
      

  2.   

    这个是bean的代码
    import java.util.*;
    import java.sql.*;
    public class Writein
    { public String provider;
      public Vector owner=new Vector();
      public Vector target=new Vector();
      public Vector reason=new Vector();
      public Vector scale=new Vector();
      public int row;
      int code; //用来返回可否录入消息的代码。
      String db,
              dbuser,
              dbpass;
      Connection con;
      Statement sql;
      public ResultSet rs;
      public Writein()
      {//加载驱动:
          try
          {Class.forName("com.mysql.jdbc.Driver");
          }
          catch (ClassNotFoundException e)
          {
          }
      }
      public String getProvider()
      {//录入单位的名称
          return provider;
      }
      
      public void setProvider(String provider)
      {
          this.provider = provider;
      }
      
      public Vector getOwner()
      {//被评分的单位
          return owner;
      }
      
      public void setOwner(Vector owner)
      {
          this.owner = owner;
      }
      
      public Vector getTarget()
      {//指标名
          return target;
      }
      
      public void setTarget(Vector target)
      {
          this.target = target;
      }
      public int getRow()
      {//指标的数目,表现为表格的行数
          return row;
      }
      
      public void setRow(int row)
      {
           row=row;
      }
      public Vector getReason()
      {//评分依据
          return reason;
      }
      
      public void setReason(Vector reason)
      {
          this.reason = reason;
      }
      
      public Vector getScale()
      {//权重
          return scale;
      }
      
      public void setScale(Vector scale)
      {
          this.scale = scale;
      }
      
      public int getcode()//查询录入状态代码
      { try
        {   String db="jdbc:mysql://localhost:3306/aecc",
                    dbuser="root",
                    dbpass="952141",
                    condition;
          owner.clear();
                 target.clear();
                 reason.clear();
                 scale.clear();
                            con=DriverManager.getConnection(db,dbuser,dbpass);
            sql=con.createStatement();
            condition="SELECT taga FROM r where provider="+"'"+provider+"'";
            rs=sql.executeQuery(condition);
            rs.first();
            if (rs.getInt(1)==0)
            {condition="select tag from r where provider="+"'"+provider+"'";
             rs=sql.executeQuery(condition);
             rs.first();
             if (rs.getInt(1)==0)
             {
                 condition="select owner,target,reason,scale from r where provider="+"'"+provider+"'";
                 rs=sql.executeQuery(condition);
                 /** float total[]=new float[20];**/
                
                 row=0;
                            while(rs.next())
                 {
                     row++;
                     owner.addElement(rs.getString(1));
                     target.addElement(rs.getString(2));
                     reason.addElement(rs.getString(3));
                     scale.addElement(rs.getString(4));
                 }
                 code=0; /** "本月的考核数据正在统计";  **/   }
             else
             { code=1;/**"本月数据录入已完成。现在只能查看"; **/
             }
            }
            else
            { code=2;/**"本月尚未开始录入考核数据或所有数据已汇总,暂时无法进行录入"; **/
            }
        sql.close();
            con.close(); 
            return code;
        }
        catch(SQLException e)
        {
            code=3;/**"数据库读取出现错误!";**/
            return code;
        }
      }
      

  3.   

    这个是jsp页面的程序
    <%@page contentType="text/html;charset=gb2312"%>
    <%@page pageEncoding="gb2312"%>
    <%@ page import="java.sql.*" %>
    <%@page import="java.util.*"%>
    <%@ page import="aecc.Login" %>
    <% request.setCharacterEncoding("GB2312");%>
    <jsp:include page="back.html"/>
    <jsp:useBean id="login" class="aecc.Login" scope="session" >
    </jsp:useBean>
    <% //如果客户直接进入该页面将被转向登录页面。
        if(session.isNew())
        {
            response.sendRedirect("index.jsp");
        }
        //如果没有成功登录将被转向登录页面
        String success=login.getSuccess();
        if(success==null)
        {
            success="";
        }
        if(!(success.equals("ok")))
        {
            response.sendRedirect("index.jsp");
        }
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
            <title></title>
        </head>
        <body>
            <%  String logname=login.getLogname();
            int code;
                String provider=login.getDepartment();
               /** String provider=department;**/
                Vector owner;
                Vector target;
                 Vector reason;
                 Vector scale;
               Vector score;
                int row;
               /** ResultSet rs; **/
               
            %>
            <h3> <p><font color="#FFFF00">你好,<%out.print(logname);%>,
            你现在是以<%out.print(provider);%>考核员身份登录的,以下是您需要录入的数据。另外,您还可进行以下工作:</p>
            <p align="center"><a href="<%=response.encodeURL("quit.jsp")%>">注销</a>&nbsp;&nbsp;&nbsp;
            <a href="<%=response.encodeURL("query.jsp")%>">查询</a><p>&nbsp;&nbsp;&nbsp;
             <h3>
    <jsp:useBean id="write" scope="session" class="aecc.Writein" />    
    <jsp:setProperty name="write" property="provider" value="<%=provider%>"/>
        <jsp:getProperty name="write" property="owner" />
    <%  row=write.getRow();
       owner=write.getOwner();
       target=write.getTarget();
       reason=write.getReason();
       scale=write.getScale();
    code=write.getcode();
    out.print(provider);switch (code)
    {case 1:
         out.print("已经录入。");
         break;
        case 2:
            out.print("未开始。");
            break;
        case 3:
            out.print("数据库。");
            break;
       default:
    out.print("可以录入。");
    out.print(row);
    String a=owner.toString();
    out.print (a);
    %>
     <%String str=response.encodeURL("process.jsp");%>
     <form method="post" action="<%=str%>">
    <div align="center">
    <table border="1" width="750" id="table1" style="border-collapse: collapse" bordercolor="#000000">
    <tr>
    <td width="150">单位名称</td>
    <td width="150">指标名</td>
    <td width="250">评分标准</td>
    <td width="150">权重</td>
                    <td width="180">分数</td>
    </tr>
    </table>
    </div>
    <%out.print(row);
    for (int i=0;i<row;i++)   {%>                <div align="center">
                <table border="1" width="750" style="border-collapse: collapse" bordercolor="#000000">
                    <tr>
                        <td width="150"><%=owner.get(i)%> </td>
                        <td width="150"><%=target.get(i)%> </td> 
                        <td width="250"><%=reason.get(i)%> </td> 
                        <td width="150"><%=scale.get(i)%> </td> 
                        <td width="50"><input type="int" name="total[row]" ></td>  
                                 </tr>
                                    </table>            </div><%
    out.print(row);
    }       } %>
            <p align="right">    <input type="reset" value="重写" name="reset" />            
               <input type="submit" value="提交" name="writein" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
       </form>    
       <jsp:include page="bot.htm"/>
        </body>
    </html>
      

  4.   

    我没细看呢,收藏一下.
    我估计跟bean的作用域有关系.
      

  5.   

    你代码是没问题的,关键你要搞清楚的是发送请求的问题
    比如,当你第一次运行的时候,并没有获得数据库里的内容,所以页面显示的是NULL
    当你刷新的时候其实就相当于第二次的请求,这个时候各个参数里有东西了,当然也就显示出来了。我的想法是做一个欢迎页面,使程序在这个页面运行起来。做个登陆按钮,点它时转到另一个面页,这个面页用来显示数据。这样不就好了……