Coder Social home page Coder Social logo

alura-curso-servlet-parte-1-fundamentos-da-programacao-web-java's Introduction

Curso Servlet Parte 1: Fundamentos da programação web Java

https://cursos.alura.com.br/course/servlets-fundamentos-programacao-web-java



05 Apache HTTP ou Apache Tomcat?

Existem literalmente milhares de servidores web, cada linguagem e plataforma possui os seus. No mundo Java o Apache Tomcat talvez é um dos mais famosos mas existem outros.

O Tomcat faz parte da Apache Foundation que é uma organização que desenvolve vários projetos Open Source. Agora a Apache Foundation possui um outro servidor ainda mais famoso, o Apache HTTP (também é chamado apenas Apache). Ambos, Apache HTTP e Apache Tomcat são servidores web. Qual é a diferença então?

O Tomcat é puramente Java enquanto Apache HTTP é escrito em C. Além disso, o Apache HTTP é uma servidor estático (por padrão pelo menos) e precisa de alguma integração com outra linguagem para se gerar HTML dinamicamente. O Tomcat já é dinâmico de cara, usando Java e JSP, claro!

13 O que aprendemos?

  • Apache Tomcat ou apenas Tomcat é um servidor web em Java

  • Tomcat entende o protocolo HTTP e roda por padrão no http://localhost:8080

  • O projeto Java faz parte da URL, no nosso caso: http://localhost:8080/gerenciador

  • Uma aplicação web Java pode ter páginas HTML

  • Uma servlet é um objeto Java que podemos chamar a partir de uma requisição HTTP

  • Para mapear a URL para uma servlet usamos a anotação @WebServlet

  • Uma servlet deve estender a classe HttpServlet e sobrescrever um determinado método (por exemplo service)

  • /gerenciador/src/br/aluraservlet1/OiMundoServlet.java

package br.aluraservlet1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//oi
@WebServlet(urlPatterns=("/oi"))
public class OiMundoServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException{
		
		PrintWriter out = resp.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Ola mundo Servlet");
		out.println("</body>");
		out.println("</html>");
		
		System.out.println("O servlet foi chamado!!!");
				
	}
	
}

Voltar ao Índice


02 Enviando parâmetros

package br.aluraservlet1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/novaempresa")
public class NovaEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("Cadastrando nova empresa!!");
		
		String nomeEmpersa = request.getParameter("nome");
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Empresa Cadastrada "+nomeEmpersa+" com sucesso!");
		out.println("</body>");
		out.println("</html>");
		
	}

}

03 Parâmetros da requisição

  • /gerenciador/WebContent/formNovaEmpresa.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<form action="/gerenciador/novaEmpresa" method="POST">
	
		Nome: <input type="text" name="nome" />
		<input type="submit" />
	
	</form>
</body>
</html>

07 Apenas POST

package br.aluraservlet1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	/*protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("Cadastrando nova empresa!!");
		
		String nomeEmpersa = request.getParameter("nome");
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Empresa Cadastrada "+nomeEmpersa+" com sucesso!");
		out.println("</body>");
		out.println("</html>");
	}*/
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Cadastrando nova empresa!!");
		
		String nomeEmpersa = req.getParameter("nome");
		
		PrintWriter out = resp.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Empresa Cadastrada "+nomeEmpersa+" com sucesso!");
		out.println("</body>");
		out.println("</html>");
	
	}

}

Voltar ao Índice


02 Definido modelo

package br.aluraservlet1;

public class Empresa {

	private Integer id;
	private String nome;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	
	
}
package br.aluraservlet1;

import java.util.ArrayList;
import java.util.List;

public class Banco {
	
	private static List<Empresa> listaEmpresas = new ArrayList<>();
	
	static {
		Empresa empresa = new Empresa();
		Empresa empresa2 = new Empresa();
		empresa.setNome("Alura Static");
		empresa2.setNome("Caelum Static");
		listaEmpresas.add(empresa);
		listaEmpresas.add(empresa2);
	}

	public void adicionaEmpresa(Empresa empresa) {
		Banco.listaEmpresas.add(empresa);
	}

	public List<Empresa> getListaEmpresas() {
		return Banco.listaEmpresas;
	}

}
package br.aluraservlet1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Cadastrando nova empresa!!");
		
		String nomeEmpersa = req.getParameter("nome");
		Empresa empresa = new Empresa();
		empresa.setNome(nomeEmpersa);
		
		Banco banco = new Banco();
		banco.adicionaEmpresa(empresa);
		
		
		PrintWriter out = resp.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("Empresa Cadastrada "+nomeEmpersa+" com sucesso!");
		out.println("</body>");
		out.println("</html>");
	
	}

}
package br.aluraservlet1;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ListaEmpresas")
public class ListaEmpresasServlets extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Banco banco = new Banco();
		List<Empresa> lista = banco.getListaEmpresas();
		
		PrintWriter out = response.getWriter();
		out.println("<html><body>");
		out.println("<ul>");
		for (Empresa empresa : lista) {
			out.println("<li>"+empresa.getNome()+"</li>");
		}
		out.println("</ul>");
		out.println("</body></html>");
		
		
	}

}

Voltar ao Índice

<%
	String nomeEmpresa = "ALURA Teste";
	System.out.println(nomeEmpresa);
%>
<html>
<head>
<title>Empresa Criada</title>
</head>
	<body>
		Empresa Cadastrada <%=nomeEmpresa %> com sucesso!
	</body>
</html>

Voltar ao Índice


  • /gerenciador/WebContent/novaEmpresaCriada.jsp
<html>
<head>
<title>Empresa Criada</title>
</head>
<body>
	Empresa Cadastrada ${nome_empresa } com sucesso, ok!!
</body>
</html>
  • /gerenciador/WebContent/formNovaEmpresa.jsp
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%@page import="br.aluraservlet1.Empresa"%>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Página Lista de Empresas JSP</title>
</head>
<body>
	<h3>Lista de Empresas (JSP)</h3>
	
	<ul>
		<c:forEach items="${empresas}" var="empresa">
			<li>${empresa.nome} - <fmt:formatDate pattern="dd/MM/yyyy" value="${empresa.dataAbertura }"/></li>	
		</c:forEach>
	</ul>
</body>
</html>
package br.aluraservlet1;

import java.util.Date;

public class Empresa {

	private Integer id;
	private String nome;
	//private Date dataAbertura = new Date();
	private Date dataAbertura;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataAbertura() {
		return dataAbertura;
	}

	public void setDataAbertura(Date dataAbertura) {
		this.dataAbertura = dataAbertura;
	}
	

}
package br.aluraservlet1;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Cadastrando nova empresa!!");

		String nomeEmpersa = req.getParameter("nome");
		
		String paramDataEmpersa = req.getParameter("data");
		Date dataAbertura = null;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			dataAbertura = sdf.parse(paramDataEmpersa);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Empresa empresa = new Empresa();
		empresa.setNome(nomeEmpersa);
		empresa.setDataAbertura(dataAbertura);

		Banco banco = new Banco();
		banco.adicionaEmpresa(empresa);

		// chamar o JSP
		RequestDispatcher rd = req.getRequestDispatcher("/novaEmpresaCriada.jsp");
		req.setAttribute("nome_empresa", empresa.getNome());
		rd.forward(req, resp);

	}

}
  • /gerenciador/WebContent/novaEmpresaCriada.jsp
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<c:url value="/novaEmpresa" var="linkServletNovaEmpersa" />	

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>FORM NOVA EMPRESA - JSP</title>
</head>
<body>
	<form action="${linkServletNovaEmpersa}" method="POST">
	
		Nome: <input type="text" name="nome" />
		Data Abertura <input type="text" name="data"/>
		<input type="submit" />
	
	</form>
</body>
</html>

Voltar ao Índice


package br.aluraservlet1;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Cadastrando nova empresa!!");

		String nomeEmpersa = req.getParameter("nome");
		
		String paramDataEmpersa = req.getParameter("data");
		Date dataAbertura = null;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			dataAbertura = sdf.parse(paramDataEmpersa);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Empresa empresa = new Empresa();
		empresa.setNome(nomeEmpersa);
		empresa.setDataAbertura(dataAbertura);

		Banco banco = new Banco();
		banco.adicionaEmpresa(empresa);

		// chamar o JSP
//		RequestDispatcher rd = req.getRequestDispatcher("/listaEmpresas");
//		req.setAttribute("nome_empresa", empresa.getNome());
//		rd.forward(req, resp);
		
		req.setAttribute("nome_empresa", empresa.getNome());
		resp.sendRedirect("listaEmpresas");

	}

}

Voltar ao Índice


Removendo

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%@page import="br.aluraservlet1.Empresa"%>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Página Lista de Empresas JSP</title>
</head>
<body>
	<h3>Lista de Empresas (JSP)</h3>

<br>
	<c:if test="${not empty nome_empresa }">
		Empresa Cadastrada ${nome_empresa } com sucesso, ok!!
	</c:if>
<br>
	
	<ul>
		<c:forEach items="${empresas}" var="empresa">
		
			<li>${empresa.nome} - 
			<fmt:formatDate pattern="dd/MM/yyyy" value="${empresa.dataAbertura }"/> - 
			<a href="/gerenciador/removeEmpresa?id=${empresa.id }">Remove</a> 
			</li>	
		</c:forEach>
	</ul>

</body>
</html>
package br.aluraservlet1;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/removeEmpresa")
public class RemoveEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String paramId = request.getParameter("id");
		
		Integer id = Integer.valueOf(paramId);
		System.out.println(id);
		
		Banco banco = new Banco();
		banco.removeEmrpesa(id);
		
		response.sendRedirect("listaEmpresas");
		
	}

}
package br.aluraservlet1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Banco {
	
	private static List<Empresa> listaEmpresas = new ArrayList<>();
	private static Integer chaveSequencial = 1;
	
	static {
		Empresa empresa = new Empresa();
		Empresa empresa2 = new Empresa();
		empresa.setNome("Alura Static");
		empresa2.setNome("Caelum Static");
		listaEmpresas.add(empresa);
		listaEmpresas.add(empresa2);
		empresa.setId(chaveSequencial++);
		empresa2.setId(chaveSequencial++);
	}

	public void adicionaEmpresa(Empresa empresa) {
		empresa.setId(Banco.chaveSequencial++);
		Banco.listaEmpresas.add(empresa);
	}

	public List<Empresa> getListaEmpresas() {
		return Banco.listaEmpresas;
	}

	public void removeEmrpesa(Integer id) {
		
		Iterator<Empresa> it = listaEmpresas.iterator();
		
		while(it.hasNext()) {
			Empresa emp = it.next();
			if(emp.getId() == id) {
				it.remove();
			}
		}
		
		/*for (Empresa empresa : listaEmpresas) {
			if(empresa.getId() == id) {
				listaEmpresas.remove(empresa);
			}
		}*/
		
	}

}

Alterando

package br.aluraservlet1;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

@WebServlet("/alteraEmpresa")
public class AlteraEmpresaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		System.out.println("ALTERANDO nova empresa");
		
		String nomeEmpresa = request.getParameter("nome");
		String paramDataEmpresa = request.getParameter("data");
		
		String paramId = request.getParameter("id");
		Integer id = Integer.valueOf(paramId);
		
		Date dataAbertura = null;
		
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			dataAbertura = sdf.parse(paramDataEmpresa);
		} catch (ParseException | java.text.ParseException e) {
			throw new ServletException(e);
		}
		
		System.out.println(id);
		
		Banco banco = new Banco();
		Empresa empresa = banco.buscaEmpresaId(id);
		empresa.setNome(nomeEmpresa);
		empresa.setDataAbertura(dataAbertura); // tudo em "memoria"
		
		response.sendRedirect("listaEmpresas");
		
	}

}
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<c:url value="/alteraEmpresa" var="linkServletNovaEmpersa" />	
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>FORM NOVA EMPRESA - JSP</title>
</head>
<body>
	<form action="${linkServletNovaEmpersa}" method="POST">
	
		Nome: <input type="text" name="nome" value="${empresa.nome}" />
		Data Abertura <input type="text" name="data" 
		 value="<fmt:formatDate pattern="dd/MM/yyyy" value="${empresa.dataAbertura}"/>"/>
		<input type="hidden" name="id" value="${empresa.id }"  >
		<input type="submit" />
	
	</form>
</body>
</html>
package br.aluraservlet1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Banco {
	
	private static List<Empresa> listaEmpresas = new ArrayList<>();
	private static Integer chaveSequencial = 1;
	
	static {
		Empresa empresa = new Empresa();
		Empresa empresa2 = new Empresa();
		empresa.setNome("Alura Static");
		empresa2.setNome("Caelum Static");
		listaEmpresas.add(empresa);
		listaEmpresas.add(empresa2);
		empresa.setId(chaveSequencial++);
		empresa2.setId(chaveSequencial++);
	}

	public void adicionaEmpresa(Empresa empresa) {
		empresa.setId(Banco.chaveSequencial++);
		Banco.listaEmpresas.add(empresa);
	}

	public List<Empresa> getListaEmpresas() {
		return Banco.listaEmpresas;
	}

	public void removeEmrpesa(Integer id) {
		
		Iterator<Empresa> it = listaEmpresas.iterator();
		
		while(it.hasNext()) {
			Empresa emp = it.next();
			if(emp.getId() == id) {
				it.remove();
			}
		}
		
		/*for (Empresa empresa : listaEmpresas) {
			if(empresa.getId() == id) {
				listaEmpresas.remove(empresa);
			}
		}*/
		
	}

	public Empresa buscaEmpresaId(Integer id) {
		for(Empresa empresa : listaEmpresas) {
			if(empresa.getId() == id) {
				return empresa;
			}
		}
		return null;
	}

}
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%@page import="br.aluraservlet1.Empresa"%>
<%@page import="java.util.List"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Página Lista de Empresas JSP</title>
</head>
<body>
	<h3>Lista de Empresas (JSP)</h3>

<br>
	<c:if test="${not empty nome_empresa }">
		Empresa Cadastrada ${nome_empresa } com sucesso, ok!!
	</c:if>
<br>
	
	<ul>
		<c:forEach items="${empresas}" var="empresa">
		
			<li>${empresa.nome} - 
			<fmt:formatDate pattern="dd/MM/yyyy" value="${empresa.dataAbertura }"/> - 
			<a href="/gerenciador/mostraEmpresa?id=${empresa.id }">Editar</a> -  
			<a href="/gerenciador/removeEmpresa?id=${empresa.id }">Remove</a> 
			</li>	
		</c:forEach>
	</ul>

</body>
</html>

Voltar ao Índice


Voltar ao Índice


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.