7 de mai de 2013

Especificações Java EE6 [2 - Servlets]

Seguindo plano de postagens sobre especificações Java EE 6, o próximo tema é Servlets. Os Servlets são definidos na JSR 315.

Um servlet é um componente web que gera conteúdo dinâmico. O cliente web interage com um servlet utilizando o padrão request/response. O servlet container é responsável pelo ciclo de vida de um servlet, receber requisições, enviar respostas, e executar o encoding/decoding.




Para definir um servlet, utilizamos a anotação @webservlet:

@webservlet(urlPatterns={"/teste","/testeServlet"})

public class TesteServlet extends javax.servlet.http.HttpServlet {



}



Para especificar a inicialização dos parametros utiliza-se a anotação @WebInititParam:


@webservlet(

    urlPatterns =   {"/teste","/testeServlet"} ,

    initiParams=   {@WebInitiParam(name="type",value="checking")})

public class TesteServlet extends javax.servlet.http.HttpServlet {



}



A interface do Servlet possui um método do___ que trata uma das requisições (GET, POST, PUT, DELETE, HEAD, OPTIONS e TRACE). Normalmente os desenvolvedores se preocupam apenas com o método doGet e doPost, mas é possível implementar cada um dos outros.


@webservlet(

    urlPatterns =   {"/teste","/testeServlet"} ,

    initiParams=   {@WebInitiParam(name="type",value="checking")})

public class TesteServlet extends javax.servlet.http.HttpServlet {



     @Overrride

     protected void doGet(HttpServletRequest request, HttpServletResponse    reponse) {

    String parameter = request.getParameter("tx"); 

     try {

          ServletContext context = request.getServletContext();



          (PrintWriter out = response.getWriter()){

              out.println("<html><header>");

              out.println("<title>Título</title>");

              out.println("</head><body>

              Teste parametro ="+parameter==null? "null:parameter"+"

              </body></html>");



          ServletCookieConfig config =                                    request.getServletContext().getSessionCookieConfig();

         

configHttpOnly(true);



           HttpSession session = request.getSession(true);



          }finaly{

              //...

          }

     }

}

}



 O código escrito acima mostra a implementação de um servlet na sua forma mais simples. O mesmo, só responde as requisições do tipo doGet. A resposta é formada utilizando o writer presente no response.

Nesta forma é necessário que a página html seja gerada utilizando concatenação de String.

Para que o parameter não seja nulo é necessário que seu valor seja passado através da url

../teste?tx=10


Para recuperar o contexto do Servlet basta chamar o método getServletContext a partir do request.

Para recuperar ou criar uma sessão utilizamos o método request.getSession(true);. Caso queiramos adicionar ou recuperar atributos, basta utilizar o método set ou getAttribute .

Parâmetros de inicialização

Os parâmetros para inicialização do Servlet podem ser passados através da anotação @WebInitParam, e podem ser recuperadas desta forma:

String type = null;



@Override

public void init(ServletConfig config) throws ServletException {



type = config.getInitParameter ("type") ;



}


O ciclo de vida padrão de um Servlet pode ser manipulado sobrescrevendo os métodos init, service e destroy da interface javax.servlet.Servlet. Normalmente as conexões à banco de dados são criadas em init e finalizadas no método destroy.  Pois caso fossem criadas sempre que o método fosse chamado poderia haver uma sobrecarga das mesmas.





Nenhum comentário:

Postar um comentário