2016-06-07 63 views
0

我想用spring mvc從數據庫向jsp顯示一個表。當我刷新頁面時,表格會一次又一次地重新加載。即使在表刷新後,我也只需要顯示一次表格。任何人都可以請幫我理解爲什麼重複填充相同的數據以及如何阻止它發生?Spring:列表在刷新時重新加載了很多次

JobsDAO:

package com.sample.dao; 

    import java.sql.Connection; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 

    import java.util.ArrayList; 
    import java.util.List; 

    import com.sample.bean.JobsBean; 
    import com.sample.util.ConnectionProvider; 

    public class JobsDAO { 

     static Connection c; 
     static PreparedStatement ps; 
     static ResultSet rs; 
     static List<JobsBean> jobsBeans = new ArrayList<JobsBean>(); 

     public List<JobsBean> jobs() { 

      try { 

       c = ConnectionProvider.getConnectionForJobs(); 
       ps = c.prepareStatement(
         "select name,age,salary,designation from jobs"); 
       rs = ps.executeQuery(); 
       while (rs.next()) { 

           if(rs.getInt(2)<=50){ 
           JobsBean mBean = new JobsBean(); 
           mBean.setName(rs.getString(1)); 
           mBean.setAge(rs.getInt(2)); 
           mBean.setSalary(rs.getInt(3)); 
           mBean.setDesignation(rs.getString(4)); 


           jobsBeans.add(mBean); 
          } else if (rs.getInt(2)>50){ 
               JobsBean mBean = new JobsBean(); 
           mBean.setName(rs.getString(1)); 
           mBean.setAge(rs.getInt(2)); 
           mBean.setSalary(rs.getInt(3)); 
           mBean.setDesignation(rs.getString(4)); 


           jobsBeans.add(mBean); 
          } 


         } 

        } 

       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        rs.close(); 
        ps.close(); 
        c.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      return jobsBeans; 
     } 
    } 

JobsService:

package com.sample.service; 

import java.util.List; 

import com.sample.bean.JobsBean; 
import com.sample.dao.JobsDAO; 

public class JobsService { 
    public List<JobsBean> getJobs() { 
     List<JobsBean> jobs = null; 
     JobsDAO jobsDAO = new JobsDAO(); 
     jobs = jobsDAO.jobs(); 
     return jobs; 
    } 
} 

作業(控制器):

package com.sample.controller; 

import java.util.List; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

import com.sample.bean.JobsBean; 
import com.sample.service.JobsService; 

@Controller 
public class Jobs { 

    @RequestMapping("/jobs") 
    public ModelAndView jobs() { 
     JobsService jobsService = new JobsService(); 
     List<JobsBean> jobsBeans = jobsService.getJobs(); 

     ModelAndView modelAndView = new ModelAndView("jobs"); 
     modelAndView.addObject("jobsBeans", jobsBeans); 

     System.out.println("jobsBeans " + jobsBeans); 

     return modelAndView; 
    } 
} 

jobs.jsp

<html> 
 
<body> 
 

 
\t <c:choose> 
 
\t \t <c:when test="${not empty jobsBeans}"> 
 
\t \t \t <div id="table-wrapper"> 
 
\t \t \t \t <div id="table-scroll"> 
 

 
\t \t \t \t \t <table class="table table-hover myStyle" id="myT2" border="1"> 
 
\t \t \t \t \t \t <col width="500"> 
 
\t \t \t \t \t \t <col width="50"> 
 
\t \t \t \t \t \t <col width="200"> 
 

 
\t \t \t \t \t \t <thead> 
 
\t \t \t \t \t \t \t <tr> 
 
\t \t \t \t \t \t \t \t <th>Name</th> 
 
\t \t \t \t \t \t \t \t <th>Age</th> 
 
\t \t \t \t \t \t \t \t <th>Designation</th> 
 
\t \t \t \t \t \t \t \t <th>Salary</th> 
 
\t \t \t \t \t \t \t </tr> 
 
\t \t \t \t \t \t </thead> 
 
\t \t \t \t \t \t <tbody> 
 
\t \t \t \t \t \t \t <c:forEach var="listValue" items="${jobsBeans}"> 
 
\t \t \t \t \t \t \t \t <tr> 
 
\t \t \t \t \t \t \t \t \t <td>${listValue.name}</td> 
 
\t \t \t \t \t \t \t \t \t <td>${listValue.age}</td> 
 
\t \t \t \t \t \t \t \t \t <td>${listValue.designation}</td> 
 
\t \t \t \t \t \t \t \t \t <td>${listValue.salary}</td> 
 
\t \t \t \t \t \t \t \t </tr> 
 
\t \t \t \t \t \t \t </c:forEach> 
 
\t \t \t \t \t \t </tbody> 
 
\t \t \t \t \t </table> 
 
\t \t \t \t </div> 
 
\t \t \t </div> 
 
\t \t </c:when> 
 
\t \t <c:when test="${empty jobsBeans}"> 
 
\t \t No employee has been registered for today. 
 
\t \t </c:when> 
 
\t </c:choose> 
 
</body> 
 
</html>

回答

0

因爲你有一個靜態變量

static List<JobsBean> jobsBeans 

被添加每次刷新頁面

可考慮將其非靜態和做

public List<JobsBean> jobs() { 
    jobsBeans = new ArrayList<JobsBean>(); 
+0

就是這樣。非常感謝@Scary Wombat! :) – user5776462