2016-04-27 8 views
0

Ich bin Anfänger in JSP und Servlets und wenn diese Frage wirklich einfach ist, Bitte tragen Sie mich und bitte nicht die Frage zu schließen, wie ich über das Problem gegooglet habe und konnte nicht genau finden, was die Lösung ist.nicht in der Lage, Daten aus der Datenbank abrufen und in JSP mit Servlet

Mir Übergabe von Daten von jsp Servlet und in Datenbank einfügen und von dort die gleichen retriving und vorbei an JSP zur Anzeige

konnte ich Daten von JSP passieren und steckt in Datenbank erfolgreich, aber nicht in der Lage zu retrive und Anzeige in Jsp erneut. Unten ist Code.

jsp:

<!DOCTYPE HTML><%@page language="java" 
    contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<html> 
<head> 
<title>loginform</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 
<form name=loginform action=TestServlet method=post> 


Input ID <input type=text name="id" size=10></input> <br><br> 

<Input type="button" value=Retrive> <br> 
<label for = "getdata" ></label> <br> 

value is <%= request.getSession().getAttribute("data") %> 
<input type=submit value=submit></input> 
</form> 

</body> 
</html> 

Servlets:

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 javax.servlet.http.HttpSession; 

import java.sql.*; 

/** 
* Servlet implementation class TestServlet 
*/ 
public class TestServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public TestServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 

     } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 

     response.setContentType("text/html"); 

      // Actual logic goes here. 
     try { 

      String getvalue=request.getParameter("id"); 
      PrintWriter out = response.getWriter(); 
      out.println(getvalue); 
      out.println("attempting to read from table"); 

      Class.forName("oracle.jdbc.driver.OracleDriver");    
      // Open a connection 
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@IP:Port:ServiceName, UN, Pass); 
          // Execute SQL query 
      Statement stmt = conn.createStatement(); 
      String sqlinsert, sqlselect; 
      sqlinsert = "Insert into abc(abc) values("+getvalue+")"; 
      sqlselect="Select abc from abc"; 

      ResultSet rs = stmt.executeQuery(sqlinsert); 
      ResultSet rs1 = stmt.executeQuery(sqlselect); 
      int id=0 ; 
      // Extract data from result set 
      while(rs1.next()){ 
       //Retrieve by column name 
       id = rs1.getInt("ABC"); 

       //Display values 

       out.println("ID: " + id + "<br>"); 

      } 
      HttpSession session = request.getSession(false); 
      request.setAttribute("data", "0"); 
       request.getRequestDispatcher("/loginform.jsp").forward(request, response); 
      // out.println("</body></html>"); 

      // Clean-up environment 
      rs.close(); 
      stmt.close(); 
      conn.close(); 
      }catch(SQLException se){ 
      //Handle errors for JDBC 
      se.printStackTrace(); 
      }catch(Exception e){ 
      //Handle errors for Class.forName 
      e.printStackTrace(); 
      } 

    } 

} 

wirklich nicht in der Lage zu verstehen, wo das Problem ist ...

jedes Mal, wenn ich den Code ausführen ich in der Lage bin zu sehen, nur null in JSP

Antwort

2

Ändern Sie einfach request.getSession().getAttribute("data") zu request.getAttribute("data") und es wird gut funktionieren.

+0

Danke, es hat funktioniert .. können Sie bitte erklären, was das genaue Problem mit der Syntax ist. – Siva

+0

Sie haben die Daten in Ihre Anfrage eingegeben, also werden Sie es definitiv von dort bekommen. :) –

2

In Ihrem Java-Code verwenden Sie request.setAttribute("data", "0");, aber in Ihrer JSP-Seite verwenden Sie request.getSession().getAttribute("data"), so dass Sie die Daten nicht erhalten.

+0

Vielen Dank für Ihre Antwort verwenden .. Können Sie mir bitte mehr und erklären, was soll ich bearbeiten Daten – Siva

+0

In Ihrem Servlet Sie 'data' in Ihrer Anfrage Rahmen gesetzt zu bekommen, aber in jsp Seite bekommen Sie es aus Ihrem Sitzungsumfang. Sie sollten auch von Anfrage bekommen. in jsp Seite können Sie es zu 'request.getAttribute (" Daten ") ändern;' – mashuai

1

Sie speichern Ihre Daten tatsächlich in der Sitzung und versuchen, sie aus dem Anforderungsbereich abzurufen, sodass ich denke, dass Sie einen Nullwert erhalten.

in jsp <%= request.getSession().getAttribute("data") %> Linie entfernen und diese Zeile <%= request.getAttribute("data") %>

+1

Danke für Ihre Antwort – Siva

+1

@Siva Ich denke, Sie sind mit dem Umfang verwirrt. Sie haben Daten im Sitzungsbereich gespeichert und versuchen, sie aus dem Anforderungsbereich abzurufen. Sie können das auch umgekehrt tun. Bedeutet, wenn Sie Ihren JSP-Code nicht in den Servlet-Speicherdaten im Sitzungsbereich ändern möchten, aber nach der Verwendung von Daten müssen Sie die Sitzung ungültig machen oder das Attribut entfernen. – Darshit

Verwandte Themen