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) throws ServletException, 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’s acessem 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 em um arquivo. Crie uma servlet que controle o acesso do usuário na aplicação, redirecionando ele para página de login quando o mesmo não estiver na sessão.