Avatar billede Slettet bruger
01. oktober 2002 - 17:22 Der er 29 kommentarer og
2 løsninger

brug af egne klasser i JSP dokumenter

Hvordan benytter man selvdefinerede klasse i et JSP dokument?

Jeg ville prøve at bruge den dbHandler som disky har vist. Men når jeg skrive:

<%dbHandler dbh = new dbHandler();%>

får jeg følgende fejlmeddelelse:

VM$jsp.java [71:1] cannot resolve symbol
symbol  : class dbHandler 
location: class org.apache.jsp.VM$jsp
                    dbHandler db = new dbHandler();
                    ^

Skal man på en eller anden måde importere klassen?
Og hvis ja, hvordan gør man det?
Avatar billede disky Nybegynder
01. oktober 2002 - 17:24 #1
Så er din classpath ikke sat korrekt op, eller din .class fil ligger ikke det korrekte sted.

Normalt ligger man dem i WEB-INF/classes/ under roden af webdirectoriet
Avatar billede Slettet bruger
01. oktober 2002 - 17:33 #2
så jeg skal lægge dbHandler.class i web-inf/classes/ og så skulle det virke?
Avatar billede Slettet bruger
01. oktober 2002 - 17:35 #3
Og hvordan sætter man sin classpath?
Jeg er helt ny mht. JSP
Avatar billede disky Nybegynder
01. oktober 2002 - 17:40 #4
Din classpath sætter du enten i din JSP servers opsætning eller på system niveau
Avatar billede =maddog= Nybegynder
01. oktober 2002 - 17:55 #5
Du skulle gerne få din(e) classpath(s) ud med
System.getProperty("java.class.path")
og sætte dem med
System.setProperty("java.class.path","STI1;STI2;STI3;")
hvor STIx er en sti til et directory.
Beklager hvis det er lidt ved siden af, men jeg har ikke kæmpet med serveropsætning selv.
Avatar billede disky Nybegynder
01. oktober 2002 - 17:59 #6
maddog, så skal man jo sikre at det java program bliver kørt hvergang serveren startes, og hvordan vil du køre det, når classpathen i første omgang er forkert ?
Avatar billede Slettet bruger
01. oktober 2002 - 18:05 #7
Så vidt jeg kan se så er en af mine classpaths det bibliotek hvor jeg har lagt dbHandler.
Avatar billede =maddog= Nybegynder
01. oktober 2002 - 18:05 #8
det er jo en major bummer. indrømmet. især hvis den klasse men vil bruge er vital for initialisering. ellers skulle man vel kunne tilføje en path umiddelbart før man anvender den klasse der skaber tvisten.
men helt klart ved siden af at brænde CPU kraft på at lede i system variable runtime.
det var også bare et lille forslag fra en 'tumling' :-).
Avatar billede =maddog= Nybegynder
01. oktober 2002 - 18:08 #9
Hey, skal du ikke f.eks. have en
import beans.sql.dbHandler;
hvis f.eks. dbHandler ligger i /beans/sql/ relativt til codebase?
Avatar billede disky Nybegynder
01. oktober 2002 - 18:10 #10
hvis den er i en package, skal du helt korrekt importe den


bror:
Post lige hele din classpath
Avatar billede soelvpil Nybegynder
01. oktober 2002 - 18:12 #11
Har du husket at tilføje

<%@ page import="pakke.underpakke.klassenavn" %>

i din jsp-side? (skal naturligvis rettes til pakke- og klassenavn på dbhandleren?)
Avatar billede Slettet bruger
01. oktober 2002 - 18:18 #12
C:\Programmer\Forte\Development
Avatar billede Slettet bruger
01. oktober 2002 - 18:26 #13
nææ, den import har jeg ikke *GG*
det var måske en plan at gøre.
Avatar billede =maddog= Nybegynder
01. oktober 2002 - 18:34 #14
[lyden af en hånd der rammer pandebrasken]
eller hva' :-D
Avatar billede Slettet bruger
01. oktober 2002 - 18:39 #15
ja :-D
Nu kompilerer den i hvert fald, men nu får jeg en hel bunke fejl fra serveren. Er det fordi Tomcat sucks monkeyballs eller hva?
Avatar billede disky Nybegynder
01. oktober 2002 - 18:57 #16
soelvpil: det er ikke nødvendigt.

Man kan også bare sige pakke.underpakke.dbHandler osv.

bror:
Tomcat er hamrende besværlig at havde med at gøre, gør dig selv den tjeneste og downloade og installer Resin fra www.caucho.com den er uhyggeligt nemmere at arbejde med.
Avatar billede soelvpil Nybegynder
01. oktober 2002 - 20:02 #17
Rigtigt, det er ikke nødvendigt, men dog efter min mening lettere end at sige

pakke.underpakke.dbHandler = new pakke.underpakke.dbHandler();

Du skriver du får en bunke fejl fra serveren. Hvilke fejl? Jeg vil dog gætte på det har noget at gøre med, at du ikke har fortalt den, hvordan den skal forbinde til databasen.
Avatar billede soelvpil Nybegynder
01. oktober 2002 - 20:09 #18
Det er selvfølgelig rent gæt, men du får måske en ClassNotFoundException efterfulgt af nogle andre fejl. Har du husket at placere din databasedriver rigtigt. Den ligger oftest i en jar-fil, som så skal placeres under WEB-INF/lib (den kan også ligge andre steder, men standarden er dette katalog, og det er uanset hvilken server man benytter).
Avatar billede Slettet bruger
02. oktober 2002 - 11:42 #19
Jeg får følgende smidt i hovedet:

type Exception report

message Internal Server Error

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

exception

javax.servlet.ServletException: Database/DatabaseHandler
at bla bla bla
.
.
at bla bla bla

&

java.lang.NoClassDefFoundError: Database/DatabaseHandlerat bla bla bla
.
.
at bla bla bla
Avatar billede Slettet bruger
02. oktober 2002 - 11:53 #20
Det er lykkedes mig at hente data fra en access database til en jsp-side når jeg opretter forbindelsen i jsp-dokumentet.
Avatar billede disky Nybegynder
02. oktober 2002 - 12:54 #21
Aha, din DatabaseHandler liggere i Database package

skriv DatabaseHandler. foran din objekt dekleration.
Avatar billede Slettet bruger
02. oktober 2002 - 14:45 #22
Mit jsp-dokument ser således ud:

<%@page contentType="text/html"%>
<html>
<head><title>JSP Page</title></head>
<body>
<%@page import = "java.sql.*"%>
<%@page import = "Database.DatabaseHandler"%>

<%
  DatabaseHandler db = new DatabaseHandler();

if(db.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:PortalDB"))
{
  ResultSet RS = db.doQuery("select Navn from Projekt");
  while(RS.next())
{
%>
<br>Navn = <%=RS.getString("Navn")%>
<%
}
db.close();
}
%>



Burde det ikke virke når jeg bruger:
<%@page import = "Database.DatabaseHandler"%> ?

Eller er det mig der ikke er klar over hvad objekt deklerationen er?
Det er det nok :-D
Avatar billede disky Nybegynder
02. oktober 2002 - 14:53 #23
det ser umiddelbart rigtigt ud.

Ligger der en DatabaseHandler.class fil i følgende directory:
WEB-INF/classes/Database/ ??
Avatar billede Slettet bruger
02. oktober 2002 - 14:55 #24
Nej. DatabaseHandler.class klassen ligger i Database pakken som ligger i samme bibliotek som jsp-filen.
Avatar billede disky Nybegynder
02. oktober 2002 - 14:59 #25
ah, der er hele problemmet.

Dine class filer SKAL ligge i WEB-INF/classes og derunder i korrekte package struktur.

Så din Databasehandler.class SKAL ligge som:

WEB-INF/classes/Database/DatabaseHandler.class
Avatar billede Slettet bruger
02. oktober 2002 - 14:59 #26
Ja, jeg prøvede lige at flytte den og nu virker det.
Avatar billede Slettet bruger
02. oktober 2002 - 15:01 #27
Jeg siger mange tak for hjælpen :-)
soelvpil får lige lidt for at minde mig om den import :-D
Avatar billede Slettet bruger
02. oktober 2002 - 15:03 #28
Så alle packages og klasser man skal benytte i jsp, dem skal man lægge i WEB-INF/classes/....?
Avatar billede Slettet bruger
02. oktober 2002 - 15:06 #29
Skal databasen så også lægges i WEB-INF mappen for at det er helt korrekt?
Avatar billede disky Nybegynder
02. oktober 2002 - 15:22 #30
databasen skal ligge der hvor dit database program ønsker den skal være.
Avatar billede =maddog= Nybegynder
02. oktober 2002 - 17:56 #31
øhm. jeg var nu den første til at pointere import. men det er min fødselsdag så jeg giver gerne :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester