Upload
fellipefonseca
View
222
Download
2
Embed Size (px)
Citation preview
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¶m2=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