NadirMaroof
asked on
Problem with Beans
I am new to JSP, i m trying to build a simple application, using beans. This application is made with reference to Sun's Tutorials. I am using Tomcat to run JSP. The problem is with an error which i am not able to figure out. It says that the Bean class is not found, although its placed in the WEB-INF folder. I have used the package approach, but the error still persist. Here are the errors, first is the exception report and the secnod one is the root cause;
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
org.apache.jasper.JasperEx ception: NameHandler
at org.apache.jasper.compiler .BeanRepos itory.getB eanType(Be anReposito ry.java:18 3)
at org.apache.jasper.compiler .GetProper tyGenerato r.generate (GetProper tyGenerato r.java:102 )
at org.apache.jasper.compiler .JspParseE ventListen er$Generat orWrapper. generate(J spParseEve ntListener .java:834)
at org.apache.jasper.compiler .JspParseE ventListen er.generat eAll(JspPa rseEventLi stener.jav a:241)
at org.apache.jasper.compiler .JspParseE ventListen er.endPage Processing (JspParseE ventListen er.java:19 7)
at org.apache.jasper.compiler .Compiler. compile(Co mpiler.jav a:215)
at org.apache.jasper.servlet. JspServlet .loadJSP(J spServlet. java:552)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.l oadIfNeces sary(JspSe rvlet.java :177)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.s ervice(Jsp Servlet.ja va:189)
at org.apache.jasper.servlet. JspServlet .serviceJs pFile(JspS ervlet.jav a:382)
at org.apache.jasper.servlet. JspServlet .service(J spServlet. java:474)
at javax.servlet.http.HttpSer vlet.servi ce(HttpSer vlet.java: 853)
at org.apache.catalina.core.A pplication FilterChai n.internal DoFilter(A pplication FilterChai n.java:247 )
at org.apache.catalina.core.A pplication FilterChai n.doFilter (Applicati onFilterCh ain.java:1 93)
at org.apache.catalina.core.S tandardWra pperValve. invoke(Sta ndardWrapp erValve.ja va:243)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon textValve. invoke(Sta ndardConte xtValve.ja va:190)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .Certifica tesValve.i nvoke(Cert ificatesVa lve.java:2 46)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon text.invok e(Standard Context.ja va:2343)
at org.apache.catalina.core.S tandardHos tValve.inv oke(Standa rdHostValv e.java:180 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .ErrorDisp atcherValv e.invoke(E rrorDispat cherValve. java:170)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .ErrorRepo rtValve.in voke(Error ReportValv e.java:170 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .AccessLog Valve.invo ke(AccessL ogValve.ja va:468)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardEng ineValve.i nvoke(Stan dardEngine Valve.java :174)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.connec tor.http.H ttpProcess or.process (HttpProce ssor.java: 1012)
at org.apache.catalina.connec tor.http.H ttpProcess or.run(Htt pProcessor .java:1107 )
at java.lang.Thread.run(Threa d.java:536 )
root cause
java.lang.ClassNotFoundExc eption: NameHandler
at org.apache.catalina.loader .WebappCla ssLoader.l oadClass(W ebappClass Loader.jav a:1394)
at org.apache.catalina.loader .WebappCla ssLoader.l oadClass(W ebappClass Loader.jav a:1243)
at org.apache.jasper.compiler .BeanRepos itory.getB eanType(Be anReposito ry.java:18 1)
at org.apache.jasper.compiler .GetProper tyGenerato r.generate (GetProper tyGenerato r.java:102 )
at org.apache.jasper.compiler .JspParseE ventListen er$Generat orWrapper. generate(J spParseEve ntListener .java:834)
at org.apache.jasper.compiler .JspParseE ventListen er.generat eAll(JspPa rseEventLi stener.jav a:241)
at org.apache.jasper.compiler .JspParseE ventListen er.endPage Processing (JspParseE ventListen er.java:19 7)
at org.apache.jasper.compiler .Compiler. compile(Co mpiler.jav a:215)
at org.apache.jasper.servlet. JspServlet .loadJSP(J spServlet. java:552)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.l oadIfNeces sary(JspSe rvlet.java :177)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.s ervice(Jsp Servlet.ja va:189)
at org.apache.jasper.servlet. JspServlet .serviceJs pFile(JspS ervlet.jav a:382)
at org.apache.jasper.servlet. JspServlet .service(J spServlet. java:474)
at javax.servlet.http.HttpSer vlet.servi ce(HttpSer vlet.java: 853)
at org.apache.catalina.core.A pplication FilterChai n.internal DoFilter(A pplication FilterChai n.java:247 )
at org.apache.catalina.core.A pplication FilterChai n.doFilter (Applicati onFilterCh ain.java:1 93)
at org.apache.catalina.core.S tandardWra pperValve. invoke(Sta ndardWrapp erValve.ja va:243)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon textValve. invoke(Sta ndardConte xtValve.ja va:190)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .Certifica tesValve.i nvoke(Cert ificatesVa lve.java:2 46)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon text.invok e(Standard Context.ja va:2343)
at org.apache.catalina.core.S tandardHos tValve.inv oke(Standa rdHostValv e.java:180 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .ErrorDisp atcherValv e.invoke(E rrorDispat cherValve. java:170)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .ErrorRepo rtValve.in voke(Error ReportValv e.java:170 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .AccessLog Valve.invo ke(AccessL ogValve.ja va:468)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardEng ineValve.i nvoke(Stan dardEngine Valve.java :174)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.connec tor.http.H ttpProcess or.process (HttpProce ssor.java: 1012)
at org.apache.catalina.connec tor.http.H ttpProcess or.run(Htt pProcessor .java:1107 )
at java.lang.Thread.run(Threa d.java:536 )
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
org.apache.jasper.JasperEx
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at javax.servlet.http.HttpSer
at org.apache.catalina.core.A
at org.apache.catalina.core.A
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.connec
at org.apache.catalina.connec
at java.lang.Thread.run(Threa
root cause
java.lang.ClassNotFoundExc
at org.apache.catalina.loader
at org.apache.catalina.loader
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at javax.servlet.http.HttpSer
at org.apache.catalina.core.A
at org.apache.catalina.core.A
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.connec
at org.apache.catalina.connec
at java.lang.Thread.run(Threa
Or, if it is in a jar, put the jar into
WEB-INF/lib
WEB-INF/lib
ASKER
ya i have followed the right path, its
E:\JSP Learning\Using Beans\WEB-INF\classes\hell o\NameHand ler.class
the package name is hello.
E:\JSP Learning\Using Beans\WEB-INF\classes\hell
the package name is hello.
and your tomcat context is set to:
E:\JSP Learning\Using Beans\
?
Can you try a directory without spaces in it? (Java doesn't like spaces in filenames as a general rule) :-(
If that doesn't help, can you post your bean code?
E:\JSP Learning\Using Beans\
?
Can you try a directory without spaces in it? (Java doesn't like spaces in filenames as a general rule) :-(
If that doesn't help, can you post your bean code?
ASKER
yes my tomcat context is set to;
E:\JSPLearning
i have removed the spaces, UsingBeans is a folder inside JSPLearning, i have not mentioned UsingBeans in the context. My bean code is as follows.
package hello;
public class NameHandler{
private String username;
public NameHandler(){
username=null;}
public void setUserName(String name){
username = name;}
public String getUserName(){
return username;}
}
E:\JSPLearning
i have removed the spaces, UsingBeans is a folder inside JSPLearning, i have not mentioned UsingBeans in the context. My bean code is as follows.
package hello;
public class NameHandler{
private String username;
public NameHandler(){
username=null;}
public void setUserName(String name){
username = name;}
public String getUserName(){
return username;}
}
> i have not mentioned UsingBeans in the context
E:\JSP Learning\Using Beans\WEB-INF\classes\hell o\NameHand ler.class
should be:
E:\JSP Learning\WEB-INF\classes\h ello\NameH andler.cla ss
then (I think)
E:\JSP Learning\Using Beans\WEB-INF\classes\hell
should be:
E:\JSP Learning\WEB-INF\classes\h
then (I think)
ASKER
oh sorry, i thought that if JSPLearning is mentioned in the context, then its enough, now i have placed the WEB-INF folder to;
E:\JSP Learning\WEB-INF\classes\h ello\NameH andler.cla ss
but the first error still persist,
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
org.apache.jasper.JasperEx ception: Cannot find any information on property 'username' in a bean of type 'hello.NameHandler'
at org.apache.jasper.runtime. JspRuntime Library.ge tReadMetho d(JspRunti meLibrary. java:702)
at org.apache.jasper.compiler .GetProper tyGenerato r.generate (GetProper tyGenerato r.java:104 )
at org.apache.jasper.compiler .JspParseE ventListen er$Generat orWrapper. generate(J spParseEve ntListener .java:834)
at org.apache.jasper.compiler .JspParseE ventListen er.generat eAll(JspPa rseEventLi stener.jav a:241)
at org.apache.jasper.compiler .JspParseE ventListen er.endPage Processing (JspParseE ventListen er.java:19 7)
at org.apache.jasper.compiler .Compiler. compile(Co mpiler.jav a:215)
at org.apache.jasper.servlet. JspServlet .loadJSP(J spServlet. java:552)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.l oadIfNeces sary(JspSe rvlet.java :177)
at org.apache.jasper.servlet. JspServlet $JspServle tWrapper.s ervice(Jsp Servlet.ja va:189)
at org.apache.jasper.servlet. JspServlet .serviceJs pFile(JspS ervlet.jav a:382)
at org.apache.jasper.servlet. JspServlet .service(J spServlet. java:474)
at javax.servlet.http.HttpSer vlet.servi ce(HttpSer vlet.java: 853)
at org.apache.catalina.core.A pplication FilterChai n.internal DoFilter(A pplication FilterChai n.java:247 )
at org.apache.catalina.core.A pplication FilterChai n.doFilter (Applicati onFilterCh ain.java:1 93)
at org.apache.catalina.core.S tandardWra pperValve. invoke(Sta ndardWrapp erValve.ja va:243)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon textValve. invoke(Sta ndardConte xtValve.ja va:190)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .Certifica tesValve.i nvoke(Cert ificatesVa lve.java:2 46)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardCon text.invok e(Standard Context.ja va:2343)
at org.apache.catalina.core.S tandardHos tValve.inv oke(Standa rdHostValv e.java:180 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.valves .ErrorDisp atcherValv e.invoke(E rrorDispat cherValve. java:170)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .ErrorRepo rtValve.in voke(Error ReportValv e.java:170 )
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.valves .AccessLog Valve.invo ke(AccessL ogValve.ja va:468)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 64)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.core.S tandardEng ineValve.i nvoke(Stan dardEngine Valve.java :174)
at org.apache.catalina.core.S tandardPip eline.invo keNext(Sta ndardPipel ine.java:5 66)
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:472)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 43)
at org.apache.catalina.connec tor.http.H ttpProcess or.process (HttpProce ssor.java: 1012)
at org.apache.catalina.connec tor.http.H ttpProcess or.run(Htt pProcessor .java:1107 )
at java.lang.Thread.run(Threa d.java:536 )
E:\JSP Learning\WEB-INF\classes\h
but the first error still persist,
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
org.apache.jasper.JasperEx
at org.apache.jasper.runtime.
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.compiler
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at org.apache.jasper.servlet.
at javax.servlet.http.HttpSer
at org.apache.catalina.core.A
at org.apache.catalina.core.A
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.catalina.connec
at org.apache.catalina.connec
at java.lang.Thread.run(Threa
> but the first error still persist,
that's a different error, surely?
> Cannot find any information on property 'username' in a bean of type 'hello.NameHandler'
You have called it
"userName" in the bean, and (I'm guessing) "username" in the JSP ;-)
Tim
that's a different error, surely?
> Cannot find any information on property 'username' in a bean of type 'hello.NameHandler'
You have called it
"userName" in the bean, and (I'm guessing) "username" in the JSP ;-)
Tim
> public void setUserName(String name){
...
> public String getUserName(){
See? Capital "N" in name for the get and set method ;-)
Tim
...
> public String getUserName(){
See? Capital "N" in name for the get and set method ;-)
Tim
ASKER
hey, i had two errors, if u look at my first post. And i really dont understand that what difference does it make with capital N in the method name ;-)
can u plz elaborate a little, i have used "username" everywhere, which is an attribute of type String in my bean.
can u plz elaborate a little, i have used "username" everywhere, which is an attribute of type String in my bean.
ASKER
sorry Tim, it worked, but still i would like u to explain why this has happened. the program is running fine now.
ASKER
and 'U' is also in caps, why its not making much effect ? why only 'N'
when you use JSP to get an attribute (or set one) using JSP tags, it uses reflection to call the correct method name. So for getters and setters, if you have a String variable called
myVariable
then you need to write a method which looks like
public void getMyVariable()
and one which looks like
public String setMyVariable( String var )
Notice how you make the first letter after "get" or "set" capital.
So for "username", you need to write:
public String getUsername(){
and
public void setUsername(String name){
Notice, the capital "U" (as it is after "get" and "set"), but the lowercase "n", as you want to call your variable "username", NOT "userName"
Then,
<jsp:getProperty name="username" property="username"/>
will work :-)
> hey, i had two errors, if u look at my first post.
Yeah, both those errors are because tomcat couldn't find the "NameHandler" class... The error you posted just now, is because it cannot find the method "getUsername" (or setUsername), as you had a capital "N" in the method names
Hope this explains it a bit better!!
Tim
myVariable
then you need to write a method which looks like
public void getMyVariable()
and one which looks like
public String setMyVariable( String var )
Notice how you make the first letter after "get" or "set" capital.
So for "username", you need to write:
public String getUsername(){
and
public void setUsername(String name){
Notice, the capital "U" (as it is after "get" and "set"), but the lowercase "n", as you want to call your variable "username", NOT "userName"
Then,
<jsp:getProperty name="username" property="username"/>
will work :-)
> hey, i had two errors, if u look at my first post.
Yeah, both those errors are because tomcat couldn't find the "NameHandler" class... The error you posted just now, is because it cannot find the method "getUsername" (or setUsername), as you had a capital "N" in the method names
Hope this explains it a bit better!!
Tim
Phew! What a lot of typing for 20 points ;-)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thank you Tim, you really helped me, well ya it was a bit for 20 points, but thanx anyways :-)
cheers
cheers
No worries :-) Glad I could help :-)
Good luck with it!!
Tim
Good luck with it!!
Tim
is the class in:
WEB-INF/classes/your/packa
?
It needs to be in WEB-INF/classes, not just WEB-INF