webForumDet fria alternativet

Bönor

12 svar · 563 visningar · startad av SPiN

SPiNMedlem sedan mars 20007 896 inlägg
#1

Halloj!

Jag har nyligen satt mig in i JSP, och har nu ett par basic-frågor om bönor.

- Ska jag kompilera mina Java-klasser som ska användas som bönor, och lägga .class-filerna i en speciell katalog?
- Ska Java-klasserna ärva, implementera från någon speciell klass/interface?
- Måste de ingå i något package, eller kan jag anropa dem med <jsp:useBean id="minBean" class="minBeanKlass" scope="page">?

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

jorgenMedlem sedan feb. 20012 412 inlägg
#2

- Ska jag kompilera mina Java-klasser som ska användas som bönor, och lägga .class-filerna i en speciell katalog?

Ja, för att använda javabeans ska du kompilera källkoden och placera klass-filen i katalogen:

(gäller tomcat)

<server_root>/din_jspkatalog/Web-inf/classes

r: observera att sökvägen blir en annan i webläsaren: tex
http://localhost:8080/din_jspkatalog/servletens namn eller jsp-sidan som anropar bönan

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 nov 2001]

jorgenMedlem sedan feb. 20012 412 inlägg
#3

- Måste de ingå i något package, eller kan jag anropa dem med <jsp:useBean id="minBean" class="minBeanKlass" scope="page">

Det räcker, om du vill ha räckvidden "page". Du kan ju välja "session", "request" eller "application" också som angiven räckvidd.

Om jag bara hittar på något kan du hämta in bönan med tex:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<%= counter.getCount() %>

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 nov 2001]

jorgenMedlem sedan feb. 20012 412 inlägg
#4

- Ska Java-klasserna ärva, implementera från någon speciell klass/interface?

Vill du ärva egenskaper från en färdig klass till din böna är det ju bara att importera den klassen med tex:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
import java.lang.Float;

precis som i andra applicationer. Vill du skapa egna super- och subklasser till bönan kan du ju oxxå göra det.

Ps. delade upp det i 3 svar för att skilja frågorna åt :e

r: glömde ett ;

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 07 nov 2001]

SPiNMedlem sedan mars 20007 896 inlägg
#5

Tack för alla svaren, jorgen! :)

Nu ska jag sätta mig in i bönornas underbara (?) värld. :e

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

SPiNMedlem sedan mars 20007 896 inlägg
#6

Nu har jag äntligen lyckats få tummen ur och börjat pilla med bönor, dock fungerar det inte. Jag kör inte på en lokal Tomcat-server, utan på ett Webhotells, närmare bestämt space2u.com's.

Felmeddelandet lyder:

org.apache.jasper.JasperException: Unable to compile /usr/local/tomcat/work/www.command.nu/ROOT/JavaPortalen/index_1.java:56: Class JavaPortalen.Template not found.
Template template = null;
^
/usr/local/tomcat/work/www.command.nu/ROOT/JavaPortalen/index_1.java:59: Class JavaPortalen.Template not found.
template= (Template)
^
/usr/local/tomcat/work/www.command.nu/ROOT/JavaPortalen/index_1.java:64: Class JavaPortalen.Template not found.
template = (Template) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "Template");
^
3 errors

Så här ser katalogstrukturen ut:

- [root] |dir|
    - jallah |dir|
        - WEB-INF |dir|
            - Template.class
        - minjsp.jsp

Provade också med:

- [root] |dir|
    - jallah |dir|
        - minjsp.jsp
    - WEB-INF |dir|
        - Template.class

Vad kan vara fel?

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

jorgenMedlem sedan feb. 20012 412 inlägg
#7

Hej!

Har du registrerat katalogen jallah som webbapplication?

Borde se ut så här:

- [root] |dir|
- jallah |dir|
- minjsp.jsp
- WEB-INF |dir|
- classes |dir|
- Template.class

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

SPiNMedlem sedan mars 20007 896 inlägg
#8

Tack för ditt svar, men hur kan jag registrera en web-app när jag inte kör lokalt? Jag har inte tillgång till configurationsfiler eller liknande, jue...

------------------
SPiN, bjorne.w@telia.com

-- Tekniska framsteg är som en yxa i händerna på en kriminell galning / Albert Einstein --

jorgenMedlem sedan feb. 20012 412 inlägg
#9

Tja!

Jag har för mig att man har tillgång till filen även icke lokalt:

[root]/conf/server.xml

Precis efter posten example i tomcats configuationsfil server.xml skriver du:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<Context path="/jallah" docBase="jallah" defaultSessionTimeOut="30" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false" />

Fråga mig inte bara vad den gör, för det har jag ingen susning om ;)

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

LimeMedlem sedan sep. 2001961 inlägg
#10

Vill du ärva egenskaper från en färdig klass till din böna är det ju bara att importera den klassen med tex:

                         Kod:


                         import java.lang.Float;

precis som i andra applicationer. Vill du skapa egna super- och subklasser till bönan kan du ju oxxå göra det.

Ville bara pepåka att "import" på inget sätt gör att man ärver från en klass. Det enda den gör är att utöka namnrymden så man slipper skriva ut "distinguished name" hela tiden.

Ärver gör man med "extends" om det skall vara en subklass eller med "implements" om det är ett interface.

/Lime

------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk

jorgenMedlem sedan feb. 20012 412 inlägg
#11

Tack för ditt förtydligande lime.

Jag menade inte att man ärvde med import, utan att man är tvungen att "utöka namnrymden" om jag får använda dina egna ord, för att sedan kunna ärva från en redan befintlig klass. Gör du inte en import på klassen, då har du ju inte den tillgänlig heller. ;)

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

spangoMedlem sedan juni 20008 205 inlägg
#12

Joorå...
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
public class Blargha extends foo.Bar implements baz.Quux{
...
}

------------------
You can be a coward for a few minutes, or dead forever. /Rincewind

SPiNMedlem sedan mars 20007 896 inlägg
#13

Så var man tillbaka med flera bön-frågor :)

Om jag skapar en böna, kan jag på nåt sätt få flera instanser av den klassen - eller måste jag skapa nya bönor?

Som det är nu gör jag så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<jsp:useBean id="minBona" scope="page" class="minKlass">
</jsp:useBean>
<jsp:useBean id="minBona2" scope="page" class="minKlass">
</jsp:useBean>

Det ser inte snyggt ut, kanske är det inte heller speciellt smart. Går det att komma förbi det, eller ska jag skapa ett eget package och importera det istället?

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

129 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)