2013-02-19 82 views
3

以下是Servlet和JSP文件的代碼打印從servlet的輸出查詢的多個行的jsp ///

Connect.java

@WebServlet("/calendar") 
public class Connect extends HttpServlet { 

    @Override 
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String fromDate = request.getParameter("fromDate"); 
    String toDate = request.getParameter("toDate"); 

    String query = "SELECT action_time,user_action,user_ip,user_id FROM di.login_detail where (action_time, action_time) OVERLAPS (DATE '" 
       + fromDate+ "',DATE '"+ toDate+ "'+ integer '1')" + 
         " order by action_time desc"; 
    Connection conn = null; 
    PreparedStatement statement = null; 
    ResultSet resultSet = null; 
    System.out.println("done4"); 
    try { 

     conn = ConnectionUtil.getConnection(); 
     statement = conn.prepareStatement(query);   
     resultSet = statement.executeQuery(); 

      if (resultSet.next()) {       
      while(resultSet.next()){ 
       String action_time=resultSet.getString("action_time"); 
       String user_action=resultSet.getString("user_action"); 
       String user_ip=resultSet.getString("user_ip"); 
       String user_id=resultSet.getString("user_id"); 


       request.setAttribute("action_time",action_time); 
       request.setAttribute("user_action",user_action); 
       request.setAttribute("user_ip",user_ip); 
       request.setAttribute("user_id",user_id); 
     RequestDispatcher view = request.getRequestDispatcher("calendar.jsp"); 
         view.forward(request,response); 
         } 


     } else { 
      System.out.println("not found"); 
     } 
    } catch (SQLException e) { 
     throw new ServletException("DB interaction failed", e); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {} 
     if (statement != null) try { statement.close(); } catch (SQLException ignore) {} 
     if (conn != null) try { conn.close(); } catch (SQLException ignore) {} 
    } 
} 
} 

Calendar.jsp

<%@ page import="java.sql.*" %> 
<% 
String path = request.getContextPath(); 
%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

    <script src="<%=path%>/js/calendar.js"></script> 
    <link href="<%=path %>/css/calendar.css" rel="stylesheet"> 
</head> 
<body> 
<form action="calendar"> 
      <div class="container"> 
      From:<input name="fromDate" type="text" class="calendarSelectDate" /> 
      To: <input name="toDate" type="text" class="calendarSelectDate" /> 
      <input type="submit" name="b1" value="Go"> 
     </div>   
<div id="calendarDiv"></div> 

<%= request.getAttribute("action_time")%> 
<%= request.getAttribute("user_action")%> 
<%= request.getAttribute("user_ip")%> 
<%= request.getAttribute("user_id")%> 

</form> 

</body> 
</html> 

我我試圖從我的servlet向calender.jsp顯示結果,在上面傳遞的查詢產生多行作爲結果,但是在jsp頁面中它只產生第一行輸出並停止執行。還有什麼可以在這裏完成在jsp上獲取完整的結果。 謝謝////

回答

3

用於例如創建一個類:

public class User { 
    private String actionTime; 
    private String userAction; 
    private String userIp; 
    private String userId; 

    //Getters and setters 
} 

那麼你應該改變你的代碼是這樣的:

ArrayList<User> users = new ArrayList<User>(); 
while (resultSet.next()) { 
    User user = new User(); 
    user.setActionTime(resultSet.getString("action_time")); 
    user.setUserAction(resultSet.getString("user_action")); 
    user.setUserId(resultSet.getString("user_ip")); 
    user.setUserIp(resultSet.getString("user_id")); 
    users.add(user); 
} 
request.setAttribute("users", users); 
RequestDispatcher view = request.getRequestDispatcher("calendar.jsp"); 
view.forward(request, response); 

在循環總是創建新的用戶,添加它進入用戶列表並且循環完成時將整個列表設置爲請求屬性。

<c:forEach var="user" items="${users}"> 
    <c:out value="${user.actionTime}"/> 
    <c:out value="${user.userAction}"/> 
    <c:out value="${user.userIp}"/> 
    <c:out value="${user.userId}"/> 
</c:forEach> 

另見:

+0

明白了謝謝///// – NewBee 2013-02-20 08:39:59

0

如前所述,與要覆蓋每個迭代

在JSP使用 JSTL處理列表

然後請求屬性。您還呼叫

RequestDispatcher view = request.getRequestDispatcher("calendar.jsp"); 
         view.forward(request,response); 

它在第一次迭代中轉發響應。創建一個列表或散列,並設置該屬性,然後從您的存取JSP