我正在構建一個Web門戶,我正在使用Hibernate訪問MySQL並將提取的數據推送到JSP以表格形式打印。我正在使用Tomcat進行servlet部署。我的servlet必須進行3個HQL查詢,然後將檢索到的數據推送到JSP。在我部署了servlet之後,它在第一次使用HTML表單進行查詢時工作正常。此外,在Eclipse控制檯中,我可以看到正在執行的所有3個HQL查詢。但是當我嘗試再次進行查詢時,即使是與我上次HTML表單相同的查詢,我也沒有在JSP頁面上獲取任何數據(我試圖填充的表只包含零)。檢查Eclipse控制檯,我發現只執行了第一個HQL查詢,並且沒有其他任何內容出現,甚至沒有出現錯誤消息。如果我重新啓動Tomcat,或者只是重新部署該servlet,它就可以工作,但只能再一次。請幫助Servlet在部署後僅從數據庫返回一次數據
流量是喜歡 - HTML表單 - >的Servlet - > JSP
String major,date,minor,ip;
double[][][] transactionTime = new double[2][50][10];
int[] testCaseId = new int[10];
String[] activityName = new String[10];
major=req.getParameter("major");
date=req.getParameter("date");
minor=req.getParameter("minor");
ip=req.getParameter("ip");
String testCaseName=req.getParameter("testCaseName");
Session session = null;
try{
SessionFactory sessionFactory = new
Configuration().configure()
.buildSessionFactory();
session =sessionFactory.openSession();
//Create Select Clause HQL
String SQL_QUERY2 ="Select testCases.activityName,testCases.testCaseID from TestCases testCases where testCases.testcaseName like \'" + testCaseName + "\'";
Query query2 = session.createQuery(SQL_QUERY2);
for(Iterator it2=query2.iterate();it2.hasNext();ctr2++)
{
Object[] act = (Object[]) it2.next();
activityName[ctr2]=(String) act[0];
testCaseId[ctr2] = (Integer) act[1];
}
for(int j=0;j<ctr2;j++){
ctr=0;
String SQL_QUERY3 ="Select tran.transactionTime from Transactions tran where tran.samples.builds.buildMajorVersion like " + major + " and tran.samples.builds.buildMinorVersion like " + minor + " and tran.samples.runDate like \'" + date + "\' and tran.testCases.testCaseID like " + testCaseId[j] + " and tran.samples.testbeds.server.ipv4Address like \'" + ip + "\'";
Query query3 = session.createQuery(SQL_QUERY3);
for(Iterator it3=query3.iterate();it3.hasNext();ctr++)
{
Object time = (Object) it3.next();
transactionTime[0][j][ctr]=(Double) time;
int precision = 100;
transactionTime[0][j][ctr] = Math.floor(transactionTime[0][j][ctr]*precision+0.5)/precision;
}
}
for(int j=0;j<ctr2;j++){
ctr3=0;
String SQL_QUERY5 ="Select tran.transactionTime from Transactions tran where tran.samples.builds.buildMajorVersion like " + major + " and tran.samples.builds.buildMinorVersion like " + minor + " and tran.samples.baseline=1";
Query query5 = session.createQuery(SQL_QUERY5);
for(Iterator it5=query5.iterate();it5.hasNext();ctr3++)
{
Object time = (Object) it5.next();
transactionTime[1][j][ctr3]=(Double) time;
int precision = 100;
transactionTime[1][j][ctr3] = Math.floor(transactionTime[1][j][ctr3]*precision+0.5)/precision;
}
}
session.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
finally{
}
req.setAttribute("major",major);
req.setAttribute("minor",minor);
req.setAttribute("date",date);
req.setAttribute("ip",ip);
req.setAttribute("testCaseName",testCaseName);
req.setAttribute("transactionTime", transactionTime);
req.setAttribute("activityName", activityName);
req.setAttribute("sampleNumBase", ctr3);
req.setAttribute("sampleNumRun", ctr);
req.getRequestDispatcher("/WEB-INF/src/BaselineRawData.jsp").forward(req, res);
}
}在Eclipse
控制檯輸出上的第一和成功運行
Hibernate:
select
testcases0_.activityName as col_0_0_,
testcases0_.testCaseID as col_1_0_
from
TestCases testcases0_
where
testcases0_.testcaseName like 'Deploy 200 tunings on 10 devices with 0 tunings' Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 1
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 2
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 3
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 4
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 5
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_ cross
join
TestBeds testbeds7_ cross
join
Machines server8_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and samples1_.testBedId=testbeds7_.testBedId
and testbeds7_.serverId=server8_.machineId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and (
samples1_.runDate like '2012-02-25'
)
and (
transactio0_.testCaseId like 6
)
and (
server8_.ipv4Address like '10.104.52.200'
) Hibernate:
select
transactio0_.transactionTime as col_0_0_
from
Transactions transactio0_ cross
join
Samples samples1_ cross
join
Builds builds2_
where
transactio0_.sampleId=samples1_.sampleId
and samples1_.buildId=builds2_.buildId
and (
builds2_.buildMajorVersion like 4
)
and (
builds2_.buildMinorVersion like 4434
)
and samples1_.baseline=1 10
控制檯輸出在Eclipse上後續和不成功的運行
Hibernate:
select
testcases0_.activityName as col_0_0_,
testcases0_.testCaseID as col_1_0_
from
TestCases testcases0_
where
testcases0_.testcaseName like 'Deploy 200 tunings on 10 devices with 0 tunings'
10
粘貼的servlet的代碼片斷。 – 2012-04-17 05:19:44
Servlet代碼發佈 – 2012-04-17 05:37:02
如果刷新HTMl頁面然後再次提交表單,會發生什麼情況。 – 2012-04-17 05:44:14