JSP e Servlets - Introduo
Contedo
Principais elementos da camada Web
Programando para a web Uma viso mais detalhada de Servlets JSPs na prtica Usando taglibs
Programando para a Web
A criao de aplicativos web utilizando Java faz uso macio dos conceitos de orientao a objetos. Naturalmente distribudas, as aplicaes web necessitam que a arquitetura componentizada seja bem definida. Um modelo muito utilizado o de camadas, no qual so separados elementos de visualizao, controle e modelo. Esse um padro de projeto conhecido como MVC (Model, View, Controller)
Programando para a Web
Um aplicativo web com java
Uma viso de um Servlet
Servlets so componentes instalados no servidor de aplicao e que so acionados por este em resposta a uma requisio do usurio. A definio sobre qual servlet responder a qual requisio feita no arquivo de deploy (web.xml). As classes servlet so providas pelos pacotes javax.servlet e javax.servlet.http (ambos da distribuio JEE). Esses pacotes contem as classes e interfaces necessrias para a criao de aplicativos web.
Tecnologias para o desenvolvimento web
Pacotes Java para servlets
Uma viso mais detalhada de Servlets
A interface javax.servlet.Servlet que prov o padro da programao Servlet, fazendo o papel de abstrao geral da tecnologia. Todo servlet acaba por implementar essa interface, ainda que indiretamente. A interface possui 5 mtodos importantes:
init (ServletConfig conf) chamado pelo servidor de aplicao para iniciar o servlet service( ServletRequest req, ServletResponse res) chamado em resposta a requisies repassadas pelo servidor de aplicao. destroy() - chamado pelo servidor de aplicao para a destruio do servlet. ServletConfig getServletConfig() - retorna um objeto de configuraes do servlet String getServletInfo() - quando chamado, deve retornar informaes sobre o servlet.
Uma viso mais detalhada de Servlets
O ciclo de vida do servlet inicia-se quando o servidor de aplicao carrega o servlet em sua iniciao. Nesse momento, chamado o mtodo init(). Durante o tempo em que o servidor de aplicao estiver no ar, qualquer chamada que for redirecionada ao servlet acionar o mtodo service(), que contm a lgica interna do aplicativo. Quando for solicitado o desligamento do servidor de aplicao, este chamar o mtodo destroy do servlet, a fim de liberar eventuais recursos que tenham sido alocados.
Uma viso mais detalhada de Servlets
O mtodo service onde a magia da servlet acontece. Esse mtodo recebe dois parmetros essenciais dos ServletRequest e o ServletResponse, um representando a requisio e o outro a resposta http. A classe ServletRequest possui uma srie de mtodos que possibilitam a extrao dos dados enviados pelo usurio e que devero ser processadas pelo servlet. A classe ServletResponse possibilita uma forma de comunicao com o cliente, seja disponibilizando dados que devero ser exibidos, ou mesmo o prprio cdigo HTML da resposta.
Tecnologias para o desenvolvimento web
Exemplo de um servlet simples
Uma viso mais detalhada de Servlets
No pacote javax.servlet.http esto os componentes servlet voltados especificamente para o protocolo HTTP. Normalmente, so essas que utilizamos para aplicativos web. Assim, o conjunto de classes a ser utilizado passa a ser HttpServlet, HttpServletRequest e HttpServletResponse. Em atendimento as especificidades do protocolo HTTP, a classe HttpServlet permite a implementao de alguns mtodos especficos, de acordo com os mtodos HTTP. So eles: doGet(), doPost(), doHead(), doPut(), doDelete(), doTrace() e doOptions(). Todos esses mtodo so chamados a partir do mtodo service().
Tecnologias para o desenvolvimento web
Exemplo de um HttpServlet
Tecnologias para o desenvolvimento web
Para se testar um servlet como esse, seria possvel utilizar uma pgina como:
Um clique no link Chamar TesteServlet via GET acionaria o mtodo doGet(), enquanto um clique no boto Chamar via POST acionaria o mtodo doPost().
Uma viso mais detalhada de Servlets
O acesso s informaes enviadas pelo usurio na requisio feito por uma srie de mtodos da classe HttpServletRequest. Existem 6 mtodos importantes:
Uma viso mais detalhada de Servlets
A devoluo de dados ao usurio feita a partir da classe HttpServletResponse. Existem 9 mtodos importantes:
Uma viso mais detalhada de Servlets
Em alguns casos, necessrio apresentar ao usurio uma pgina HTML ou JSP j existente. Esse envio chamado de dispatch e utiliza uma classe chamada RequestDispatcher. Exemplo:
Uma viso mais detalhada de Servlets
Quando, em resposta a solicitao, se deseja enviar dados ao usurio (normalmente para uso por um JSP), utilizado um mtodo especfico da classe HttpServletRequest:
void setAttribute(String nome, Object valor) Adiciona o objeto valor sesso, associando-se ao nome informado.
Para ser recuperado o dado, o JSP utiliza um outro mtodo da classe HTTPServletRequest:
Object getAttribute(String nome) Busca na sesso um objeto que seja referenciado pelo nome informado.
JSP na prtica
Uma pgina JSP permite mesclar cdigos HTML e cdigos Java. Normalmente, so utilizadas para a criao de pginas dinmicas a partir de informaes processadas e enviadas por servlets. Os blocos de cdigo Java existentes nas pginas JSP so chamados de scriptlets e so demarcados por tags bem definidas <% e %>. Desse modo, possvel retirar o cdigo HTML de dentro do servlet (que, de outro modo, teria que ser enviado por l) e tornar a edio das pginas mais amigvel. Cada JSP, ao ser compilada pelo servidor de aplicao, torna-se uma servlet. Mas, tudo isso ocorre de maneira transparente para o programador.
Uma viso mais detalhada de Servlets
Exemplo de um JSP simples:
Uma viso mais detalhada de Servlets
O JSP apresentado seria equivalente ao seguinte servlet:
JSP na prtica
Os scriptlets podem ser usados de duas formas:
Para a incluso de cdigo java puro:
<% String nome = Fulano Detal; out.println(nome); %>
Para a exibio do valor de uma varivel j declarada:
<%=nome%>
JSP na prtica
Tal como na programao Java convencional, ao ser necessria a utilizao de alguma classe, dever ser feito um import da mesma. Para isso, utilizada um diretiva logo no incio do arquivo JSP com a seguinte sintaxe:
<%@ page language=java import=java.util.Date %>
Outra diretiva permite que se componha a pgina JSP com a incluso de outros blocos JSP ou HTML. Para isso, utilizada a diretiva include:
<%@ include file=outraPagina.html %>
H ainda mais uma diretiva til, que permite a configurao de uma pgina padro para o tratamento de erros:
<%@ page errorPage=erro.jsp %>
JSP na prtica
Pginas JSP possuem acesso a objetos implcitos similares aos utilizados explicitamente em servlets. Esses objetos permitem a interao com informaes importantes da requisio e resposta: