J2EE Exemplo completo Utilização Servlet Instrutor HEngholmJr Page 1 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved AT09 – Exemplo complete Utilização Servlet Version 1.1 ● December 5, 2014 Indice 1. BASEADO NOS EXEMPLOS DE CÓDIGO DESTA APOSTILA, EXECUTE OS SEGUINTES PASSOS: ...... 3 2. LOGINUI.JSP 3. LOGINSERVLET.JAVA .......................................................................................................... 4 4. CLASSE USUARIO........................................................................................................... 5 5. WEB.XML ............................................................................................................................. 5 6. BEMVINDO.JSP .................................................................................................................... 6 7. ERROLOGINUI.JSP ............................................................................................................... 6 ....................................................................................................................... 3 IMPLEMENTE UMA JSP DE ERRO DE LOGIN. .................................................................................... 6 EXEMPLO DE CHAMADA DE JSP POR LINKS PASSANDO PARÂMETROS ..................................... 7 8. JSP CHAMADA RECUPERA OS DADOS ENVIADOS POR ............................................................. 8 DIRECIONANDO DE UMA JSP PARA OUTRA ...................................................................................... 8 9. EXEMPLO DE CHAMADA DE SERVLET POR LINKS .................................................................... 8 SERVLET CHAMADO ...................................................................................................................... 8 10. REDIRECIONANDO PÁGINAS ................................................................................................. 9 <jsp:forward page="/teste/jsp/login.jsp" / >...................................... 9 11. IMPORTS ............................................................................................................................. 9 DECLARAÇÃO DE VARIÁVEIS NA PG ................................................................................................. 9 Page 2 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved 1. Baseado nos exemplos de código desta apostila, execute os seguintes passos: No IDE Java de sua preferência, crie um projeto web. Crie uma JSP de nome loginUI.jsp e copie o código do item ‘2’ Crie o pacote controllers e dentro dele crie um servlet de nome ‘LoginServlet’ inserindo nele o código do item ‘3’. Crie o pacote ‘models.administrativo’ e dentro dele, a classe Usuario do item 4. Edite o arquivo web.xml de sua aplicação web e copie nele, o conteúdo do item 5. Crie a JSp de bem vindo copiando o conteúdo do item 6 e crie a JSP de erro do item 7. 2. loginUI.jsp Nesta JSP o usuário realiza tentativa de login. Ela chama o servlet loginServlet, que recupera o login e a senha digitadas e verifica se existe algum usuário cadastrado com eles. <%@page contentType="text/html"%> <html> <head><title>Login UI</title></head> <body> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1" method="post" action="LoginServlet"> <p>Login <input type="text" name="login"> </p> <p>Senha <input type="text" name="senha"> </p> <p>&nbsp;</p> <p> <input type="submit" name="Submit" value="ok"> </p> </form> <p>&nbsp; </p> </body> </html> Page 3 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved 3. LoginServlet.Java package controllers; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import models.administrativo.Usuario; import java.util.*; /** * Servlet chamado da JSP de login do sistema * Recupera o login e senha digitados na JSP de login e instancia objeto * Usuario que verifica se existe alguem cadastrado com o login/senha informados * De acordo com o resultado, direiona para a UI de usuario o de erro de login * * @author hengholmjr * @version */ public class LoginServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String login = request.getParameter("login"); String senha = request.getParameter("senha"); Usuario usuarioSistema = new Usuario(login, senha); //Definindo para qual pg será redirecionado o sistema String destinoUI = "erroLoginUI.jsp"; if(usuarioSistema.verificaLoginUsuario()){ HttpSession session = request.getSession(true); //Colocando o objeto na sessão do usuario session.setAttribute("usuarioSistema", usuarioSistema); destinoUI = "bemVindoUI.jsp"; } //Redirecionando o sistema RequestDispatcher rd = request.getRequestDispatcher(destinoUI); rd.forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } Page 4 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Servlet de login ao sistema"; } } 4. CLASSE USUARIO package models.administrativo; public class Usuario { private String nome = "Usuário com login incorreto", login = "", senha = ""; int coUsuario = 0; public Usuario(String login, String senha) { this.login = login; this.senha = senha; verificaLoginUsuario(); } public Boolean verificaLoginUsuario() { if(login.equals("l123") && senha.equals("s123")){ coUsuario = 1; nome = "FULANO DE TAL"; return true; } return false; } public String getNome() { public void setNome(String nome) { public String getLogin() { public void setLogin(String login) login; } public String getSenha() { public void setSenha(String senha) senha; } } return nome; } this.nome = nome; } return login; } { this.login = return senha; } { this.senha = 5. web.xml Necessário cadastrar as classes dos servlets neste arquivo, para que sejam encontrados em tempo de execução. Veja no exemplo abaixo, como dar nomes ao servlets e indicar para a plataforma Java, onde os mesmos se encontram. <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> Page 5 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved <display-name>Teste de aplicação web usando Servlets</display-name> <description>Aplicação web</description> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>controllers.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> </web-app> 6. bemVindo.jsp <%@page import="models.administrativo.Usuario"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-88591"> <title>Insert title here</title> </head> <body> <% Usuario usuarioSistema = (Usuario)session.getValue("usuarioSistema"); out.println("BEM VINDO Sr(a) " + usuarioSistema.getNome()); %> </body> </html> 7. erroLoginUI.jsp Implemente uma JSP de erro de login. Page 6 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved Exemplo de chamada de Jsp por links passando parâmetros <%@page contentType="text/html"%> <html> <head><title>JSP Page</title></head> <body> <p><a href=”pagina.jsp?codigo=10&acao=”adicionar”> Adicionar item A</a></p> <p>&nbsp;</p> <p>&nbsp; </p> </body> </html> Page 7 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved 8. Jsp chamada recupera os dados enviados por int codigoMercadoria = integer.parseInt(request.getParameter("codigo")); String acao = request.getParameter("acao "); Direcionando de uma JSP para outra Basta inserir, no local apropriado, as instruções abaixo com a localização da página destino, neste exemplo /jsp/teste.jsp Os objetos request e response existem implicitamente em todas as páginas JSP. Deste modo, não é necessário declará-los //Definindo para qual pg será redirecionado o sistema RequestDispatcher rd = request.getRequestDispatcher("/jsp/teste.jsp"); //redirecionando o sistema rd.forward(request, response); 9. Exemplo de chamada de servlet por links <a href=”servlets/servletTeste?codigo=1&acao=alterarCadastro”> Mercadoria A</a> <a href=”servlets/servletTeste?codigo=1&acao=excluir”> Mercadoria A</a> Servlet chamado public class servletTeste extends HttpServlet { public void init(ServletConfig config) throws ServletException { super.init(config); } public void destroy() { } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String codigo = request.getParameter("codigo"); String acao = request.getParameter("acao"); //FAÇA AS AÇÕES NECESSÁRIAS //Definindo para qual pg será redirecionado o sistema RequestDispatcher rd = request.getRequestDispatcher("/jsp/mntCadastro.jsp"); //redirecionando o sistema rd.forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } } Page 8 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved 10.Redirecionando páginas <% if( ..........) { %> <jsp:forward page="/teste/jsp/login.jsp"> <jsp:param name=”userid” value=”<%=userId%>”/> <jsp:param name=”userLogin” value=”<%=userLogin%>”/> </jsp:forward> <% else { %> <jsp:forward page=”error.jsp”/> <% } %> <jsp:forward page="/teste/jsp/login.jsp" / > 11.Imports Importando classes na pg <%@ page import=”com.wrox.Book” %> Declaração de variáveis na pg <%! String mensagem = “”; %> servlet componente web ou programa que gera conteúdo web dinamicamente; escritos utilizando-se servlets API do Java; permite escrever código que recebe e responde dinamicamente solicitações cliente Page 9 of 9 Documento: Exemplo completo utilização Servlet SytCom Training 2014. All rights reserved