Hallo Leute,
ich bastel gerade für meine kleine Community eine kleine Seite, wo sich jeder für ein Treffen anmelden kann. Hierzu möchte ich den Usernamen automatisch über den Cookie der Community einlesen und da ich eh vor habe Java zu lernen, habe ich gedacht, machste das ganze in Java anstatt in Perl.
Funktioniert leider (noch) nicht.
Und ich bräuchte mal eure Hilfe.
Ich verwende Tomcat 5.0.18 als Applicationserver und nutze die IMHO sehr schicke TemplatingEngine Velocity (ist sicher Geschmackssache, mir gefällts). Zum coden nehme ich Eclipse M6. Kostenlos und dafür sehr sehr geil. Ausserdem steht ne große engagierte Community dahinter, was ich sehr wichtig finde bei Supportfragen, etc.
Folgende Klassenauszüge sind interessant:
Dieses Servlet hier füllt das Template mit Leben und zeigt es an. Das Try/Catch oben habe ich rausgenommen, weil mir die Logmeldung zu kurz war. Was habe ich noch für Möglichkeiten dort zu catchen und wie finde ich das demnächst selber raus?:
Hier gebe ich den Wert des Cookies zurück:
Und das ist die Exception, die ich bekomme:
Ich bastel jetzt seid ner Stunde an dem Fehler rum, aber ich hab keine Idee, warum er an dieser Stelle ne NullPointerException wirft. Warscheinlich ist es ne triviale Lösung oder nen Tippfehler oder so. Ich komm aber nicht drauf. HILFE!
Wär super, wenn ihr ne Idee habt oder sagen könnt, wo ich suchen soll.
Thomas
ich bastel gerade für meine kleine Community eine kleine Seite, wo sich jeder für ein Treffen anmelden kann. Hierzu möchte ich den Usernamen automatisch über den Cookie der Community einlesen und da ich eh vor habe Java zu lernen, habe ich gedacht, machste das ganze in Java anstatt in Perl.
Funktioniert leider (noch) nicht.
Ich verwende Tomcat 5.0.18 als Applicationserver und nutze die IMHO sehr schicke TemplatingEngine Velocity (ist sicher Geschmackssache, mir gefällts). Zum coden nehme ich Eclipse M6. Kostenlos und dafür sehr sehr geil. Ausserdem steht ne große engagierte Community dahinter, was ich sehr wichtig finde bei Supportfragen, etc.
Folgende Klassenauszüge sind interessant:
Dieses Servlet hier füllt das Template mit Leben und zeigt es an. Das Try/Catch oben habe ich rausgenommen, weil mir die Logmeldung zu kurz war. Was habe ich noch für Möglichkeiten dort zu catchen und wie finde ich das demnächst selber raus?:
Code:
public class servShowParticipants extends VelocityServlet
{
public Template handleRequest( HttpServletRequest request,
HttpServletResponse response,
Context context )
{
DBParticipants dbPart = new DBParticipants();
String username = "";
//try{
Cookie[] cookies = request.getCookies();
System.err.println(cookies);
username = cookieValue.getCookieValue(cookies, "POSTNUKESID", "not logged in");
/*}
catch ( Exception e )
{
System.err.println("Exception caught: " + e);
}*/
Vector vec = dbPart.getParticipants();
context.put("username", username);
context.put("participants", vec );
Template template = null;
...
Hier gebe ich den Wert des Cookies zurück:
Code:
/*
* Created on 16.02.2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package celicameet.main;
import javax.servlet.http.Cookie;
/**
* @author Asha'man
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class cookieValue {
public static String getCookieValue(Cookie[] cookies,
String cookieName,
String defaultValue) {
for(int i=0; i<cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName()))
return(cookie.getValue());
}
return(defaultValue);
}
}
Und das ist die Exception, die ich bekomme:
Code:
VelocityServlet : Error processing the template
java.lang.NullPointerException
java.lang.NullPointerException
at celicameet.main.cookieValue.getCookieValue(Unknown Source)
at celicameet.main.servShowParticipants.handleRequest(Unknown Source)
at org.apache.velocity.servlet.VelocityServlet.doRequest(VelocityServlet.java:372)
at org.apache.velocity.servlet.VelocityServlet.doGet(VelocityServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Ich bastel jetzt seid ner Stunde an dem Fehler rum, aber ich hab keine Idee, warum er an dieser Stelle ne NullPointerException wirft. Warscheinlich ist es ne triviale Lösung oder nen Tippfehler oder so. Ich komm aber nicht drauf. HILFE!
Wär super, wenn ihr ne Idee habt oder sagen könnt, wo ich suchen soll.
Thomas