Servlet: dúvida inicial

2 respostas
glailsonogueira

Pessoal. Tô lendo sobre servlets, struts, JSP e quero esclarecer o que realmente é o servlet, sua diferença para o JSP e sua relação com o Web Container.

Desculpem se a dúvida é de iniciante, mas agredeço se a sanarem.

Abraços,
Glailson

2 Respostas

glailsonogueira

Aproveito para verificar um exemplo que estou usando aqui do site GUJ. A classe que defini é essa:

[i]package tomcat;

import <a href="http://java.io">java.io</a>.<em>;

import javax.servlet.</em>;

import javax.servlet.http.*;

/**
  • @author Glailson Lima Nogueira
*/

public class HelloServlet extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse

response) throws IOException, ServletException {

// vamos definir o tipo de conteudo

// que será devolvido pelo response

response.setContentType(text/html);

// pegamos o PrintWriter do response, através

// do qual escreveremos o conteudo da pagina

PrintWriter out = response.getWriter();
// Agora vamos escrever o conteudo da pagina
	out.println("&lt;HTML&gt;");
	out.println("&lt;BODY&gt;");
	out.println("&lt;H1&gt;Hello World!&lt;/H1&gt;");
	out.println("&lt;/body&gt;");
	out.println("&lt;/html&gt;");
}

}[/i]
O resultado no console é esse:
IWAV0048I Java Bean tomcat.HelloServlet started with null constructor
Estou utilizando o Eclipse e já fiz todos os ajustes para utilizar os pacotes javax.servlet.*.

Quando tento rodar dá uma mensagem assim:

[i]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error allocating a servlet instance

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)

org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)

java.lang.Thread.run(Thread.java:595)

root cause

java.lang.NoClassDefFoundError: HelloServlet (wrong name: tomcat/HelloServlet)

java.lang.ClassLoader.defineClass1(Native Method)

java.lang.ClassLoader.defineClass(ClassLoader.java:620)

java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)

org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)

org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)

org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)

java.lang.Thread.run(Thread.java:595)

[/i]

Se alguem puder ajudar…

Abraços…

bebad

bro, pra começar…sempre que for colocar um codigo no forum coloque entre a tag CODE, que fica bem acima da caixinha aonde vc digita o texto.

blz

Então, seu servlet ta registrado no web.xml ?
voce não pode acessar diretamente uma classe servlet sem que ela esteja corretamente mapeada no deployment descriptor da sua aplicacao, no caso o Web.xml

<servlet>
  <servlet-name>CatalogoCadastroAssunto</servlet-name>
  <servlet-class>br.com.site.servlet.Servlet</servlet-class>
 </servlet>        
 <servlet-mapping>
  <servlet-name>Teste</servlet-name>
  <url-pattern>/Teste.do</url-pattern>  
 </servlet-mapping>

:wink:

Compre o livro: Use a Cabeça - Servlets e JSP para 1 melhor entendimento do assunto.

Criado 30 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 2
Participantes 2