Klopfer
Mitglied
Hi zusammen,
also ich mache jetzt schon seit 3 tagen an dem Code rum und ich finde den Fehler nicht. Ich bin jetzt garantiert 20 Mal den Code auf schreibfehler oder sonst was was mir auffällig erscheint durchgegangen aber ich finde einfach keinen fehler. Ich bin anfänger und habe mit das Buch "Ajax und Java" zugelegt. Mein Problem ist, dass ich schon am ersten beispiel gnadenlos scheitere.
Die Funktion soll nichts anderes machen als den Buchstaben oder die Zahl die ich eingebe in den Dezimalwert umrechnen.
Hier mal der Code.
index.html
ajax.js
AjaxResponseServlet.java
build.xml
web.xml
die Style.css hab ich weggelessen, die ist eh uninteressant.
Wenn ich das ganze mit ant deploy ausführe, macht mir ant aus der .java eine .class und verschiebt auch alles in den webapps Ordner im Tomcat. Ihc kann die Seite dann aufrufen über localhost aber die umrechnung in Dezimal findet nicht stattt.
Über eine Hilfe wäre ich echt dankbar. Ich hab jetzt schon ettliche Stunden gegooglet und Foren bis zum ende durchsucht, ich weiß langsam echt nimmer weiter.
Kann es vielleicht eine falsche Konfiguration von Tomcat sein?
Gruß Fabian
also ich mache jetzt schon seit 3 tagen an dem Code rum und ich finde den Fehler nicht. Ich bin jetzt garantiert 20 Mal den Code auf schreibfehler oder sonst was was mir auffällig erscheint durchgegangen aber ich finde einfach keinen fehler. Ich bin anfänger und habe mit das Buch "Ajax und Java" zugelegt. Mein Problem ist, dass ich schon am ersten beispiel gnadenlos scheitere.
Die Funktion soll nichts anderes machen als den Buchstaben oder die Zahl die ich eingebe in den Dezimalwert umrechnen.
Hier mal der Code.
index.html
Code:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<SCRIPT language="Javascript" src="ajax.js"></SCRIPT>
<title>Ajax mit Java, Kapitel 2, JavaScript für Ajax-Beispiel</title>
</head>
<body onload="focusIn();">
<h1> AJAX-ZEICHENDEKODIERER </h1>
<h2> Drücken Sie eine Taste um ihren Wert zu ermitteln. </h2>
<table>
<tr>
<td>
Geben Sie hier die Taste ein -> <input type="text" id="key" name="key" onkeyup="convertToDecimal();">
</td>
</tr>
</table>
<br>
<table>
<tr>
<td colspan="5" style="border-bottom:solid black 1px;">
Gedrückte Taste:
<input type="text" readonly id="keypressed">
</td>
</tr>
<tr>
<td> Dezimal </td>
</tr>
<tr>
<td><input type="text" readonly id="decimal"></td>
</tr>
</table
</body>
</html>
ajax.js
Code:
var req;
function convertToDecimal() {
var key = document.getElementById("key");
var keypressed = document.getElementById("keypressed");
keypressed.value = key.value;
var url = "/ajaxcharacterconverter/response?key=" + escape(key.value);
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("Get",url,true);
req.onreadystatechange = callback;
req.send(null);
}
function callback() {
if (req.readyState==4) {
if (req.status == 200) {
var decimal = document.getElementById('decimal');
decimal.value = req.responseText;
}
}
clear();
}
function clear() {
var key = document.getElementById("key");
key.value="";
}
function focusIn() {
document.getElementById("key").focus();
}
AjaxResponseServlet.java
Code:
/*
*Wandelt ein Zeichen in sein Dezimalwert um
* und sendet den Wert in einer Antwort zurück.
*
*/
package com.oreilly.ajax.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxResponseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String key = req.getParameter("key");
if (!key.equals("")) {
// das erste Zeichen aus key als int herausziehen
// und diesem int dann in einen String umwandeln
int keychar = key.charAt(0);
String decimalString = Integer.toString(keychar);
// die Antwort einrichten
res.setContentType("text/plain");
res.setHeader("Cache-Control", "no-chache");
// den Antwort-String ausgeben
res.getWriter().write(decimalString);
} else {
// wenn key leer ist, wird ein Fragezeichen zurückgeliefert
res.setContentType("text/plain");
res.setHeader("Cache-Control", "no-cache");
res.getWriter().write("?");
}
}
}
build.xml
Code:
<?xml version="1.0"?>
<project name="CH03 AJAX-CODECONVERTER" default="compile" basedir=".">
<property environment="env"/>
<property name="src.dir" value="src"/>
<property name="war.dir" value="war"/>
<property name="class.dir" value="${war.dir}/WEB-INF/classes"/>
<property name="lib.dir" value="${war.dir}/WEB-INF/lib"/>
<property name="webapp.dir" value="${env.TOMCAT_HOME}/webapps/ROOT/ajaxcharachterconverter"/>
<path id="ajax.class.path">
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="init">
<mkdir dir="${class.dir}"/>
</target>
<target name="compile" depends="init" description="Kompiliert den gesamten Quellcode.">
<javac srcdir="${src.dir}" destdir="${class.dir}" debug="on" classpathref="ajax.class.path"/>
</target>
<target name="clean" description="Loescht den Inhalt des Verzeichnisses classes">
<delete dir="${class.dir}"/>
</target>
<target name="deploy" depends="compile" description="Kopiert den Inhalt der Webanwendung in das Zielverzeichnis">
<copy todir="${webapp.dir}">
<fileset dir="${war.dir}"/>
</copy>
</target>
</project>
web.xml
Code:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>AjaxResponseServlet</servlet-name>
<servlet-class>
com.oreilly.ajax.servlet.AjaxResponseServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AjaxResponseServlet</servlet-name>
<url-pattern>/response</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcom-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
die Style.css hab ich weggelessen, die ist eh uninteressant.
Wenn ich das ganze mit ant deploy ausführe, macht mir ant aus der .java eine .class und verschiebt auch alles in den webapps Ordner im Tomcat. Ihc kann die Seite dann aufrufen über localhost aber die umrechnung in Dezimal findet nicht stattt.
Über eine Hilfe wäre ich echt dankbar. Ich hab jetzt schon ettliche Stunden gegooglet und Foren bis zum ende durchsucht, ich weiß langsam echt nimmer weiter.

Kann es vielleicht eine falsche Konfiguration von Tomcat sein?
Gruß Fabian