第一次写了一个小程序
写了一个bean从数据库里取出数据存放在一个vector中,然后
在页面给bean赋值,输出取出的数据
可是不知道为什么进入页面取的数据全是null
需要刷新一遍才会显示正确的数据
之后刷新就不会变了
请大家帮帮忙,谢谢啦
新手没分,请见谅。
写了一个bean从数据库里取出数据存放在一个vector中,然后
在页面给bean赋值,输出取出的数据
可是不知道为什么进入页面取的数据全是null
需要刷新一遍才会显示正确的数据
之后刷新就不会变了
请大家帮帮忙,谢谢啦
新手没分,请见谅。
而刷新后可能哪里给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;
}
}
<%@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>
<a href="<%=response.encodeURL("query.jsp")%>">查询</a><p>
<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" />
</p>
</form>
<jsp:include page="bot.htm"/>
</body>
</html>
我估计跟bean的作用域有关系.
比如,当你第一次运行的时候,并没有获得数据库里的内容,所以页面显示的是NULL
当你刷新的时候其实就相当于第二次的请求,这个时候各个参数里有东西了,当然也就显示出来了。我的想法是做一个欢迎页面,使程序在这个页面运行起来。做个登陆按钮,点它时转到另一个面页,这个面页用来显示数据。这样不就好了……