Vocês já viram isso?

7 respostas
S
E aí galera beleza? Estou tendo o seguinte problema:
<?xml version="1.0" encoding="UTF-8"?>
<!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>
    
    <servlet>
        <servlet-name>ServletInsere</servlet-name>     
        <servlet-class>acesso.ServletInsere</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ServletInsere</servlet-name>
        <url-pattern>/servlet/ServletInsere</url-pattern>
    </servlet-mapping>  
    
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>
</web-app>
Aparentemente no meu web.xml não ha nada de errado. Pelo que sei não há mas quando envio o link:
<form action="servlet/ServletInsere" method=post>
ou
<form action="/servlet/ServletInsere" method=post>
O tomcat dá o seguinte aviso:
The requested resource (/locadora/publico/servlet/ServletInsere) is not available.

No resin dá o mesmo erro, ou seja, o conteiner não encontra meu servlet. Mas coloquei ele no lugar certo:

WEB-INF/classes/acesso/ServletInsere.class

Estou usando o tomcat 5.0.25, 4.1.30, resin 3 e nos logs deles não diz nada. Alguém que já tenha passado por isso ou tenha visto algum erro meu até aqui pode me ajudar?

Dede já agradeço!!

7 Respostas

J

Bom, vc mapeou ele como ServletInsere, entao nao precisa passar o /servlet/ServletInsere, se vc usar soh ServletInsere deve funcionar!

acho que éisso ai!

=) cya! =)

D

vc pode tentar colocar ‘…/’ antes do endereço. que faz ele procurar um diretorio acima. Ex:

se ele estiver procurando o servlet em :
/locadora/publico/servlet/ServletInsere

e na era pra ser:
/locadora/servlet/ServletInsere

coloque o formulario assim:

<form action="../servlet/ServletInsere" method='post'>

vc tambem pode colocar:

action="../../servlet/ServletInsere"

que faz ele voltar dois niveis.

blz :wink:

S

E aí galera beleza?

Deu certo coloquei assim:

../servlet/ServletInsere

mas, ficou uma sombra de dúvida:

Se eu mapiei o servlet para

/servlet/ServletInsere

No action não tenho que colocar

action="/servlet/ServletInsere",
pois foi assim que mapiei.

Desculpe minha insistência, é que tenho que entender o que está acontecendo senão enlouqueço.

Obrigado! :grin: :grin: :grin: :grin:

D

seguite…

quando vc poe apenas action="/servlet/ServletInsere" . vc esta utilizando um um endereço relativo.

se vc colocar action=“http://localhost:8080/locadora/servlet/ServletInsere entao vc estara utilizando um endereço absoluto.

por isso…

supondo q vc esteja no endereço:
http://localhost:8080/locadora/publico/formulario.html

se vc colocar nessa pagina um link com um endereço relativo ele vai para:
http://localhost:8080/locadora/publico/+<endereço_relativo>

quando vc colocou o mapeamento para: /servlet/ServeltIndex entao para executar esse servlet o url tem que ser:
http://localhost:8080/locadora/servlet/ServletIndex

ai vc poe em uma pagina ou uma url absoluta (o q nao eh legal) ou vc poe uma url relativa correspondente.

deu pra entender :?:

blz agora :wink:

S

E aí beleza?

Estive pensando e por favor me corrijam se eu estiver errado:

Um servlet só é executado dentro de um contexto.
Quando ver a barra de endereços do internet explorer posso por exemplo identificar o contexto da seguinte forma:

http://localhost:8080/nomeaplicacao/

onde nomeaplicacao é o nome do contexto. Todo servlet é executado dentro do contexto. portanto não é possível chamá-lo da seguinte forma:

http://localhost:8080/nomedoservlet

pois assim ele estaria acima do contexto. Então a forma correta de chamá-lo é:

http://localhost:8080/nomeaplicacao/nomedoservlet

pois assim o chamaria na raiz do contexto.

Para que isso seja possível tenho que referenciá-lo no web.xml da seguinte forma:

<servlet-mapping>/nomedoservlet</servlet-mapping>

e no form:

action = …/nomedoservlet

Desde já agradeço.

:grin:

D

oi cara,

quase tudo certo…

so o action q ta errado…
nao eh obrigatorio os dois pontos (’…’).

os dois pontos so indica pra o endereço voltar um diretorio acima…

Ex: se vc criar um formulario (pagina.html) em um diretorio chamado ‘modulo’ dentro da pasta da aplicação. então o endereço fica:
http://localhost:8080/nomeaplicacao/modulo/pagina.html

nessa pagina html se voce colocar o action assim:

action = /servlet/ServletInsere

entao quando der um submit os dados irao para o endereço:

http://localhost:8080/nomeaplicacao/modulo/servlet/ServletInsere

mas se vc colocar o action assim (com os dois pontos na frente):

action = …/servlet/ServletInsere

entao quando der um submit os dados irao para o endereço:

http://localhost:8080/nomeaplicacao/servlet/ServletInsere

o endereço vai ‘subir’ do diretorio modulo para o diretorio da aplicação

:wink:

S

E aí beleza?

Agora entendi, obrigado pela ajuda!!!

:okok: :okok: :okok: :okok: :okok: :okok: :okok:

Criado 21 de junho de 2004
Ultima resposta 23 de jun. de 2004
Respostas 7
Participantes 3