Hi,
habe ein Problem: Ich will ein Webservice entwickeln, dass Select Anweisungen aus einer xml Datei lädt und diese auf der Client Seite auf dem Bildschirm ausgibt.
Im Ordner des Services "Server" befindet sich folgendes:
Select Datei: Select.java
die SqlStatemnts getter und setter:
SqlStatements.java
und zuletzt die xml Datei:
applicationContex.xml
Der Client befindet sich in einem anderen Projekt (Ordner) und ist eine jsp Datei
sieht zur Zeit folgendermaßen aus:
Brauche wirklich dringend Hilfe ...
habe ein Problem: Ich will ein Webservice entwickeln, dass Select Anweisungen aus einer xml Datei lädt und diese auf der Client Seite auf dem Bildschirm ausgibt.
Im Ordner des Services "Server" befindet sich folgendes:
Select Datei: Select.java
Code:
package meinpackage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Select
{
public static void setSelect(String sSql)
{
String DbDrv = "oracle.jdbc.driver.OracleDriver",
DbUrl = "jdbc:oracle:thin:@localhost:1521:xe",
Table = "Employees",
Usr = "hr",
Pwd = "system";
//String help = "";
//wenn keine Angabe über die Datenbank gemacht wird, soll keine Verbindung
//zur Datenbank hergestellt werden
if (null != DbDrv && 0 < DbDrv.length() &&
null != DbUrl && 0 < DbUrl.length() &&
null != Table && 0 < Table.length() )
{
Connection conn = null;
Statement stmt = null;
//help = Sql;
try {
ApplicationContext appCtx = new ClassPathXmlApplicationContext(new String[] {"meinpackage/applicationContext.xml"});
Class.forName( DbDrv );
conn = DriverManager.getConnection( DbUrl, Usr, Pwd );
SqlStatements statm = (SqlStatements)appCtx.getBean(sSql);
sSql = statm.getStatement();
//Es wird ein Objekt erstellt, um Sql Statements an die Datanbank zu senden
stmt = conn.createStatement();
stmt.executeQuery( sSql );
//schließen der Verbindung sowie des Statements ...
conn.close();
stmt.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
die SqlStatemnts getter und setter:
SqlStatements.java
Code:
package meinpackage;
import org.springframework.beans.factory.BeanNameAware;
public class SqlStatements implements BeanNameAware {
private String statement = null;
private long id = 0;
private String name = null;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getStatement() {
return statement;
}
public void setStatement(String statement) {
this.statement = statement;
}
public void setBeanName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
und zuletzt die xml Datei:
applicationContex.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="statm1" class="meinpackage.SqlStatements">
<property name="id" value="1"/>
<property name="statement" value="Select * From employees"/>
</bean>
<bean id="statm2" class="meinpackage.SqlStatements">
<property name="id" value="2"/>
<property name="statement" value="Select * From bank"/>
</bean>
<bean id="statm3" class="meinpackage.SqlStatements">
<property name="id" value="3"/>
<property name="statement" value="Select E.EMPLOYEE_ID, E.LAST_NAME, E.FIRST_NAME, B.ZIP, B.KONTO_ID, B.BANK_NAME From EMPLOYEES E, BANK B Where E.EMPLOYEE_ID = B.EMPLOYEE_ID And B.Employee_ID Between 100 and 105"/>
</bean>
<bean id="statm4" class="meinpackage.SqlStatements">
<property name="id" value="4"/>
<property name="statement" value="Select * From jobs"/>
</bean>
</beans>
Der Client befindet sich in einem anderen Projekt (Ordner) und ist eine jsp Datei
sieht zur Zeit folgendermaßen aus:
Code:
<!doctype html public "-//w3c//dtd html 4.0 transitional// en" >
<%@ taglib uri="/WEB-INF/taglibs-io.tld" prefix="io" %>
<%@ page import="java.sql.*" isThreadSafe="false" %>
<%
final String urlLocalhost=
"http://localhost:8084/WebServiceSpringSelect/services/WebServiceSpringSelect";
String url = request.getParameter("url");
String DbDrv = request.getParameter("DbDrv");
String DbUrl = request.getParameter("DbUrl");
String Usr = request.getParameter("Usr");
String Pwd = request.getParameter("Pwd");
String Table = request.getParameter("Table");
String Sql = request.getParameter("Sql");
url = (null != url) ? url.trim(): urlLocalhost;
DbDrv = (null != DbDrv) ? DbDrv.trim(): "oracle.jdbc.driver.OracleDriver";
DbUrl = (null != DbUrl) ? DbUrl.trim(): "jdbc:oracle:thin:@localhost:1521:xe";
Usr = (null != Usr) ? Usr.trim(): "hr";
Pwd = (null != Pwd) ? Pwd.trim(): "fenerium";
Table = (null != Table) ? Table.trim(): "Employees";
Sql = (null != Sql) ? Sql.trim(): "";
%>
<html>
<head> <title> Web Service Client Select Database </title></head>
<body>
<h2> Web Service Client Select Database </h2>
<form method="post"><pre>
Endpoint-Url :<input type="text" name="url" value='<%= url %>' size=80>
Db- Treiber :<input type="text" name="DbDrv" value='<%= DbDrv %>' size=80>
Db- Url :<input type="text" name="DbUrl" value='<%= DbUrl %>' size=80>
Nutzer :<input type="text" name="Usr" value='<%= Usr %>' size=80>
Kennwort :<input type="password" name="Pwd" value='<%= Pwd %>' size=80>
Tabellenname :<input type="text" name="Table" value='<%= Table %>' size=80>
Sql- Kommando :<input type="text" name="Sql" value='<%= Sql %>' size=80>
(nach Änderung anderer Parameter muss SQL-Kommando gelöscht werden)<br>
<input type="submit" name="submit" value="Ausgabe">
</pre></form>
<h3><hr>setSelect("<%= Sql %>") -- >
<% out.flush(); %>
<io:soap url="<%= url %>" SOAPAction="" >
<io:body>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:setSelect xmlns:m="http://meinpackage">
<in0><%= Sql %></in0>
</m:setSelect>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</io:body>
</io:soap>
</hr></h3>
<%
if (request.getParameterNames().hasMoreElements() == true
&& null != DbDrv && 0 < DbDrv.length()
&& null != DbUrl && 0 < DbUrl.length() )
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Class.forName( DbDrv );
conn = DriverManager.getConnection( DbUrl, Usr, Pwd );
stmt = conn.createStatement();
rs= stmt.executeQuery( Sql );
ResultSetMetaData rsmd = rs.getMetaData();
int n = rsmd.getColumnCount();
out.println("<table border=1 cellspacing=0><tr>");
for (int i=1; i<=n; i++) // Achtung: Erste Spalte mit 1 statt 0
out.println("<th>" + rsmd.getColumnName(i) + "</th>");
while (rs.next())
{
out.println( "</tr><tr>" ); // Somit untereinander ausgegeben
for(int i=1; i<=n; i++) // Achtung: Erste Spalte mit 1 statt 0
out.println("<td>" + rs.getString(i) + "</td>");
}
out.println("</tr></table>");
}
finally {
try { if(null != rs) rs.close(); } catch (Exception ex) {}
try { if(null != stmt) stmt.close(); } catch (Exception ex) {}
try { if(null != conn) conn.close(); } catch (Exception ex) {}
}
}
%>
</body>
</html>
Brauche wirklich dringend Hilfe ...
Zuletzt bearbeitet: