Avatar billede grave Nybegynder
10. oktober 2001 - 18:28 Der er 23 kommentarer og
1 løsning

session bean ?

Jeg har en servlet der sætter nogle ting i en bean og disse ting skal jeg hente fra en jsp side hvodan kan dette lade sig gøre ?
Avatar billede agony Nybegynder
10. oktober 2001 - 18:38 #1
i jsp filen skriver du f.eks.

<jsp:useBean id=\"users\" scope=\"session\" class=\"dk.ifad.DocServer.users\" />

så har du en bean med session scope ved navn users.

Din bean er jo en JAVA class med get og set metoder. I din jsp fil kan du så f.eks skrive

String name =\"keld\";
users.setName(name);


Avatar billede grave Nybegynder
10. oktober 2001 - 18:41 #2
ja..men
hvis jeg har lavet en users.setName(name) fra en servlet
og fra en jsp side i samme session skal lave en name = users.getName()
er name = null i jsp siden
Avatar billede agony Nybegynder
10. oktober 2001 - 18:43 #3
ok det burde virke. Må se lidt kode ??
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 18:43 #4
i servletten husker du så at gemme den på session objektet efter du har modificeret den?
Avatar billede grave Nybegynder
10. oktober 2001 - 18:43 #5
når jeg laver:
<jsp:useBean id=\"users\" scope=\"session\" class=\"dk.ifad.DocServer.users\" />
bliver der lavet en UserBean users = new UserBean ()
Avatar billede grave Nybegynder
10. oktober 2001 - 18:45 #6
gæmme bean\'en på session objektet hvordan gør jeg det ?
Avatar billede agony Nybegynder
10. oktober 2001 - 18:46 #7
dk.ifad.DocServer.users  skal laves om så den viser hvor din class ligger
Avatar billede grave Nybegynder
10. oktober 2001 - 18:49 #8
her er min servlet:

package dk.test.upload;

import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;
import com.oreilly.servlet.*;

public class upload extends HttpServlet
{
        MultipartRequest multi = null;
  public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException,ServletException
  {
        res.setContentType(\"text/html\");
        uploadBean uplBean = new uploadBean();

        PrintWriter out = res.getWriter();
        String filename = null;
        long filesize = 0;
        try {

                out.println(\"<html>\");
                out.println(\"<head><title>Upload</title></head>\");
                out.println(\"<body>\");
                out.println(\"<font color=#000080 face=verdana size=10><b>Upload is done !</b></font>\");

                multi = new MultipartRequest(req,\"/var/tmp\",200*1024*1024);

                uplBean.setMulti(multi);

                HttpSession session = req.getSession(true);
                session.setAttribute(\"multi\", multi);
//              out.println(\"<script>window.open(\'/cust/uploadBar.jsp\',\'x\',\'scrollbars,status=no,width=1000,height=350\');</script>\");
                Enumeration params = multi.getParameterNames();
                while (params.hasMoreElements()) {
                        String name = (String)params.nextElement();
                        String value = multi.getParameter(name);
                        out.println(name+\" = \"+value);
                }
                Enumeration files = multi.getFileNames();
                while(files.hasMoreElements()) {
                        String name = (String)files.nextElement();
                        filename = multi.getFilesystemName(name);
                        Thread.sleep(2000);
                        File f = multi.getFile(name);
                        filesize = f.length();
                        if(f != null) {
                                out.println();
                        }
                }
                uplBean.setFileName(filename);
                uplBean.setFileSize(filesize);
        }catch(Exception e) { e.printStackTrace(out); }
        out.println(\"</body></html>\");
        }
}
Avatar billede agony Nybegynder
10. oktober 2001 - 18:52 #9
prøv at sætte en værdi i din bean og tjek om den endnu sender null retur.
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 18:54 #10
uden at kende vildt meget til din uploadBean.
Er det så ikke den du skal sætte på din session, og ikke din multi ?
Avatar billede grave Nybegynder
10. oktober 2001 - 18:56 #11
jeg sætter uplBean.setFileName(filename);

og har en simpel jsp der henter den således:

<%@ page import=\"java.util.*,java.io.*,com.oreilly.servlet.*\" %>

<jsp:useBean id=\"uploadBean\" scope=\"session\" class=\"dk.test.upload.uploadBean\" />
<jsp:setProperty name=\"uploadBean\" property=\"*\"/>
<%
        MultipartRequest multi = uploadBean.getMulti();
        String fileName = uploadBean.getFileName();
%>
<html><body>
<%= fileName %>


</body></html>
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 18:57 #12
så er det fordi du sætter multi, og ikke uplBean på din session
Avatar billede grave Nybegynder
10. oktober 2001 - 19:01 #13
setMulti er en ting i min bean der bare skal gæmme en MultiPartRequest det samme med setFileName of setFileSize
disse tre skal jeg bruge på min jsp side !

hvor skal jeg definere at min bean skal være på min session
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 19:03 #14
du skal erstatte
HttpSession session = req.getSession(true);
                session.setAttribute(\"multi\", multi);

med
HttpSession session = req.getSession(true);
                session.setAttribute(\"uploadBean\", uplBean);
Avatar billede grave Nybegynder
10. oktober 2001 - 19:18 #15
jeg har nu sat:
session.setAttribute(\"uploadBean\", uplBean);

og har lavet en:
<jsp:useBean id=\"uploadBean\" scope=\"session\" class=\"dk.test.upload.uploadBean\" />
<jsp:getProperty name=\"uplBean\" property=\"fileName\" />
og den er stadig null !!!!

jeg tror der er noget jeg ikke fatter helt !!
Avatar billede grave Nybegynder
10. oktober 2001 - 19:19 #16
sorry
session.setAttribute(\"uplBean\", uplBean);
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 19:22 #17
du skal lige have styr på dine navne.
du skal i din servlet lave
session.setAttribute(\"uploadBean\",uplBean).
Din reference til beanen i jsp´en er fin nok, men du referer ikke rigtigt nok, når du skal hente en attribut fra den.
du skal bruge <jps:getProperty name=\"uploadBean\" property=\"fileName\"/>
Avatar billede grave Nybegynder
10. oktober 2001 - 19:28 #18
når jeg så laver:
<jps:getProperty name=\"uploadBean\" property=\"fileName\"/>
skal jeg så ikke lave en uploadBean.getFileName ?
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 19:32 #19
de gør det samme
Avatar billede grave Nybegynder
10. oktober 2001 - 19:34 #20
kan det være at det er fordi at
uplBean.setFileName(filename);
uplBean.setFileSize(filesize);

bliver sat efter at

session.setAttribute(\"uploadBean\", uplBean);
bliver sat
Avatar billede lbhansen Nybegynder
10. oktober 2001 - 19:39 #21
men hvis det er fordi de ligger /uploadbar.jsp, og den bliver kaldt, før du er færdig med din servlet kan der være nogle problemer
Avatar billede grave Nybegynder
10. oktober 2001 - 19:52 #22
det er det jeg troede jeg også så jeg har prøvet at lægge en Thread.sleep(3000) ind i uploadbar.jsp inden jeg kører <jsp:useBean.....\'

fileName er stadig null !!
Avatar billede mipe1 Nybegynder
10. oktober 2001 - 20:51 #23
ok jeg er lidt forvirret over dialogen i har haft i gang, så jeg vil egentlig prøve at svare på dit oprindelige spm.

I din servlet
doPost(...){
...
EtEllerAndetObjekt objekt = new EtEllerAndetObjekt();
//sæt objekt i session
request.getSession().setAttribute(\"objektet\",objekt);

//forward til den jsp side som skal modtage objektet
request.getRequestDispatcher(\"enjspside.jsp\").forward(request,response);
...
}

enjspside.jsp, som skal modtage objektet:
<jsp:useBean id=\"objektet\" scope=\"session\" class=\"EtEllerAndetObjekt\" />

herefter skulle du kunne tilgå det også med get-property

I din servlet du har postet, vil du da både sætte et objekt i session og generere et output?

Men du erklærer jo også din bean i session før du laver kaldet, hvis du skal arbejde på det samme objekt skal du så ikke i din servlet have fat i request.getSession().getAttribute(\"...\")

og arbejde videre med dette objekt?

Men det virker lidt underligt det der med at rode præsentationen ned i servleten

Avatar billede grave Nybegynder
09. november 2001 - 09:53 #24
g
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