2016-09-02 2 views
0

Ich schreibe einen einfachen JSP-Code, der einen Textfeldwert annehmen, eine SQL-Anweisung erstellen, ausführen und das Ergebnis in ein anderes Textfeld zurückgeben soll. Ich bekomme ein leeres Ergebnis. Das Folgende ist mein Code.JSP ruft nicht den Textfeldwert ab

Der Treiber arbeitet und Wert wird gesetzt, wenn keine Bedingung in der Anweisung wie Vornamen if rownum<1 zum Beispiel auswählen, so bin ich sicher, dass es gut registriert ist.

<html> 
<head> 
<title>Holiday Master</title> 
</head> 
<body> 
<%@ page import = "java.sql.*" %> 
<div> 

     <input id="input1" name="Text1" type="text"><input id="input2" name="Text2" type="text"><input name="Button1" onclick="get_data()" type="button" value="button"></div> 
<script> 
function get_data() 
{ 
<% 
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr"); 
    Statement stmt = conn.createStatement(); 
    String sql2 = request.getParameter("input1"); 
    String sql="select last_name from employees where first_name ='"+sql2+"'"; 
    ResultSet rs = stmt.executeQuery(sql); 
    try 
    { 
    if(rs!=null) 
    { 

    while(rs.next()) 
    { 
    %> 

    document.getElementById("input2").value="<%=rs.getString("last_name")%>";  

    <% 
    } 
    }   
    } 
    catch(SQLException e) 
    { 
     e.printStackTrace(); 
    } 
    stmt.close(); 
    rs.close(); 
    conn.close(); 
    stmt=null; 
    rs=null; 
    conn=null; 
    %> 



} 

</script> 
</body> 
</html> 

Antwort

0

Sie mischen zwei verschiedene Codes. Der Schlüssel ist, zu realisieren, wo und wenn jeder Code ausgeführt wird - JSP auf dem Server, wenn die Seite angefordert und gerendert (dh vor die Antwort an den Browser senden) und Javascript in Ihrem Browser, nach der Browser erhält die bereits generierte Antwort.

+0

So wie ich aus Ihrer Antwort verstehe, dass document.getElementById ("input2"). Wert <% = rs.getString ("last_name")%> "; wird nicht verstehen, was Rs bedeutet, weil es serverseitig ausführt? Also, wie schlagen Sie vor, ich fülle das Textfeld mit dem Abfrageergebnis? –

+0

Das Problem beginnt noch früher, die 'sql2' Zeichenfolge ist' null' beim ersten Aufruf der Seite, so (IMHO) sollte die gesamte Abfrage fehlschlagen. (Btw. 'Request.getParameter (String parameterName)' erwartet 'name' des Eingabeattributs als' parameterName', nicht als 'id'. Sie benötigen AJAX für das, was Sie erreichen möchten, siehe zB [diese Antwort] (http: //stackoverflow.com/a/4113258/3511123) für eine kurze Einführung –

+0

Und btw. ** nie ** SQL-Anweisungen durch Verketten der Strings. Lernen Sie, 'PreparedStatement's zu verwenden. Grund: [SQL Injection] (http: //www.roya bubakar.com/blog/2014/01/19/sql-injection-in-java-web-application/) - d. h. was ist, wenn ich in Ihrem ersten Eingabefeld etwas wie "" eingeben; Drop-Tabelle Mitarbeiter; -? ;-) –

Verwandte Themen