JSP

Status
Nicht offen für weitere Antworten.
M

mike_

Gast
hallo leute,

hier habe folgende klassen geschrieben:

package person;
import java.lang.String;

public class Person{

private String name;
private String vorname;
private String land;

public Person()
{}

public Person(String name, String vorname, String land)
{
this.name=name;
this.vorname=vorname;
this.telefon=telefon;
}

public String getName()
{
return name;
}

public String getVorname()
{
return vorname;
}

public String getLand()
{
return land;
}




}

Code:
package person;

import java.util.Vector;
import java.lang.String;

public class Liste{

	private Vector vperson = new Vector();
	
	public Liste()
	{}
	
	public void hinzuperson(String name, String vorname, String telefon){
		Person p = new Person(name, vorname, telefon);
		vperson.add(p);
	
    	}
    	
    public Vector getAll()
    {
    	return vperson;
	}
	
	public Person search(String name){
		Person tmp = new Person();
	for(int i=0; i<vperson.size();i++)
	{	
	tmp = (Person) vperson.get(i);	
	if(tmp.getname().equals(name))
	{
		return tmp;
	}
	
	}
	return null;
	}
		
	
	
}


jetzt möchte ich das ganze erstmal testweise mit jsp aufrufen:

Code:
<%@ page language="java" import="java.util.*, person.*" %>

	
	<html><body>

<%
Vector pers = new Vector();
	
	Liste liste1 = new Liste();
	liste1.hinzuperson("Dieter", "Watzik", "de");
	liste1.hinzuperson("Peter", "Eurler", "ger");
	
	pers= liste1.getAll();
	
	Person p;
	
	

	for (int i=0; i<pers.size(); i++)
	{
		
		 p =  (Person) pers.get(i);
		
	out.println("\n" + p.getName() + " , " + p.getVorname() + " , " + p.getLand());

   }
%>

</body></html>

das problem macht diese zeile:
out.println("\n" + p.getName() + " , " + p.getVorname() + " , " + p.getLand());

wenn ich die weglasse, habe ich keine fehler sonst kommt sowas:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: person.Person.getVorname()Ljava/lang/String;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.test_jsp._jspService(test_jsp.java:101)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NoSuchMethodError: person.Person.getVorname()Ljava/lang/String;
org.apache.jsp.test_jsp._jspService(test_jsp.java:90)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
 

bronks

Top Contributor
Zum einen gruselt mit die steinalte Version von Tomcat. Zum anderen ist Person nicht serialisiert und wegen dem eigentlichen Fehler habe ich den Verdacht, daß beim Build möglicherweise eine alte Class packetiert wurde in der die Methode getVorname() nicht exisitiert hat.
 
M

mike_

Gast
danke erstmal

bei dem fehler steht getVorname() weil ich die ausgabe nur auf getVorname() beschränkt habe (also nicht so wie im code)

dumme frage: wie muss ich denn Person serialisieren?
 
S

SlaterB

Gast
import java.io.Serializable;
public class Person implements Serializable {
 
S

SlaterB

Gast
schreibe mal in der Konstruktor von Person
System.out.println("hier ist der Konstruktor");
und in die JSP schreibst du
System.out.println("hier ist die JSP");

wenn eine oder alle Meldungen erscheinen, weiß du von welchem Code du die aktuelle Version hast
 
M

mike_

Gast
danke

das komische ist, was ich schreibe, wird jetzt angezeigt (hab nochmal neu alles geschrieben), wenn ich aber das ganz neu starte nicht mehr!
ich probiere dann stück für stück des codes wieder einzufügen, dann geht es!
wenn ich aber die gleiche datei im anderen browser fenster aufrufe, wird wieder nichts angezeigt (also mit HTTP Status 500 usw.)- echt komisch!

folgdende meldung

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
org.apache.jsp.test_jsp._jspService(test_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
 
M

mike_

Gast
danke
es lang aber an NullPointerException .

hab jetzt folgendes problem:

Code:
<form action="test.jsp" method=POST >

<INPUT TYPE="RADIO" NAME="choice" VALUE="search" > Suche eines Teilnehmers 

<INPUT TYPE="RADIO" NAME="choice" VALUE="add" > Hinzuf&gen eines Teilnehmers 

<INPUT TYPE="RADIO" NAME="choice" VALUE="list"  > Anzeigen aller Teilnehmer 

<INPUT TYPE="RADIO" NAME="choice" VALUE="change" > Ändern des Landes eines Teilnehmers 


<input type=submit  value="ok">

..............
else if (choice.equals("change"))
{
out.println("

Land ändern:
" 
+	"<form action=\"test.jsp\" method=POST>" 
+ "<input type=\"hidden\" name=\"funktion\" value=\"change\">"
+ "Name: <INPUT TYPE=\"text\" NAME=\"name\"  >
 "
+ "Vorname: <INPUT TYPE=\"text\" NAME=\"vorname\"  > 
"
+ "<input type=submit value=\"anzeigen\">");	
}//change
	
..................

else if (funktion.equals("change"))
{
name = request.getParameter("name");
vorname = request.getParameter("vorname");	
	
p = liste1.search(name, vorname);	

	if (p == null)
	{
		out.println("Person nicht gefunden");
	}
	else
	{out.println("änderung!");
		
		/*
out.println("Bitte neues Land eingeben: 
"
+	"<form action=\"test.jsp\" method=POST>" 
+ "Land <INPUT TYPE=\"text\" NAME=\"land2\"  >
 "
+ "<input type=submit value=\"ändern\">");	

land = request.getParameter("land2");

out.println(land);*/



out.println(p.getLand());
p.setLand("sdf");
}

	
}/

habe nur dafür das wichtige reingestellt

wenn ich probiere also, das land zu ändern, tritt immer fehler mit setLand() auf!


Code:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: person.Person.setLand(Ljava/lang/String;)V
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
	org.apache.jsp.test_jsp._jspService(test_jsp.java:278)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NoSuchMethodError: person.Person.setLand(Ljava/lang/String;)V
	org.apache.jsp.test_jsp._jspService(test_jsp.java:260)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


NoSuchMethodError: wenn versucht wird, eine Methode einer Klasse aufzurufen, die sie nach einer Änderung nicht mehr besitzt -> heißt es er kann setLand() nicht finden? die ist bei mir auf jeden fall in der klasse person dabei!
 
S

SlaterB

Gast
ja spinn ich? die Frage hatten wir doch schon am Anfang...
nix gelernt?

System.out.println in Konstruktor!,

Versionsausgabe ist schon extrem hilfreich
(jeder eindeutige Satz wie 'huhu' reicht als Version
wenn du weißt dass du ihn vorher nie benutzt hast,
konservativer ist eine Versionnummer)

noch sicherer wärs mit etwas wie

System.out.println("huhu");
Land land = getLand();
System.out.println("huhu, mein Land ist: "+land);

bzw. es geht ja um setLand(), dann eben das im Konstruktor testen,
und wichtig: immer die Verbindung zur JSP wahren, dort auch eine Ausgabe vor new Person()
sonst siehts du vielleicht Versionsnummern von Personen aus einem anderen Teil der Anwendung
 
S

SlaterB

Gast
Kinderkram ;)

Debugging einer Anwendung auf entfernten Rechner?

Debugging des 137. Durchlauf einer Operation?

macht vorallem keinen Sinn wenn Debugger und Anwendung unterschiedliche Versionen haben? ;)
 
G

Gast von vorher

Gast
SlaterB hat gesagt.:
Kinderkram ;)
Debugging einer Anwendung auf entfernten Rechner?

A.k.a. Remote Debugging

SlaterB hat gesagt.:
Kinderkram ;)
Debugging des 137. Durchlauf einer Operation?

A.k.a. Conditional Breakpoints bzw. Hit Counts.

SlaterB hat gesagt.:
Kinderkram ;)
macht vorallem keinen Sinn wenn Debugger und Anwendung unterschiedliche Versionen haben? ;)

Nuja, da kann mer nix machen. ;-)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben