2016-07-09 20 views
0

JSP-CodeSpeichern mehrerer Werte/resultset in Java Bean

<form method="get" action="/asq/searchBox"> 

<select id="searchType" name="searchType"> 
<option id="username" value="username" >Username</option> 
<option id="realName" value="realName">Real name</option> 
<option id="emailAddress" value="emailAddress">Email Address</option> 
<option id="interest" value="interest">Interest</option> 
</select> 
<input type="text" name="searchBox" id="searchBox"/> 
<br> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

Java Bean

public class Friends { 
    private String userId; 
    private String firstName; 
    private String lastName; 
    private String displayname; 

    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getDisplayname() { 
     return displayname; 
    } 
    public void setDisplayname(String displayname) { 
     this.displayname = displayname; 
    } 
    public String getUserId() { 
     return userId; 
    } 
    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

} 

Servlet-Code

String searchType = request.getParameter("searchType"); 
     String searchText = request.getParameter("searchBox"); 

     Friends searchBean = new Friends(); 

     if(searchType.equals("username") == true){ 
      try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.displayname LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("realName")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.firstName LIKE '%" + searchText+ "%' OR azq.registration.lastName LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("emailAddress")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.emailAddress LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(searchType.equals("interest")== true){ 
     try { 

      //SQL Statement 
      String sql = "SELECT firstName, lastName, userId, displayname FROM azq.registration WHERE azq.registration.interest LIKE '%" + searchText+ "%'"; 
      // create the java statement 
      Statement st = conn.createStatement(); 

      // execute the query, and get a java resultset 
      ResultSet rs = st.executeQuery(sql); 

      // iterate through the java resultset 
      while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 
      } 

     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    request.getSession(true).setAttribute("searchBean", searchBean); 
    request.getRequestDispatcher("resultPage.jsp").forward(request, response); 

} 

Abrufen Code

<jsp:useBean id="searchBean" class="sg.edu.nyp.sit.bean.Friends" scope="session"/> 
<html> 
<head> 
<title>resultPage</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
    <jsp:getProperty name="searchBean" property="firstName" /> 
    <jsp:getProperty name="searchBean" property="lastName" /> 
    <br> 
    <jsp:getProperty name="searchBean" property="displayname" /> 
</body> 
</html> 

Ich erlaube meinem Benutzer einzustellen, was sie suchen wollen (z.B. Benutzername, E-Mail usw.) und geben Sie ihre Eingabe ein. Nach dem Drücken der Submit-Taste werden sie auf eine andere Seite umgeleitet und die Seite zeigt an, was sie gesucht hat. Das Problem, mit dem ich derzeit konfrontiert bin, ist jedoch, wie ich ein Resultset/mehrere Werte in einer Java-Bean speichern und auf einer anderen JSP-Seite anzeigen kann.

Gibt es eine andere Lösung, die eine JSTL-Funktion verwendet?

+1

Mögliches Duplikat [Wie eine Sammlung in einer jsp zeigen, Seite] (http://stackoverflow.com/questions/5241125/how-to-show-a-collection-in-a-jsp-page) –

Antwort

2

Sie können dies tun mit ArrayList wo Sie mehrere Objekte speichern (Friends)

Es wird empfohlen, dass Sie Servlet als Schnittstelle zwischen View (JSP) und Model (Bean) verwenden. so im Modell setzen Sie die Geschäftslogik der Anwendung

In Sie Freunden Klasse diese Methode hinzufügen:

public List<Friends> loadList(String searchText) { 
    List<Friends> Mylist = new ArrayList<Friends>(); 



    // ... Your code to fill the list 

    return Mylist; 

    } 

Ihre Arraylist in jedem zu füllen, während Schleife ein Freinds Objekt hinzufügen

while (rs.next()) 
      { 
       searchBean.setFirstName(rs.getString("firstName")); 
       searchBean.setLastName(rs.getString("lastName")); 
       searchBean.setUserId(rs.getString("userId")); 
       searchBean.setDisplayname(rs.getString("displayname")); 

      Mylist.add(searchBean); 

      } 
zu Arraylist

In Ihrem Servlet Sie diese Methode aufrufen, um Daten zu erhalten und es zu JSP übergeben:

// ... 
    Friends searchBean = new Friends(); 

    List<Friends> list = searchBean.loadList(searchText); 

     request.setAttribute("recolist", list); 

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

Und in Ihrem JSP hinzu:

<c:forEach var="VAR" items="${recolist}"> 

${VAR./*WHAT YOU WANT*/}               
</c:forEach> 

Beachten Sie, dass VAR ein Freund Objekt ist, dass Sie jedes Attribut zum Beispiel anrufen: Vorname, Nachname ...

Verwandte Themen