Heranca em servlets

Pessoal como faco a heranca em Servlets?
Tenho que recriar os metodos doGet e doPost?

[quote=“Brito_Developer”]Pessoal como faco a heranca em Servlets?
Tenho que recriar os metodos doGet e doPost?[/quote]

não entendi… dá uma explicada melhor!

:wink:

Eu tenho um Servlet controlador, e este servlet tem dois filhos, por exemplo ClienteFisico e ClienteJuridico.
Dai eu criei o ClienteFisico extends ServletPai - mas nao funciona.

Ex:
na classe pai eu tenho

String teste = request.getParameter(“teste”);

Este é um atributo da classe pai que deveria estar disponivel na classe filha, nao é!!!?
E tambem quero saber se eu tenho que recriar o metodo doGet e doPost que ja criei no pai!!!

vc esta fazendo confusão, oq tem a ver um servlet controller com a hierarquia de ClienteFisico e ClienteJuridico :roll:

Vamos fazer o seguinte.

Esquece a minha situacao, nao vamos focar a minha situacao.
Quero saber mesmo como faco um Servlet ser filho de outro Servlet.
Depois a gente discute oq eu estou fazendl
Blzzz!!!

[quote=“Brito_Developer”]Vamos fazer o seguinte.

Esquece a minha situacao, nao vamos focar a minha situacao.
Quero saber mesmo como faco um Servlet ser filho de outro Servlet.
Depois a gente discute oq eu estou fazendl
Blzzz!!![/quote]

Ok. Heuheuheu

public class PaiServlet extends HttpServlet {

   public void doGet( HttpServletRequest request, HttpServletResponse response ) {

      // doStuff
   }

}
public class FilhoServlet extends PaiServlet {

   /*
    * se quiser tu pode sobreescrever o doGet do PaiServlet...
    * public void doGet( HttpServletRequest request, HttpServletResponse response ) {
    *
    * }
    */

}

Ok. Se eu tenho uma valiavel no pai estara disponivel no filho tb nao é?
é só eu dar o nome dela para acessar nao é?!!!

[quote=“Brito_Developer”]Ok. Se eu tenho uma valiavel no pai estara disponivel no filho tb nao é?
é só eu dar o nome dela para acessar nao é?!!![/quote]

Se ela for public ou protected ou com acesso default e os dois servlets no mesmo pacote, sim.

A declaracao das variaveis:

String nome = “JJ”; (Default)

Nas classes filhas eu preciso dar o super para acessar?

Cara, se tu quer fazer 2 servlets onde um extende o outro e quer q a subclasse tenha visibilidade de determinados atributos, declare eles como protected simplesmente… pronto, é só acessar pelos seus nomes diretos.

Galera, …
Estudei um pouco sobre herança e metodos. Agora ja posso fazer perguntas mais objetivas.
O caso é eu tenho um servlet pai

public class ServClientes extends HttpServlet {
   public voii doGet(...){
   
   }
}

Eu tenho uma variavel String que recebe o conteudo do form, estaminha variavel esta dentro do metodo doGet, pois, para receber do form ela deve estar la. (ok?)
Dai eu crio uma outra classe, a filha;

public class ClienteJur extends ServClientes {
			
}

Dentro da filha eu preciso de todas as variaveis que criei no pai, isto eu ja tenho com a heranca nao é?
Mas nao estou conseguindo usa-las.
O que é preciso fazer?

Opa,
Primeiro vc precisa declarar as variáveis como variaveis de classe, ou seja, fora de qualquer método.
Se vc está fazendo:

public void doGet()
{
   String campo1="blabla";
}

Não conseguirá acessar.
Vc deve fazer:

String campo1;
public void doGet()
{
    campo1="blabla";
}

Sacou?

entao ate ai bl!
Eu faco deste jeito tb as variaveis devem ser atributos da classe pai. Certo.
Mas o caso é quando eu to na filha e capturo o valor da vadivel nome por ex. q esta declarada fora do metodo doGet. ela vem como “” (vazia) pois é assim q esta declarada. Eu nao consgo capturar o valor atual, o q esta dentro do DOGET.

Opa,
Se vc reimplementou o doGet no filho vc deve fazer

public void doGet(Http....)
{
    super.doGet(request,response);
    //agora vc le a variavel
}

Seria isso?

Qual é o padrao?
Reimplementar o doGet?
Considerando que vou vaer uns requestform no filho, talves tenha q reimplementar.

Provalvemente sim, se for de sua necessidade, e quanto as variáveis utilize o tratador super para acessá-las, mas não aconselho deixá-las ser acessadas publicamente por isto eu sugiro que você utilize metodos get e set para acessar estas variáveis globais.

Opa,
Se vc precisar usa o request ou o response no filho vc deve reimplementar! E chamar a implementação do super, é claro.

Falow!

Seria qual quer coisa assim?


	public void doGet implements super.doGet(HttpServletRequest request,HttpServletResponse response)
	throws IOException, ServletException{
		
		
	}

Não,não!
Vamo lá…

public class Pai extends HttpServlet
{
	String campo;
	public void doGet(HttpServletRequest request,HttpServletResponse resp)
        {
		campo="opa!!";
	}
}
public class Filhao extends Pai
{
	public void doGet(HttpServletRequest request,HttpServletResponse resp)
	{
		super.doGet();
		response.getWriter().print(campo);
	}
}

Ele deverá imprimir:
opa!
No browser!

falow!

Cara valeu.
So estava faltando um detalhe.
super.doGet(request,response);

Mais VALEUUU!!!