Olá a todos, estou tendo dificuldades em abrir um servlet que criei para treinar
se eu colocar todo o caminho dele (http://localhost:8080/web/Teste.java) ele abre, mostrando o fonte da classe, se eu coloco sem o .java ele da o erro:
HTTP Status 404 - /web/Teste
type Status report
message /web/Teste
description The requested resource (/web/Teste) is not available.
Apache Tomcat/6.0.14
essa classe se encontra na raiz do projeto, não está dentro de nenhuma pasta
meu web.xml se encontra no mesmo lugar que a classe:
<?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>
<servlet>
<servlet-name>Teste</servlet-name>
<servlet-class>Teste</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Teste</servlet-name>
<url-pattern>/Teste</url-pattern>
</servlet-mapping>
</web-app>
alguem pode me ajudar nisso? há algo errado no meu web.xml? algum outro fator pode estar influenciando o andamento?
att,
Fernando Cartaxo
–edit–
só a termos de informações, uso o tomcat 6.0 e o plugin sysdeo no eclipse
Caro Fernando,
sua classe deve ser compilada, e o arquivo Teste.class resultante da compilação deve ser colocado dentro do diretório /web/WEB-INF/classes
Qual o contexto da sua aplicação web?
Prq vc definiu no seu web.xml que URL que “mapeará” seu servelet seria isso: http://localhost:8080/meuContexto/Teste
[quote]Caro Fernando,
sua classe deve ser compilada, e o arquivo Teste.class resultante da compilação deve ser colocado dentro do diretório /web/WEB-INF/classes
[/quote]
via IDE nao faz isso automaticamente? (eclipse)?
o nome do meu contexto é web, e para acessar a servlet eu faço: http://localhost:8080/web/Teste
ainda nao conseguir…
não tou achando nada parecido na net, no google, deve ser uma besteira que tou me passando
–edit
realmente nao tem nenhum .class no diretorio /web/WEB-INF/
Então, no Eclipse vc tem que ir lah em “Configure build path…” e na aba source muda o default output folder pra onde vc deseja jogar as suas classes compiladas, no caso SeuProjeto/WEB-INF/classes
Abraços!
[quote=nicoweda]Então, no Eclipse vc tem que ir lah em “Configure build path…” e na aba source muda o default output folder pra onde vc deseja jogar as suas classes compiladas, no caso SeuProjeto/WEB-INF/classes
Abraços![/quote]
Está configurado desse jeito já… pode ter alguma relação ao jdk que tou usando?
Faz assim, cria uma source folder chamada src
joga sua classe dentro dessa pasta, e tenta denovo.
Abraços
[quote=nicoweda]Faz assim, cria uma source folder chamada src
joga sua classe dentro dessa pasta, e tenta denovo.
Abraços[/quote]
fiz isso, continua dando o mesmo erro =(
–edit
acho que assim fica mais fácil de passar o que estou querendo
minha hierarquia é essa:

meu web.xml é esse:
<?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>
<servlet>
<servlet-name>Web</servlet-name>
<servlet-class>Web</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Web</servlet-name>
<url-pattern>/Web</url-pattern>
</servlet-mapping>
</web-app>
e minha classe Web é essa:
[code]
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
-
O método padrão invocado em um servlet é doGet.
-
A especificação 2.3 de servlet (que é a que estou trabalhando) implementa
-
os 7 métodos do HTTP 1.1 (get, head, post, options, put, delete, trace).
-
Os métodos mais comumente utilizados em aplicações web são get e post.
*/
public class Web extends HttpServlet {
/**
- É executado quando é feita uma requisição com método GET pelo cliente.
-
-
@param request Objeto com as informações pertinentes a requisição
-
@param response Objeto com as informações pertinentes a reposta para o cliente
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter(); // pega o ‘escritor’ da resposta
pw.println("");
pw.println(“Olá Mundo em Servlet!”);
pw.println("");
pw.println(“Olá Web!”);
pw.println("");
pw.println("");
pw.flush(); // descarrega as informações. não é obrigatória a chamda deste método
}
} [/code]
Será que ajuda?
Meu caro…
Ao trabalhar com servlets, tente criar elas com pacotes específicos.
As vezes o container se perde quando tu não especifica um pacote na tua servlet.
Digamos que tu tenha uma servlet no pacote
br.com.guj
Entao, teu mapeamento ficaria da seguinte forma:
<web-app>
<servlet>
<servlet-name>web</servlet-name>
<servlet-class>br.com.guj.Web</servlet-class>
</servlet>
É importante observar, que no parametro servlet-name tu pode especificar qualquer coisa, isso servirá somente como referência pra ti chamar no mapping.
<servlet-mapping>
<servlet-name>web</servlet-name>
<url-pattern>/primeiroexemplo</url-pattern>
</servlet-mapping>
No código acima, eu usei o parametro servlet-name pra chamar a referência que eu criei na , e mapiei ela pra seguinte url: http://localhost/NOMEDOTEUCONTEXTO/primeiroexemplo
NOMEDOTEUCONTEXTO = nome da webapp q tu criou no teu server.
fiz do jeito que você falou zirocool mas continuo na mesma…
algo que observei é que mesmo eu digitando localhost:8080/web onde o web é o meu contexto ele não lista os arquivos dentro dele, que em outro computador que usava e conseguir rodar a servlet listava… creio eu que deve ser algum problema de configuração…
alguem sabe o que pode ser isso?
–edit
conseguir agora, o erro era na hierarquia das classes, agora que arrumei rodou meu servlet, porém ele contiuna não listando os arquivos da pasta da minha aplicação, por exemplo, ao digitar localhost:8080/web ele deveria aparecer todos os meus arquivos, só que dá o mesmo erro de antes…
segue a minha antiga hierarquia e a nova, com seus respectivos web.xml, para caso alguem tenha o mesmo erro:
antigo

novo

mas continua minha duvida, de porque nao aparece a listagens dos arquivos da pasta da minha aplicação