Java beans

16 respostas
V

estou tentando usar jsp com java beans mas o que esta acontecendo é que na hora que vou executar o arquivo jsp parece que ele nao encontra a classe.

estou usando tomcat 5

e a estrutura do caminho esta assim

tomcat
-webapps
----bean
-------StringBean.jsp
-------WEB-INF
------------web.xml
------------classes
----------------teste.class

e o arquivo web.xml esta assim:

<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
http://java.sun.com/dtd/web-app_2_3.dtd”>

<web-app>

<!-- Indica ao Tomcat as Servlets da nossa aplicacao -->

<servlet>

<servlet-name>teste</servlet-name>

<servlet-class>teste</servlet-class>

</servlet>

<servlet-mapping>
<servlet-name>teste</servlet-name>
/teste
</servlet-mapping>

<session-config>
<session-timeout>30</session-timeout> <!-- 30 minutes -->
</session-config>

</web-app>

mas ele nao encontra o arquivo teste.class
estou fazendo isso:<jsp:useBean id=“t” class=“teste” />

como faço para resolver este problema?

16 Respostas

black_fire

Afinal de contas vc esta usando um Bean, ou um servlet?

se sua classe teste está extendendo HttpServlet então o que vc tá fazendo parece estar correto.

Agora se sua classe é apenas um Bean, vc não declara ele no web.xml chama ele direto de dentro da página jsp.

Um abraço…
PS: use a tag para exmplos de códigol…

black_fire
Veja um exemplo:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE web-app
PUBLIC &quot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot;
&quot;http&#58;//java.sun.com/dtd/web-app_2_3.dtd&quot;&gt;

&lt;web-app&gt;

&lt;!-- Indica ao Tomcat as Servlets da nossa aplicacao --&gt;

  &lt;servlet&gt;
    &lt;servlet-name&gt;teste&lt;/servlet-name&gt;
    &lt;servlet-class&gt;teste&lt;/servlet-class&gt;
  &lt;/servlet&gt;

  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;teste&lt;/servlet-name&gt;
    /teste
  &lt;/servlet-mapping&gt;

  &lt;session-config&gt;
    &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;!-- 30 minutes --&gt;
  &lt;/session-config&gt;

&lt;/web-app&gt;
V

estou usando um bean e não um servlet.
eu ja tentei colocar o bean na mesma pasta de onde está o .jsp e sem declarar no web.xml, mas mesmo assim ele parece não encontrar o bean

L

Olá vrskate, tens como postar o JSP para darmos uma olhada.

O Black_fire está certo em afirmar que não é necessário configurar seu bean no web.xml.

Deve ser alguma coisa na chamada do bean dentro da jsp e se possível també poste o Bean.

Assim fica mais fácil de conseguirmos a solução para o seu problema. :wink:

L

Só mais um detalhe, mantenha o Bean na pasta classes. É lá que ele tem que ficar.

V

tentei tirar o web.xml e manter o bean na pasta classes mas tambem nao funcionou...
bom vou colocar o codigo do bean e do jsp aqui pra voces verem..

StringBean.jsp
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;/head&gt;

&lt;body bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot;&gt;
&lt;p&gt;&lt;font size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;b&gt;Usando JAVA Beans &lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;

&lt;jsp&#58;useBean id=&quot;t&quot; class=&quot;teste&quot; /&gt;

&lt;/body&gt;
&lt;/html&gt;
teste.class
public class teste&#123;

private String message = &quot;Sem mensagem&quot;;

public String getMessage&#40;&#41;&#123;
return&#40;message&#41;;
&#125;

public void setMessage&#40;String message&#41;&#123;
this.message = message;
&#125;

&#125;
V

ah e os erros que dão são esses:

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 11 in the jsp file: /StringBean.jsp

Generated servlet error:
[javac] Compiling 1 source file

C:jakarta-tomcat-5.0.16workCatalinalocalhostBeanorgapachejspStringBean_jsp.java:41: cannot resolve symbol
symbol : class teste
location: class org.apache.jsp.StringBean_jsp
teste t = null;
^

An error occurred at line: 11 in the jsp file: /StringBean.jsp

Generated servlet error:
C:jakarta-tomcat-5.0.16workCatalinalocalhostBeanorgapachejspStringBean_jsp.java:43: cannot resolve symbol
symbol : class teste
location: class org.apache.jsp.StringBean_jsp
t = (teste) pageContext.getAttribute(“t”, PageContext.PAGE_SCOPE);
^

An error occurred at line: 11 in the jsp file: /StringBean.jsp

Generated servlet error:
C:jakarta-tomcat-5.0.16workCatalinalocalhostBeanorgapachejspStringBean_jsp.java:45: cannot resolve symbol
symbol : class teste
location: class org.apache.jsp.StringBean_jsp
t = new teste();
^
3 errors

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:458)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:552)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

L
"vrskate":
tentei tirar o web.xml e manter o bean na pasta classes mas tambem nao funcionou... bom vou colocar o codigo do bean e do jsp aqui pra voces verem.. StringBean.jsp
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;/head&gt;

&lt;body bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot;&gt;
&lt;p&gt;&lt;font size=&quot;4&quot; face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;b&gt;Usando JAVA Beans &lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;

&lt;jsp&#58;useBean id=&quot;t&quot; class=&quot;teste&quot; /&gt;

&lt;/body&gt;
&lt;/html&gt;
teste.class
public class teste&#123;

private String message = &quot;Sem mensagem&quot;;

public String getMessage&#40;&#41;&#123;
return&#40;message&#41;;
&#125;

public void setMessage&#40;String message&#41;&#123;
this.message = message;
&#125;

&#125;

Bom, aglumas dicas:

:arrow: Inclua um construtor no teste.class
Ex: public teste(){ }

:arrow: Coloque o ID do useBean como o nome do class
Ex: <jsp:useBean id="teste" class="teste" />

:arrow: Passe o <jsp:useBean id="teste" class="teste" /> antes da tag HTML

:arrow: Inclua um scopo para o teu bean
Ex: <jsp:useBean id="teste" class="teste" scope="session" />

L

JSP para teste:

&lt;jsp&#58;useBean id=&quot;teste&quot; class=&quot;teste&quot; scope=&quot;session&quot; /&gt; 
&lt;html&gt; 
&lt;head&gt; 
&lt;title&gt;Untitled Document&lt;/title&gt; 
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt; 
&lt;/head&gt; 

&lt;body&gt; 
&lt;p&gt;&lt;b&gt;Usando JAVA Beans &lt;/b&gt;&lt;/font&gt;&lt;/p&gt; 
&lt;/body&gt; 
&lt;/html&gt;
V

Lucashgt, eu tentei com as suas dicas mais tambem não funcionou porque ele nao encontra a classe…
Você consegue executar isso no seu micro?
me fala os diretorios em que você coloca o seus beans e os .jps e será que eu não preciso configurar alguma coisa no tomcat?

L

Sim consegui.

Vou fazer o seguinte, quando chegar em casa hoje te envio tudo certinho, pois agora durante o dia estou no serviço e não trabalho com Java aqui.

Quais foram os erros que apareceram para ti agora?

L

E ae cara, seguinte:

-> Mantive a mesma estrutura que você tem, só fiz algumas alterações:

webapps
----bean
-------StringBean.jsp
-------WEB-INF
------------web.xml
------------classes
----------------Teste.class <— Padrão para nomenclatura de classe

public class Teste&#123;
  private String msg = "sem msg";

  public String getMsg&#40;&#41;&#123; 
     return msg; 
  &#125; 

  public void setMsg&#40;String msg&#41;&#123; 
    this.msg = msg; 
  &#125; 
&#125;

//------------------------------------

// StringBean.jsp

&lt;jsp&#58;useBean id="meuTeste" class="Teste" scope="session" /&gt; 
&lt;html&gt; 
&lt;head&gt; 
&lt;title&gt;Untitled Document&lt;/title&gt; 
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt; 
&lt;/head&gt; 

&lt;body&gt; 
&lt;p&gt;&lt;b&gt;Usando JAVA Beans &lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br&gt;
&lt;a href="UseStringBean.jsp"&gt;Clique aqui&lt;/a&gt;
&lt;/body&gt; 
&lt;/html&gt;

// UseStringBean.jsp

&lt;html&gt; 
&lt;head&gt; 
&lt;title&gt;Untitled Document&lt;/title&gt; 
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt; 
&lt;/head&gt; 

&lt;body&gt; 
O atributo msg de seu Bean vale&#58; &lt;jsp&#58;getProperty name="meuTeste" property="msg" /&gt;
&lt;/body&gt; 
&lt;/html&gt;

:arrow: Você deve manter o arquivo web.xml dentro da pasta WEB-INF
:arrow: Não é necessário adicionar seu Bean no web.xml
:arrow: O Bean deve estar dentro da pasta classe

Falow! :wink:

V
este negócio já esta me dando nos nervos eu ainda não consegui fazer, tentei com o codigo igualzinho o seu mas tb nao funciona, ainda dá esse mesmo erro:
Generated servlet error&#58;
    &#91;javac&#93; Compiling 1 source file

C&#58;jakarta-tomcat-5.0.16workCatalinalocalhostBeanorgapachejspStringBean_jsp.java&#58;40&#58; cannot resolve symbol
symbol  &#58; class Teste 
location&#58; class org.apache.jsp.StringBean_jsp
      Teste meuTeste = null;

tipo, você coloca alguma coisa dentro do web.xml?
quando eu crio um web.xml vazio ele não deixa eu acessar a pagina /Bean e se eu deletar o web.xml ele deixa mas ocorre esse erro acima.

rodrigo_gomes

cara, eu tow com esse mesmo problema…jah nao sei mais o que fazer tbm…jah tentei de tudo

rodrigo_gomes

ateh que enfim esse troço funfou

e a unicao coisa que fiz foi colocar meu bean num package

e na jsp eu dei um import nesse package

agora porque só funcionou assim, eu nao sei…mas funcionou

valeu

N

Ae galera, existe uma explicação simples para isso, eu penei para aprender mas entendi direitinho o que acontece.

Se o seu bean não estiver em um package você não consegue importar ele para seu jsp porque o jsp se encontra no package org.apache.jsp, ou seja, o seu jsp estaria procurando o seu bean no package org.apache.jsp, o que não é verdade.

Você não pode fazer algo como:

&lt;%@page import="mybean" %&gt;

Porque o bean não está no package default do jsp, ou seja org.apache.jsp.

É necessário então utilizar como:

&lt;%@page import="mypackage.mybean" %&gt;

Pensem nisso ! :wink:

(Com essa resposta me tornei Javaguru, huahuahuahuahuahuah, espero que ajude)

Criado 25 de fevereiro de 2004
Ultima resposta 8 de mar. de 2004
Respostas 16
Participantes 5