Avatar billede dennish Nybegynder
05. december 2005 - 21:50 Der er 8 kommentarer og
1 løsning

Bean, kalde metode på bean fra servlet

Hej
Jeg sidder og roder lidt med beans.

Jeg har følgende design(efter en endnu en revurdering)

JSP -> servletter(Controller) -> sessionBeans - > EntityBeans
JSP -> bean

Prøver at oprette en bean på min index.jsp side. Jeg har så et objekt så så kan dele imellem mine andre jsp sider. Virker som en god ide, idet jeg har en indkøbskurv.

*** UserBean ***

package common;

   
public class UserBean implements java.io.Serializable 
{
    private String username ="";
   
   
    public UserBean()
    {
    }
   
    public void setUsername(String name)
    {
        this.username = name;
    }
    public String getUsername()
    {
        return username;
    }
   
   
   
}


*** index.jsp ***

<%@ page import ="common.*"%>
<jsp:useBean id= "user" scope='session' class='common.UserBean' type="common.UserBean" />
<jsp:setProperty name="user" property="*" />
<html>
<body>

<%
user.setUsername("dennis");// setter usrName, test
%>


<form name="" action="login" method="post">
<label for="login">Login Here:

<!-- "Login" mapper til LoginServlet, sat i web.xml -->

<input type="text" name="Login" id="username" class="username" maxlength="15"/><br />
<input type="password" name="Password" id="password" class="password" maxlength="15"/><br /></label>
<input type="submit" name="Submit" value="Login" class="submit"/>
<input type="submit" onclick="this.form.action='createaccount.jsp'" value="Create">
</form>
</body>
</html>

*** LoginServlet.java ***

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
UserBean b = (UserBean) request.getAttribute("user");
       
b.setUsername("Boerge");
Giver en null point exception ????????????

request.getRequestDispatcher("developer.jsp").forward(request,response);
...

}

*** developer.jsp ***

<%@ page import ="common.*"%>
<jsp:useBean id= "user" scope='session' class='common.UserBean' type="common.UserBean" />

<%
out.println(user.getUsername()); // virker kan godt dele bean/objektet imellem jsp sider. 

%>

*** Spørgsmålet: **
jeg har fulgt:
http://66.249.93.104/search?q=cache:cAnAyHYoOSIJ:java.sun.com/developer/onlineTraining/JSPIntro/contents.html+JSP,+Servlets,+usebean,+how+to&hl=en

men jeg får en null pointer exception når jeg prøver at kalde en set metode i min LoginServlet.java ?? Synes da min kode virker rigtig.

Jeg har da defineret min bean/objekt user og opretet en instans af objektet. Kan godt tilgå user fra mine andre JSP sider men ikke fra min servlet

Nogen der har en idet om hvad dedr går galt ?
Avatar billede dennish Nybegynder
05. december 2005 - 21:57 #1
mener da også at jeg har <jsp:setProperty name="user" property="*" />
rigtigt idet * = minus brugen af value attributten og alle matchende request parametre brugs til at sætte property på bean'en
Avatar billede arne_v Ekspert
05. december 2005 - 22:34 #2
Lyder som om session forsvinder.

Prøv og udskriv session id i både JSP og servlet !

(cookies disablet og ingen URL rewriting ?)
Avatar billede dennish Nybegynder
05. december 2005 - 23:36 #3
Hvis det her er URL rewriting:
<a href="<%= response.encodeURL("login.jsp") %>"> Så NEJ det bruger jeg ikke

Har lavet <% out.println("session"+request.getSession()); %>
på index.jsp:
=  sessionorg.apache.catalina.session.StandardSessionFacade@178b0f9

og på developer.jsp:

=  sessionorg.apache.catalina.session.StandardSessionFacade@178b0f9

prøver lige at lave en print.out på min servlet
Avatar billede dennish Nybegynder
05. december 2005 - 23:39 #4
En ny session
(har udkommenteret request.getRequestDispatcher("developer.jsp").forward(request,response);
for at se min out.print i min servlet

Resultatet er således:

index.jsp

sessionorg.apache.catalina.session.StandardSessionFacade@39b3a2

LoginServlet.java
sessionorg.apache.catalina.session.StandardSessionFacade@39b3a2
Avatar billede dennish Nybegynder
06. december 2005 - 03:27 #5
arne>> Har lige kigger på det her link.
http://www.javaworld.com/javaworld/jw-03-2000/jw-0331-ssj-forms.html

Forstår stadigvæk ikke hvorfor jeg ikke kan:
UserBean b = (UserBean) request.getAttribute("user");

Har også slået cookies fra
Avatar billede arne_v Ekspert
06. december 2005 - 16:36 #6
cookies bør nok være slået til !
Avatar billede dennish Nybegynder
06. december 2005 - 19:23 #7
arne>> har slået cookies til, men det var ikke det:
Har slettet alt min kode og lavet eksemplet fra JavaWorld. Det virker på Tomcat 5.5. Jeg kan nu lave en bean(med ger'er og setter), kalde en servlet der kalder get og set'er på bean en. Vil så prøve senere at smide min source på Jboss og se hvad der sker. Når jeg har fået alt til at virke smider jeg lige koden, så andre også kan få gave af den :-)
Avatar billede soelvpil Nybegynder
22. december 2005 - 10:09 #8
Din bean havde sessions-scope i jsp-siden (scope="session")

Derfor kan du i din serlvet ikke lave request.getAttribute("user)

du skulle i stedet have brugt request.getSession().getAttribute("user")
Avatar billede arne_v Ekspert
31. december 2005 - 14:11 #9
ah - der var en lille vigtig detalje !
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