Java para WEBaeciocosta.com.br/wp-content/uploads/Curso Java Web/Aulas/10-JW-AC... · A classe...

35
Java para WEB Servlets

Transcript of Java para WEBaeciocosta.com.br/wp-content/uploads/Curso Java Web/Aulas/10-JW-AC... · A classe...

Java para WEB

Servlets

Java para WEB

Servlets são classes Java que são instanciadas e

executadas em associação com servidores Web,

atendendo requisições realizadas por meio do

protocolo HTTP.

Java para WEB

Servlets é a segunda forma que veremos para criação

de páginas dinâmicas em Java além da tecnologia já

vista JSP.

Java para WEB

A classe HttpServlet do pacote javax.servlet é a classe

que possibilita o uso de classes java através do

protocolo Http.

A interface Servlet é a que define exatamente como

uma servlet funciona, mas não é o que vamos

utilizar agora uma vez que ela possibilita o uso de

qualquer protocolo baseado em requisições e

respostas, e não especificamente o HTTP.

Java para WEB

Para criarmos uma classe java que receba

requisições, fazemos isso criando uma classe

qualquer que estenda a classe HttpServlet e então

sobrescrevemos o método doGet.

Java para WEB

@Override

protected void doGet (HttpServletRequest request,

HttpServletResponse response) throws

ServletException, IOException {

...

}

Java para WEB

Servlets são capazes de receber requisições e enviar

respostas através das Classes HttpServletRequest e

HttpServletResponse.

Java para WEB

Então, o método da Servlet poderia ter algo

como:

@Override

protected void doGet (HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("<body>");

out.println(“Olá Mundo");

out.println("</body>");

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

}

Java para WEB

Mapeando uma Servlet

A servlet é acessada como uma página JSP qualquer,

porém para isso é necessário definir uma

configuração para que o servidor saiba qual servlet

ele deve acessar, esse mapeamento é feito pelo

arquivo web.xml.

Java para WEB

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name> WebApp_NAME</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

Java para WEB

O Mapeamento de uma servlet se dá pela tag:

<servlet>

<servlet>

<servlet-name>primeiraServlet</servlet-name>

<servlet-class>br.com.cd.OiMundo</servlet-class>

</servlet>

Java para WEB

Após isso indique por qual URL sua Servlet será

acessada:

<servlet-mapping>

<servlet-name>primeiraServlet</servlet-name>

<url-pattern>/oiMundo</url-pattern>

</servlet-mapping>

Java para WEB

A tag <url-pattern>

Além de mapear uma URL para acessar uma servlet é póssivel fazer com que várias URL’sacessem a mesma servlet.

<url-pattern>/oiMundo/*</url-pattern>

<url-pattern>*.jsp</url-pattern>

Java para WEB

Prática

Construa uma Servlet que exiba uma página HTML

onde contenha um título e a mensagem de Boas

Vindas entre tags <h1>.

Java para WEB

Prática

Construa uma página que tenha um formulário e faça

uma servlet que some os dois valores digitados

nesse formulário.

Java para WEB

Outros Métodos de Servlet

doGet = recebe requisições GET

doPost = recebe requisições POST

service = recebe ambas requisições

Java para WEB

Dentro da classe servlet é possível utilizar todos os

objetos até agora visto como request, response,

session, Cookies e etc.

Java para WEB

Erros Comuns em Servlets

Java para WEB

Esquecer da barra inicial no URL pattern:

<url-pattern>oi</url-pattern>

Java para WEB

Digitar errado o nome do pacote da sua servlet:

<servlet-class>br.ac.servlet.OiMundo</servlet-class>

Java para WEB

Esquecer de colocar o nome da classe no

mapeamento da servlet

<servlet-class>br.ac.servlet</servlet-class>

Java para WEB

Prática

Construa uma servlet que receba requisições para

cadastro de um Contato (Bean), coloque esse

contato em uma lista na sessão e crie uma página

que liste todos os contatos da sessão.

Java para WEB

Tratamento de Exceções em Servlets

Java para WEB

É possível tratar erros em servlets através da

configuração do arquivo web.xml.

Java para WEB

Tratando erro da classe Exception

<error-page>

<exception-type>java.lang.Exception</exception-type>

<location>/erro.html</location>

</error-page>

Java para WEB

Tratar erros de resposta Http como 404 (Página

inexistente)

<error-page>

<error-code>404</error-code>

<location>/paginaNaoEncontrada.html</location>

</error-page>

Java para WEB

Prática

Crie uma servlet que trate erros de

java.lang.ArithmeticException,

java.lang.NumberFormatException e de página

inexistente.

Java para WEB

Métodos init e destroy

O método init é executado sempre que uma servlet é

executada (compilada) e o método destroy sempre

quando essa mesma é destruída.

Java para WEB

public void init(ServletConfig config) throws

ServletException {

super.init(config);

log("Iniciando a servlet");

}

Java para WEB

public void destroy() {

super.destroy();

log("Destruindo a servlet");

}

Java para WEB

Prática

Construa uma servlet que conte quantas vezes o site

foi acessado e exiba em uma página essa

informação.

Java para WEB

SERVLETS 3.0

Java para WEB

Nova especificação da API de Servlets, disponível em

alguns servidores já como GlassFish, Jetty e

Tomcat 7.

Java para WEB

A nova API trás algumas melhorias e correções.

@WebServlet("/oiMundo")

public class OiMundo extends HttpServlet {

...

}

Java para WEB

Exercícios

Crie uma servlet que efetue o Login em sua aplicação,utilizando Beans e Sessão.

Crie um cadastro de Contatos onde ao salvar um contato,esta ação seja feita por uma servlet, salvando esses emum arquivo.

Crie uma servlet que controle o acesso do usuário naaplicação, redirecionando ele para página de loginquando o mesmo não estiver na sessão.