2016-05-23 5 views
0

ich Hilfe brauchen, um die Ergebnismenge Wert von Servlets in Weiterleitung an jsp ohne JSTL Implementierung mitAnzeige der Ergebnismenge Werte von Servlet jsp

Arbeitsablauf:

  1. Der Benutzer einen Wert eingibt in Textfeld und klickt Suchknopf
  2. Beim Klicken auf die Suche wird das Servlet aufgerufen. Das Servlet konzentriert sich auf die Datenbankimplementierung und leitet die Ergebnismengenwerte an dieselbe jsp-Seite weiter, von der die Anfrage stammt.

Ausgabe: Meine Ergebnismenge Größe 3, aber der Wert, der allein in der Spitze meiner Tabelle ist in meiner jsp Seite gedruckt zu werden. Die restlichen 2 Werte fehlen. Ich möchte, dass alle Werte auf meiner JSP-Seite gedruckt werden.

Dies ist mein Code:

Productlist.jsp

<%@page import="java.util.List"%> 
<%@page import="web.Products"%> 
<%@page import="java.util.ArrayList"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Products</title> 
</head> 

<body> 
<form method="post" align="center" action="ProductList"> 

Company Name:<input type="text" size="20" id="company" name="company" /> 
<input type="submit" value="search"/> 
    <% 
    List<Products> pdts = (List<Products>) request.getAttribute("list"); 
    if(pdts!=null){ 
    for(Products prod: pdts){ 
     out.println("<br/>" + prod.getProductname()); 
    } 
    } 
%> 

</form> 
</body> 
</html> 

Products.java

public class Products { 
    private String productname; 
    public String getProductname() { 
     return productname; 
    } 
    public void setProductname(String productname) { 
     this.productname=productname ; 
    } 
} 

ProductList.java (Servlet-Code)

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.sql.*; 
import java.util.ArrayList; 
import java.util.List; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.http.HttpSession; 


public class ProductList extends HttpServlet { 

    static final String dbURL = "jdbc:mysql://localhost:3306/pdt"; 
    static final String dbUser = "root"; 
    static final String dbPass = "root"; 

    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     ResultSet rs = null; 
     Connection connection = null; 
     List<Products> pdt = new ArrayList<Products>(); 

     try{ 
      String company =request.getParameter("company"); 
      Class.forName("com.mysql.jdbc.Driver"); 
      connection = DriverManager.getConnection (dbURL,dbUser,dbPass); 
      String sql="select product_pck from comp_pdt_list where company_name='"+company+"'"; 
      PreparedStatement prep = connection.prepareStatement(sql); 
      rs=prep.executeQuery(); 

      while(rs.next()) { 
       Products prod=new Products(); 
       prod.setProductname(rs.getString("product_pck")); 
       pdt.add(prod); 
       request.setAttribute("list",pdt); 
       RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");  
       rd.forward(request,response); 
       return; 
      } 

      prep.close(); 
     } catch(Exception E) { 
      //Any Exceptions will be caught here 
      System.out.println("The error is"+E.getMessage()); 
     } finally { 
      try { 
       connection.close(); 
      } catch (Exception ex) { 
       System.out.println("The error is" + ex.getMessage()); 
      } 
     } 
    } 
} 

Antwort

1

Sie legen das Attribut fest, das in Ihrer while-Schleife angefordert wird. Die "Liste" enthält also nur ein Produkt. (Methode gibt bei der ersten Iteration zurück)

Fügen Sie in der while-Schleife Produkte zur Liste hinzu und legen Sie Ihre Liste (Anforderungsattribut) nur nach der while-Schleife fest.

Nach sollte es beheben:

while(rs.next()){ 
     Products prod=new Products(); 
      prod.setProductname(rs.getString("product_pck")); 
      pdt.add(prod);   
} 
request.setAttribute("list",pdt); 

RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");  
rd.forward(request,response); 
+0

Es arbeitet jetzt in Ordnung! Vielen Dank – sound

Verwandte Themen