Introdução ao desenvolvimento web com Java

Post on 09-Feb-2017

222 views 2 download

Transcript of 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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