Action do form executar um servlet...como?

8 respostas
Diana

tenho a seguinte estrutura:

WEB-INF
     |--------classes
                    |-------beans
                    |-------conexoes
                    |-------operacoesbd

quero que a action de um form execute um servlet que esta na pasta operacoesbd…
meu arquivo web.xml estah 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>
  <servlet-mapping>
       <servlet-name>invoker</servlet-name>
       <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>
</web-app>

como coloco a action do form?

8 Respostas

pcalcado

Oi, Diana,

  1. Não use /servlet/*

  2. O seu url-pattern diz em que url o servlet irá responder. Procure mais informações sobre o web.xml.

[]s

Diana

desculpa…mas naum ajudou…
eu soh quero saber exatamente como chamo essa servlet no meu form…para poder testar um servlet…se eu conseguir testa-lo ai sim vou poder partir para as outras coisas…

pcalcado

Diana, ok:

action="servlet/nomeDoSeuServlet"

[/code]

Diana

isso eu ja fiz…mas deu erro…

Diana

ele mostra esse erro…como se naum conseguisse encontrar…

HTTP Status 404 - /OS/servlet/CadColaborador

--------------------------------------------------------------------------------

type Status report

message /OS/servlet/CadColaborador

description The requested resource (/OS/servlet/CadColaborador) is not available.
Jair_Rillo_Junior

vamos montar as coisas certinhas ok? :lol:

o seu web.xml deve possuir as seguintes tags xml

<servlet>
		<servlet-name>CadColaborador </servlet-name>
		<servlet-class>operacoesbd.CadColaborador</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>CadColaborador</servlet-name>
		<url-pattern>/servlet/CadColaborador</url-pattern>
	</servlet-mapping>

Agora no seu form, você pode chamá-lo assim

<form name='form1' action='servlet/CadColaborador'>

Verifique se eu acertei a linha da sua classe (package+nome da classe) em operacoesbd.CadColaborador

De uma boa lida em http://www.guj.com.br/user.article.get.chain?page=1&article.id=9, esse artigo é bem simples mas bastante poderoso para iniciantes :wink:

Diana

Oi…ManchesteR, continua dando erro soh que agora eh o erro 500. fiz as modificacoes que vc mostrou…mas ainda naum funciona…vou colar o erro embaixo:

HTTP Status 500 - 

--------------------------------------------------------------------------------

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
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:672)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
	at java.lang.Thread.run(Thread.java:534)


root cause 

java.lang.NoClassDefFoundError: operacoesbd/CadColaborador (wrong name: operecoesbd/CadColaborador)
	at java.lang.ClassLoader.defineClass0(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1679)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:968)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1409)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1289)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:885)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
	at java.lang.Thread.run(Thread.java:534)

e este eh o servlet:

package operacoesbd;
import conexao.Conexao;
import beans.*;
import utils.Data;
import javax.servlet.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class CadColaborador extends HttpServlet {
	Conexao con;
	Colaborador pessoa;
	Endereco endereco;
	Telefone tel;	
	Data dt;
public void doGet (HttpServletRequest request,HttpServletResponse response) throws IOException {
	
	endereco=new Endereco();
	endereco.setLogradouro(request.getParameter("logradouro"));
	endereco.setBairro(request.getParameter("bairro"));
	endereco.setCidade(request.getParameter("cidade"));
	endereco.setEstado(request.getParameter("estado"));
	endereco.setCep(Integer.parseInt(request.getParameter("cep")));

	dt=new Data();
	
	pessoa=new Colaborador();
	pessoa.setNome(request.getParameter("nome"));
	pessoa.setApelido(request.getParameter("apelido"));
	pessoa.setRgIe(request.getParameter("rgIe"));
	pessoa.setCpfCgc(request.getParameter("cpfCgc"));
	pessoa.setEndereco(endereco);
	pessoa.setNumEndereco(Integer.parseInt(request.getParameter("numEndereco")));
	pessoa.setRefEndereco(request.getParameter("refEndereco"));
	pessoa.setDtCadastro(dt);
	
	int j=1;
   	int tipo=0;
   	String tipot="";
	for (int i=0;i<4;i++){
	tel=new Telefone();
	tel.setDDI(request.getParameter("ddi"+j));
	tel.setDDD(request.getParameter("ddd"+j));
	tel.setFone(request.getParameter("fone"+j));
	tipot=request.getParameter("tipo"+j);
	if(tipot.equals("Comercial")){
		tipo=1;
	}if(tipot.equals("Residencial")){
		tipo=2;
	}if(tipot.equals("Celular")){
		tipo=3;
	}if(tipot.equals("Fax")){
		tipo=4;
	}
	tel.setTipo(tipo);
	if(j==1){
	pessoa.setFone1(tel);
	}if(j==2){
		pessoa.setFone2(tel);
	}if(j==3){
		pessoa.setFone3(tel);
	}if(j==4){
		pessoa.setFone4(tel);
	}
	j++;
	}
	boolean contribuinte=false;
	if(request.getParameter("contribuinte").equals("true")){
		contribuinte=true;
	}
	pessoa.setContribuinte(contribuinte);
	pessoa.setSisTributario(request.getParameter("sisTributario"));
	
	int tipoc=0;
	String tpc=request.getParameter("situacao");
	if(tpc.equals("Cliente")){
		tipoc=1;
	}else{
		tipoc=2;
	}
	pessoa.setTipo(tipoc);
	inserir();
}	
public void inserir(){
	
	try{
		con=new Conexao();
		con.executeUpdate("insert into os_colaborador(nome,apelido,rgie,cpfcgc,endereco,numendereco,refendereco,fone1,fone2,fone3,fone4,contribuinte,sistributario,dtcadastro,tipo) values '"+pessoa.getNome()+"','"+pessoa.getApelido()+"','"+pessoa.getRgIe()+"','"+pessoa.getCpfCgc()+"','"+pessoa.Endereco()+"',"+pessoa.getNumEndereco()+",'"+pessoa.getRefEndereco()+
		"','"+pessoa.getFone1()+"','"+pessoa.getFone2()+"','"+pessoa.getFone3()+"','"+pessoa.getFone4()+"','"+pessoa.getContribuinte()+"','"+pessoa.getSisTributario()+"','"+pessoa.getDtCadastro()+"',"+pessoa.getTipo()+")");
		System.out.println("registro inserido");
	}catch (SQLException ex){
	System.out.println(ex);
	}finally{
	if(con!=null)
	con.fecharConexao();
	con=null;
	}
}
}

Fico muito agradecida a quem puder me ajudar…pq jah fazem 3 dias que estou em cima disso e naum consigo achar a solucao…

Jair_Rillo_Junior

Olá Diana

da uma olhada na stack de erro e lá você vai ver que o erro é causa de falha de digitação

root cause

java.lang.NoClassDefFoundError: operacoesbd/CadColaborador (wrong name: operecoesbd/CadColaborador)
at java.lang.ClassLoader.defineClass0(Native Method)

olha o nome que está, operecoesbd/CadColaborador o certo seria operacoesbd, certo?

da uma revisada no seu web.xml, no seu action do form e etc

Criado 25 de junho de 2004
Ultima resposta 28 de jun. de 2004
Respostas 8
Participantes 3