Introdução ao desenvolvimento web com Java

36
Introdu¸c˜ ao Servlet Container HTML Servlet JSP (JavaServer Pages) Modelo mvc Cookies e Sess˜oes Introdu¸ ao ao desenvolvimento Web com Java Fellipe Fonseca Universidade Estadual de Feira de Santana 28 de Agosto de 2013 Fellipe Fonseca Introdu¸c˜ ao ao desenvolvimento Web com Java

Transcript of Introdução ao desenvolvimento web com Java

Page 1: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Introducao ao desenvolvimento Web com Java

Fellipe Fonseca

Universidade Estadual de Feira de Santana

28 de Agosto de 2013

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 2: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Introducao

Servlet Container

Hyper Text Markup Language (HTML)

Servlet

JSP (JavaServer Pages)

Modelo Mvc

Cookies e Sessoes

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 3: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Comunicacao Cliente-Servidor

Introducao

Algumas vantagens

Portabilidade

Facilidade de Programacao

Flexibilidade

Escalabilidade

Eficiencia

Recompilacao Automatica

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 4: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Comunicacao Cliente-Servidor

Comunicacao Cliente-Servidor

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 5: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Apache TomcatIntegrando o Tomcat no Netbeans

Servlet Container

E um servidor que interage com as ferramentas Java.

Exemplo: Jetty, Apache Tomcat

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 6: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Apache TomcatIntegrando o Tomcat no Netbeans

Apache Tomcat

Download no site: http://tomcat.apache.org

Executando o tomcat:$ cd tomcat-7/bin$ ./startup.shacesse http://localhost:8080

Finalizando o tomcat:$ cd tomcat-7/bin$ ./shutdown.sh

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 7: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Apache TomcatIntegrando o Tomcat no Netbeans

Integrando o Tomcat no Netbeans

1 Va na aba Servicos

2 Clique com o botao direito em Servidores e clique emadicionar servidor

3 Selecione o Apache Tomcat

4 Em localizacao do servidor e em Base do catalina, selecione odiretorio do tomcat

5 Coloque o nome de usuario e senha e clique em finalizar

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 8: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

index.html

Hyper Text Markup Language (HTML)

<html><head>

<title>Tıtulo da pagina</title></head><body>

Texto aqui !!</body>

</html>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 9: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

index.html

index.html

<html><head>

<title>Siecomp</title><meta http-equiv=”Content-Type”

content=”text/html;charset=ISO-8859-1”></head><body>

<form>

Login: <input type=”text” name=”login”/> <br>Senha: <input type=”password” name=”senha”> <br><input type=”submit” value=”entrar”/>

</form>

</body> Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 10: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Servlet

Interface Servlet

void init(ServletConfig config)Chamado pelo container, indica que o Servlet esta ativo

public ServletConfig getServletConfig()Retorna um ServletConfig com parametros do Servlet

public void service(ServletRequest req, ServletResponse res)Chamado pelo container, permite ao Servlet responderrequisicoes

public String getServletInfo()Retorna informacoes sobre o Serlvet

public void destroy()Chamado pelo Container para indicar que o servico “caiu”

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 11: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

LoginServlet

public class LoginServlet extends HttpServlet {@Overridepublic void init(ServletConfig config) throws ServletException{}@Override public void doGet(HttpServletRequest req,

HttpServletResponse res) throws ServletException, IOException {ServletOutputStream out = res.getOutputStream();res.setContentType(”text/html”);String page;page = “<html> <head> <title> RespostaServlet </title> ”+ “</head> <body> Oi ” + req.getParameter(”login”) +“ :) </body> </html>”;out.println(page); Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 12: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

HttpServletRequest

Metodos que acessam parametros

String getParameter(String nome)

Enumeration getParametersNames()

String[ ] getParameterValues(String nome)

Exemplo de uma String de dados:

param1=Fellipe&param2=20

Os valores sao lidos decodificados!

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 13: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

HttpServletRequest

setStatus(int codigo)

Define o status da resposta

setHeader(String campo, String valor)

Define o valor de um campo do cabecalho resposta

addHeader(String campo, String valor)

Adiciona uma tupla (campo, valor) ao cabecalho da resposta

sendRedirect(String URL)

Redireciona a resposta para outra URL

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 14: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

ServletContext

Alem dos parametros de inicializacao do contexto do Servlet,podemos usar esse objeto para atribuir e recuperar atributos queserao compartilhados por todos os Servlets do contexto.

java.lang.Object getAttribute(String nomeDoAtributo);

java.util.Enumeration getAttributeNames();

void removeAttribute(String nomeDoAtributo);

void setAttribute(String nomeDoAtributo, String valor doAtributo);

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 15: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Passando parametros para o Servlet

/Siecomp/web/WEB-INF/web.xml

<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>servlets.LoginServlet</servlet-class><init-param>

<param-name>mensagem</param-name><param-value¿Bem vindo</param-value>

</init-param>

</servlet>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 16: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Passando parametros para o Servlet

@Overridepublic void init(ServletConfig config) throws ServletException{

//Recuperando parametroString parametro1 = config.getInitParameter(”mensagem”);//Retornando contextoServletContext sc = config.getServletContext();//Adicionando atributo ao contexto.sc.setAttribute(”msg”, parametro1);

}

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 17: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Passando parametros para o Servlet

@Overridepublic void doPost(HttpServletRequest req, HttpServletResponseres) throws ServletException, IOException{

ServletOutputStream out = res.getOutputStream();res.setContentType(”text/html”);ServletContext sc = req.getServletContext();String mensagem = sc.getAttribute(”msg”).toString();

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 18: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Passando parametros para o Servlet

String page;page = ”<html> <head> <title>RespostaServlet</title>

</head>”+ ”<body>” + mensagem + ” ” +req.getParameter(”login”) + ” :) </body>”+ ”</html>”;

out.println(page);}

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 19: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Formatacao da pagina

Imagine um Servlet para gerar o seguinte HTML...

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 20: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

LoginServletHttpServletRequestHttpServletRequestServletContextPassando parametros para o Servlet

Formatacao da pagina

Ficaria assim:

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 21: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

JavaServer Pages

JSP (JavaServer Pages)

<% @page contentType=”text/html”pageEncoding=”ISO-8859-1”% >

<!DOCTYPE html><html>

<head><meta http-equiv=”Content-Type”

content=”text/html;charset=ISO-8859-1”><title>JSP Page</title >

</head><body>

Ola <%=request.getParameter(”login”) %>

</body></html> Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 22: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

JavaServer Pages

JSP (JavaServer Pages)

<body>Ola<%if(request.getParameter(”sexo”).equals(”masculino”)){out.print(”senhor”);

}else{out.print(”senhora”);

} %>

<%=request.getParameter(”login”)%> <br>

A data corrente e ”<%=new Date()%>”<br></body>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 23: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Repassando a requisicaoApresentando a mensagem

Modelo mvc

O Servlet fica com a logica de negocio e o Jsp com a logica deapresentacao

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 24: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Repassando a requisicaoApresentando a mensagem

Repassando a requisicao

public void doPost(HttpServletRequest req, HttpServletResponseres) throws ServletException, IOException{

String login = req.getParameter(”login”);String sexo = req.getParameter(”sexo”);String tratamento;Date data = new Date();if(sexo.equals(”masculino”)){tratamento = ”senhor”;

}else{tratamento = ”senhora”;

}

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 25: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Repassando a requisicaoApresentando a mensagem

Repassando a requisicao

req.setAttribute(”login”, login);req.setAttribute(”tratamento”, tratamento);req.setAttribute(”data”, data);req.getRequestDispatcher(”/mensagem.jsp”).forward(req, res);

}

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 26: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Repassando a requisicaoApresentando a mensagem

Apresentando a mensagem

<body>Ola ${tratamento} ${login} <br>A data corrente e ”${data}”</body>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 27: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Cookies e Sessoes: Armazenando informacoes do usuario

Exemplo: carrinho de compras

Como manter um historico das compras efetuadas pelo cliente?

Exemplo: login

Como saber se o usuario ja logou na aplicacao?

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 28: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Definindo um cokie

Cookie c = new Cookie(“Contador”,“0”);c.setComment(“Cookie de exemplo / teste”);c.setMaxAge(60);response.addCookie(c);

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 29: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Atributos do cookie

Comentario

String:getComment() e setComment(valor:String)

Perıodo de expiracao (em segundos)

int:getMaxAge() e setMaxAge(valor:int)Valor negativo cria um cookie que nunca expira

Domınio (servidor)

String:getDomain() e setDomain(valor:String)

Nome

String:getNome() e setNome(valor:String)

Valor

String:getValor() e setValor(valor:String)

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 30: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Analise

O cookie e enviado toda vez que o cliente fizer a requisicao,desde que ele nao tenha expirado

Desvantagem

Muitos usuarios desabilitam no browser o armazenamento decookiesCada cookie so armazena um valor e o valor tem que ser dotipo String

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 31: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Sessoes

Servico oferecido pelo servidor de aplicacao

Deve ser gerenciado pelo seu Servlet

O programador deve verificar se ja existe uma secao para oServlet, caso contrario deve criar uma

A partir daı qualquer requisicao feita pelo mesmo usuario(ip:browser) fornecera o mesmo objeto HttpSession, mesmopara Servlets diferentes

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 32: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Exemplo: Sistema de Login

@Overridepublic void doGet(HttpServletRequest req, HttpServletResponseres) throws ServletException, IOException{

String login = req.getParameter(”login”);String senha = req.getParameter(”senha”);List<Usuario> users = (List)

req.getServletContext().getAttribute(”users”);Usuario userLogado = logar(login, senha, users);req.setAttribute(”mensagem”, ””);HttpSession sessao = req.getSession(true);

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 33: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Exemplo: Sistema de Login

if(userLogado != null){sessao.setAttribute(”user”, userLogado);if(userLogado.getAdm()){

req.getRequestDispatcher(”/Administrador.jsp”).forward(req,res);

}else{req.getRequestDispatcher(”/UsuarioComum.jsp”).forward(req,

res);}

}else{sessao.removeAttribute(”user”);req.setAttribute(”mensagem”, ”Erro: login e/ou senha

invalido(s)!”); Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 34: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Pagina do administrador

<body>Oi ${user.login} voce tem acesso como administrador.</body>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 35: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Pagina do usuario comum

<body>Oi ${user.login} voce tem acesso como usuario comum.</body>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java

Page 36: Introdução ao desenvolvimento web com Java

IntroducaoServlet Container

HTMLServlet

JSP (JavaServer Pages)Modelo mvc

Cookies e Sessoes

Definindo um cokieAtributos do cookieAnaliseSessoesExemplo: Sistema de LoginExemplo: Sistema de LoginPagina do administradorPagina do usuario comumPagina de login

Pagina de login

<body><% if(request.getAttribute(”mensagem”) != null){out.println(request.getAttribute(”mensagem”));

}%>

<form method=”GET” action=”/Siecomp/servlets/login”>Login: <input type=”text” name=”login”/> <br>Senha: <input type=”password” name=”senha”> <br><input type=”submit” value=”entrar”/>

</form>

</body>

Fellipe Fonseca Introducao ao desenvolvimento Web com Java