LordDarkness
Mitglied
Hallo,
ich habe eine JSP-Homepage und wollte ein URL-Search machen, wo ich ein Suchbegriff eingebe und dies in der Datenbank durchsucht und in einem xml-Format angezeigt wird.
Dass heisst z.B.:
Begriff erklärung:
sword = hier kommt der Suchbegriff hin
defOp = kann man die Art der Verknüpfung der Suchbegriffe steuern:
defOp = 1 --> irgendein Wort (OR)
defOp=0 --> alle Wörter (AND)
type = steuert die Suchoptionen:
type=0 > ganzes Wort suchen
type=1 > Teil eines Wortes suchen
type=2 > Anfang eines Wortes suchen
type=3 > Ende eines Wortes suchen
type=20 > gesamten Begriff suchen
Dies soll auf die Datenbank (Oracel 10g) zugreifen und durch den folgenden SELECT Statement die Suche durchführen:
Wenn man jetzt z.B. folgende URL eingibt mit dem Suchbegriff "welt":
sollte z.B. folgender xml-Code im Fenster erscheinen:
Für die Übung habe bis jetzt ein Java Programm und ein Templat geschrieben, wo ich mit dem Java Programm auf dem Templat zugeife und einen Parameter übergebe:
Java Programm
Templats
Leider weiss ich nicht weiter wie ich vorran gehen soll, das heisst wie übergebe ich der Datenbank den SELECT Statement mit dem jeweiligen Paramter (Suchbegriff). So das er mir dann die gesuchten ergebnisse liefert.
Tipps und Lösungsmöglichkeiten wären sehr hilfreich.
Danke im Voraus
ich habe eine JSP-Homepage und wollte ein URL-Search machen, wo ich ein Suchbegriff eingebe und dies in der Datenbank durchsucht und in einem xml-Format angezeigt wird.
Dass heisst z.B.:
Code:
http://www.beispiel_Seite.de/index.html?id=286&eID=searchxml&sword=suchbegriff&defOp=1&type=0
Begriff erklärung:
sword = hier kommt der Suchbegriff hin
defOp = kann man die Art der Verknüpfung der Suchbegriffe steuern:
defOp = 1 --> irgendein Wort (OR)
defOp=0 --> alle Wörter (AND)
type = steuert die Suchoptionen:
type=0 > ganzes Wort suchen
type=1 > Teil eines Wortes suchen
type=2 > Anfang eines Wortes suchen
type=3 > Ende eines Wortes suchen
type=20 > gesamten Begriff suchen
Dies soll auf die Datenbank (Oracel 10g) zugreifen und durch den folgenden SELECT Statement die Suche durchführen:
Code:
select unique obj.obj_id, obj.abstract, obj.title,
round(obj.file_size/1024,0), to_char(obj.accession_date, 'DD-MM-YY')
from obj_tab obj, obj_key_tab key_rel, keyword_tab key, cross_tab cross,
obj_author_tab author, obj_author_obj_tab author_obj
where key_rel.obj_id=obj.obj_id
and key_rel.key_id=key.key_id and cross.cross_id=obj.cross_id
and author.AUTHOR_ID=author_obj.AUTHOR_ID
and author_obj.OBJ_ID=obj.obj_id
and ((upper(obj.abstract) like upper('%eigenverschattung%')
or upper(obj.title) like upper('%eigenverschattung%')
or upper(cross.cross_area) like upper('%eigenverschattung%')
or upper(author.last_name) like upper('%eigenverschattung%')
or upper(author.first_name) like upper('%eigenverschattung%'))
)
Wenn man jetzt z.B. folgende URL eingibt mit dem Suchbegriff "welt":
Code:
http://www.beispiel_Seite.de/index.html?id=286&eID=searchxml&sword=welt&defOp=1&type=0
sollte z.B. folgender xml-Code im Fenster erscheinen:
Code:
<searchresults>
<sword>suchbegriff</sword>
<type>1</type>
<defOp>1</defOp>
<resultcount>0</resultcount>
<resultitem>
<title>
<a href="http://www.beispiel_Seite.de/verlinkung?no_cache=1&sword_list%5B0%5D=welt" >Beispielwelt</a>
</title>
<rating>100%</rating>
<description>
----gefundene Texte----
</description>
<created>09-01-03</created>
<size>10.2 K</size>
</resultitem>
</searchresults>
Für die Übung habe bis jetzt ein Java Programm und ein Templat geschrieben, wo ich mit dem Java Programm auf dem Templat zugeife und einen Parameter übergebe:
Java Programm
Code:
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class XMLSearch extends HttpServlet {
private static final long serialVersionUID = 5946965066811596464L;
// ändern auf xml
private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
private TemplateLoader xmlTpl;
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println(showContent(request, out, response));
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
public String showContent(HttpServletRequest request, PrintWriter out,
HttpServletResponse response) {
String param1 = null;
param1 = request.getParameter("param1");
// DB ZUGRIFF
// DB SCHLIESSEN!
// WENN ERGEBNIS NULL: rausspringen (irgendwie)
xmlTpl = new TemplateLoader(request);
xmlTpl.initTemplate("modules/xmlsearch/XMLSearch.tpl");
xmlTpl.setWriter(new StringWriter());
// Template Setzen
xmlTpl.addToContext("sword", param1);
// TEMPLATE FERTIG
xmlTpl.mergeTemplateContext();
return xmlTpl.getWriter().toString();
}
}
Templats
Code:
<searchresults>
<sword>$sword</sword>
<type>$type</type>
<defOp>$defop</defOp>
<resultcount>$resultcount</resultcount>
<resultitem>
<title>
<a href="$link">$name</a>
</title>
<rating>$rating</rating>
<description>$description</description>
<created>$created</created>
<size>$size</size>
</resultitem>
</searchresults>
Leider weiss ich nicht weiter wie ich vorran gehen soll, das heisst wie übergebe ich der Datenbank den SELECT Statement mit dem jeweiligen Paramter (Suchbegriff). So das er mir dann die gesuchten ergebnisse liefert.
Tipps und Lösungsmöglichkeiten wären sehr hilfreich.
Danke im Voraus