Servlet

7 respostas
ynaue

Oi pessoal!

Acabei de ser apresentada a Servlets e estou com uma duvida.

Uma servlet pode acessar apenas um Contexto (nesse caso Facade) ou pode mais???
Olha o codigo:

public class MinhaServlet extends HttpServlet {
    private MinhaFacade cf;
    private ServletContext context;
    private Map nameSpace;
    
    public void init(ServletConfig config) throws ServletException {
        context = config.getServletContext();
        cf = (MinhaFacade)context.getAttribute("MinhaFacade");
        initPathMapping();
    }
......

Se eu tiver mais classes Facade como eu faço????
Tem como acessar pela mesma Servlet ou tenho que fazer uma para cada????

Obrigada!

7 Respostas

ziegfried

pode sim com ctz… na verdade só existe 1 ServletContext para cada servlet mesmo… dentro do ServletContext é q vc pode salvar vários atributos com o context.setAttribute e pegá-los com o context.getAttribute

era essa a dúvida? qualquer coisa estamos às ordens!

ynaue

igual e estou fazendo aqui, né?

cf = (MinhaFacade)context.getAttribute("MinhaFacade");

Mas eu poderia então fazer isso então, para pegar mais de um???

public void init(ServletConfig config) throws ServletException { context = config.getServletContext(); cf = (MinhaFacade)context.getAttribute("MinhaFacade"); cf2 = (MinhaFacade2)context.getAttribute("MinhaFacade2"); cf3 = (MinhaFacade3)context.getAttribute("MinhaFacade3"); ..... }

Guerr

Poderia sem nenhum problema!!!

ynaue

MUITO OBRIGADA!!!
Deu certinho!!! :lol:

Tenho só mais uma duvida, agora como eu passo um objeto para esse minha servlet???

Por exemplo:
Tenho isso:

public class Dados { String nome; .... gets e sets }

Então eu quero passsar um Objeto do tipo Dados para ser lido la no meu doGet do servlet.
Para ler eu faço assim né?

Dados d=(Dados)request.getAttribute("dados");

Mas como faço para passar isso para o Servlet???

Obrigada!!!

ziegfried

diretamente por GET: urlDoServlet?nome=joao&idade=77

por GET ou POST via um formulário (recomendo o uso do POST): vc cria um .html ou .jsp com um formulário que contenha os campos que vc quer para criar o objeto:

<form action="urlDoServlet" method="POST">
    Nome: <input type="text" name="nome"><p>
    Idade: <input type="text" name="idade"><p>
    <input type="submit" value="Cadastrar">
</form>

Ou seja: vc terá que passar cada propriedade do objeto individualmente para que dentro do servlet vc as pegue e crie um novo objeto com elas. No servlet vc pega os parâmetros passados pelo método HTTP escolhido (no doGet ou doPost) assim:

//getParameter recebe um string e retorna um string
String nome = request.getParameter("nome");

int idade = Integer.parseInt(request.getParameter("idade"));

//Criando o objeto
Dados d = new Dados(nome, idade);
cassio

ziegfried:
pode sim com ctz… na verdade só existe 1 ServletContext para cada servlet mesmo… dentro do ServletContext é q vc pode salvar vários atributos com o context.setAttribute e pegá-los com o context.getAttribute

era essa a dúvida? qualquer coisa estamos às ordens!

Não, não amigo!
ServletContext é um POR APLICAÇÃO! É que o pessoal que bolou as especificações, sei lá porque, colocou esse nome. Para os parâmetros no escopo de cada servlet temos o ServletConfig.
Cuidado para não confundir!
O ServletContext deveria se chamar ApplicationContext, segunda a Kathy Sierra/Bert Bates (acho que qualquer um concorda né…)

Abraço!

ziegfried

hehehehehe… pois eh… não consultei nenhuma fonte quando respondi ao tópico e me confundi…

Criado 5 de janeiro de 2007
Ultima resposta 12 de jan. de 2007
Respostas 7
Participantes 4