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!
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!!!