31
Servlets e JSP Introdução e visão geral de algumas características

Servlets e jsp

Embed Size (px)

DESCRIPTION

Introdução e visão geral de algumas características.

Citation preview

Page 1: Servlets e jsp

Servlets e JSP

Introdução e visão geral de algumas características

Page 2: Servlets e jsp

Servidor de aplicação

• Um servidor de aplicação implementa todas as

especificações do Java EE (grande conjunto de

especificações) e tem o papel de servir sua aplicação para

auxilia-la com serviços de infraestrutura;

• JBoss;

• Glassfish.

Page 3: Servlets e jsp

Servlet Container

• O Servlet Container é um servidor que suporta algumas

funcionalidades como as Servlet, o JSP¹, JSTL² e JSF³ e

não a implementação do Java EE por completo;

• Apache Tomcat;

• Jetty (usado no Google App Engine)

1 - JavaServer Pages;2 - JavaServer Pages Standard Tag Library;3 - JavaServer Faces

Page 4: Servlets e jsp

Servlets

A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by web servers. For such applications, Java Servlet technology defines HTTP-specific servlet classes.

http://docs.oracle.com/javaee/6/tutorial/doc/bnafe.html

Page 5: Servlets e jsp

Servlets

The javax.servlet and javax.servlet.http packages provide interfaces and classes for writing servlets. All servlets must implement the Servlet interface, which defines lifecycle methods. When implementing a generic service, you can use or extend the GenericServlet class provided with the Java Servlet API. The HttpServlet class provides methods, such as doGet and doPost, for handling HTTP-specific services.

http://docs.oracle.com/javaee/6/tutorial/doc/bnafe.html

Page 6: Servlets e jsp

Servlets

Servlets são classes Java, desenvolvidas de acordo com uma estrutura bem definida que, quando instaladas e configuradas em um servidor que implemente um Servlet Container, podem tratar requisições recebida de clientes web (browsers).

JSP, Servlets e J2EE - Temple, André; Mello, Rodrigo; Calegari, Danival; Schiezaro, Maurício. (GNU License)

Page 7: Servlets e jsp

Servlets

Uma servlet é um componente no lado do servidor. Ela pode ser usada para estender a funcionalidade de qualquer servidor compatível com Java, mas normalmente as servlets são usadas para escrever aplicativos Web em um servidor Web. [...]. Com freqüência elas são usadas para criar páginas da Web que não são estáticas.

Aprenda J2EE com EJB, JSP, Servlets, JNDI, JDBC e XML em 21 dias. Bond, Martin; Haywood, Dan; Law, Debbie, Longshaw, Andy; Roxburgh, Peter. Pearson Education, São Paulo, 2003.

Page 8: Servlets e jsp

Servlets

• O nome “servlet” vem da ideia de um pequeno servidor cujo objetivo é receber chamadas HTTP, processá-las e devolver uma resposta ao cliente;

• Ao receber uma requisição, um Servlet pode capturar os parâmetros dessa requisição, efetuar qualquer processamento inerente a uma classe Java e devolver uma página HTML;

• Os servlets normalmente utilizam o protocolo HTTP, apesar de não serem restritos a ele;

Page 9: Servlets e jsp

Servlets

• Diversas requisições podem ser feitas ao mesmo Servlet ao

mesmo tempo em um único servidor, por isso ela é mais

rápida que um programa CGI, que não permitia isso;

• Servlets ficam na memória entre requisições, não precisa

ser reinstanciada;

• em CGI, cada cliente é representado por um processo; com

servlets, cada cliente é representado por uma linha de

execução.

Page 10: Servlets e jsp

Servlets

• É importante perceber que sua Servlet será instanciada uma única vez pelo container e esse objeto será usado para atender todas requisições de todos os clientes em threads separadas; é isso que traz melhorias em relação aos CGI, que disparavam diversos processos;

Page 11: Servlets e jsp
Page 12: Servlets e jsp

Visão geral: Servlets

• Interface Servlet: define métodos que todos os servlets devem implementar;

• Classe abstrata GenericServlet: Define um servlet genérico, independe de protocolo específico;

• Classe abstrata HttpServlet: Provê uma classe abstrata a ser implementada para criar um servlet HTTP, adequado para um Web site;

Page 13: Servlets e jsp

public class Welcome extends HttpServlet {

protected void service( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException {

PrintWriter out = response.getWriter();String name = request.getParameter(“name”);

out.println(“<html>”);out.println(“body”);out.println(“Welcome ” + name + “!!!”);out.println(“</body>”);out.println(“</html>”)

}}

Servlet - exemplo

Page 14: Servlets e jsp

http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaServlets.html

Servlets - ciclo de vida

Page 15: Servlets e jsp

Servlets - ciclo de vida

• Os métodos init() e destroy(), quando reescritos, são obrigados a chamar o super.init() e super.destroy();

• Supondo que um desses métodos execute alguma tarefa fundamental em sua classe pai, esquecer de chamar o super pode lhe causar problemas!!!

Page 16: Servlets e jsp

Servlets - exemplo

public class Welcome extends HttpServlet {

public void init(ServletConfig config) throws ServletException {super.init(config);log(“Beginning the Servlet ...”);

}

public void destroy() {super.destroy();log(“... finishing the Servlet.”)

}

protected void service( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException {

...}

}

Page 17: Servlets e jsp

Servlets - HTTP

O método service() aceita todos os métodos HTTP, portanto temos que especificar qual iremos utilizar através dos seguintes métodos:

void doGet( HttpServletRequest request, HttpServletResponse response );

void doPost( HttpServletRequest request, HttpServletResponse response );

Além de GET e POST o protocolo HTTP possui ainda mais 6 métodos: PUT, DELETE, HEAD, TRACE, CONNECT e OPTIONS;

Os mais conhecidos são o GET e POST pois são os únicos que HTML 4 suporta.

http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServlet.html

Page 18: Servlets e jsp

Servlets - mapeamento

As servlets devem ser mapeadas no arquivo web.xml para que sua aplicação saiba como localizá-la ...

<servlet> <servlet-name>welcome</servlet-name> <servlet-class>br.inpe.cptec.servlet.Welcome</servlet-class></servlet>

<servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/</utl-pattern></servlet-mapping>

Page 19: Servlets e jsp

Servlets - mapeamento

... ou à partir da versão 3.0 da API de Servlets, lançada em Dezembro de 2009 com o Java EE 6, não é mais necessário configurar as Servlets no web.xml, pode-se apenas usar a anotação @WebServlet:

@WebServlet(name=“welcome”, urlPatterns={“/”, “/welcome”, “/oi”})public class Welcome extends HttpServlet {

...

}

Page 20: Servlets e jsp

JavaServer Pages

JavaServer Pages is a Sun Microsystems specification for combining Java with HTML to provide dynamic content for web pages. [...] JSP is more convenient to write than HTTP servlets because they allow you to embed Java code directly into your HTML pages.

JSP enables you to separate the dynamic content of a Web page from its presentation.

http://docs.oracle.com/cd/E13222_01/wls/docs70//jsp/intro.html

Page 21: Servlets e jsp

JavaServer Pages

Uma JSP é apenas outra servlet e, assim como as servlets HTTP, uma JSP é um componente web no lado do servidor que pode ser usado para gerar páginas da Web dinâmica.

A diferença fundamental entre servlets e JSPs é:

•As servlets geram código HTML de código Java;

•As JSPs incorporam código Java em código HTML estático.

Aprenda J2EE com EJB, JSP, Servlets, JNDI, JDBC e XML em 21 dias. Bond, Martin; Haywood, Dan; Law, Debbie, Longshaw, Andy; Roxburgh, Peter. Pearson Education, São Paulo, 2003.

Page 22: Servlets e jsp

JavaServer Pages

• Criado para contornar limitações no desenvolvimento com Servlets;

• Permite que a criação do HTML dinâmico não se misture com a lógica da aplicação em si;

• Estrutura do arquivo jsp é baseada no HTML;

• Permite que se escreva código Java no arquivo, para que possamos adicionar comportamento dinâmico em nossa página, como condicionais (if), loops (while);

Page 23: Servlets e jsp

JavaServer Pages

• Todo scriptlet (script + sufixo let, de pequeno) deve ser escrito entre as tags <% %>;

• Para declarar uma variável é simples, basta fazer:

<% String message = “Welcome!”; %>

• Todo arquivo JSP possui uma variável chamada out, do tipo JspWriter, que permite imprimir para o response através do método println():

• <% out.println( message ); %>

Page 24: Servlets e jsp

JavaServer Pages

• Além da variável out, existem outras que estão implícitas nas nossas páginas JSP;

• Existe ainda outra possibilidade para imprimir o conteúdo da nossa variável através do seguinte atalho:

<% =message %>

• Comentários em páginas JSP devem ser feitos da seguinte maneira:

• <%-- Comentário em JSP --%>

Page 25: Servlets e jsp

JavaServer Pages

No JSP existe um elemento chamado diretiva; as diretivas são usadas para definir informações sobre sua página para o tradutor, elas não produzem saída HTML:

<%@ diretiva [ atributo=“valor” ] %>

Dentre as diretivas existentes uma delas é a include; você a usa para inserir o conteúdo de outro arquivo JSP. O arquivo incluído pode conter tags HTML e/ou JSP.

<%@ include file=”header.jsp”%>

Page 26: Servlets e jsp

JavaServer Pages

Há também a diretiva page, ou seja, uma configuração específica de uma página. Elas são usadas para definir propriedades dependentes da página:

<%@ page import=“br.inpe.cptec.dao.”%>

O atributo import permite que seja especificado qual o pacote a ser importado. Para diversos pacotes basta separá-los por vírgula.

<%@ page import=“java.util.*, br.inpe.cptec.dao.*” %>

Page 27: Servlets e jsp

JavaServer Pages

Outra e também muito importante é a diretiva taglib. As bibliotecas de tags (taglibs) estendem ainda mais a filosofia das JSPs, para que seja possível escrever a maioria das páginas Web sem usar código Java:

<%@taglib uri=“/demo” prefix=“demo” %>

Page 28: Servlets e jsp

Taglibs

• As taglibs foram desenvolvidas pela Sun para estender as funcionalidades da Expression Language;

• Basear nosso código na EL e taglibs permite que tenhamos um código complexo porém limpo, pois não temos código Java no arquivo JSP e o resultado é similar à um HTML;

• A maioria das publicações dedica um capitulo à parte para esse assunto;

• É importante também se estudar sobre JavaBeans, para se aprofundar o entendimento de como a Expression Language funciona.

Page 29: Servlets e jsp

JavaServer Pages - funcionamento

• Arquivos JSP não são compilados nos editores;

• Arquivos JSP são transformados em uma Servlet por um compilador JSP (o Tomcat contém um compilador embutido);

• Esse compilador pode gerar um código Java que então é compilado para gerar bytecode diretamente para a Servlet;

• Então, somente durante a execução de uma página JSP, quando ele é transformado em uma servlet, que seu código Java é compilado e necessita de classes do driver que são procuradas no diretório lib.

Page 30: Servlets e jsp

JSP - ciclo de vida

http://edn.embarcadero.com/article/26911

Page 31: Servlets e jsp

Referências

• http://www.inf.ufsc.br/~bosco/downloads/livro-jsp-servlets-j2ee.pdf

• http://www.devmedia.com.br/fundamentos-de-servlets/3573

• http://www.cse.iitb.ac.in/dbms/Data/Courses/DBIS/Software/servlets/servlet_tutorial.html

• http://docs.oracle.com/javaee/6/tutorial/doc/bnafe.html

• http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzamy%2F50%2Fprogram%2Fservlife.htm

• http://www3.ntu.edu.sg/home/ehchua/programming/java/JavaServlets.html

• http://edn.embarcadero.com/article/26911

• Aprenda J2EE com EJB, JSP, Servlets, JNDI, JDBC e XML em 21 dias. Bond, Martin; Haywood, Dan; Law, Debbie; Longshw, Andy; Roxburgh, Peter. Editora Pearson Education, 2003.

• FJ-21 Java para desenvolvimento web. Caelum. http://www.caelum.com.br/download/caelum-java-web-fj21.pdf