O documento apresenta uma introdução ao desenvolvimento web com Java abordando tópicos como servlet container, HTML, servlet, JSP, modelo MVC, cookies e sessões. O documento é uma apresentação feita por Fellipe Fonseca da Universidade Estadual de Feira de Santana.
1. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Introdu¸c˜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
2. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Introdu¸c˜ao
Servlet Container
Hyper Text Markup Language (HTML)
Servlet
JSP (JavaServer Pages)
Modelo Mvc
Cookies e Sess˜oes
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
3. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Comunica¸c˜ao Cliente-Servidor
Introdu¸c˜ao
Algumas vantagens
Portabilidade
Facilidade de Programa¸c˜ao
Flexibilidade
Escalabilidade
Eficiˆencia
Recompila¸c˜ao Autom´atica
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
5. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Apache Tomcat
Integrando o Tomcat no Netbeans
Servlet Container
´E um servidor que interage com as ferramentas Java.
Exemplo: Jetty, Apache Tomcat
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
6. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Apache Tomcat
Integrando o Tomcat no Netbeans
Apache Tomcat
Download no site: http://tomcat.apache.org
Executando o tomcat:
$ cd tomcat-7/bin
$ ./startup.sh
acesse http://localhost:8080
Finalizando o tomcat:
$ cd tomcat-7/bin
$ ./shutdown.sh
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
7. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Apache Tomcat
Integrando o Tomcat no Netbeans
Integrando o Tomcat no Netbeans
1 V´a na aba Servi¸cos
2 Clique com o bot˜ao direito em Servidores e clique em
adicionar servidor
3 Selecione o Apache Tomcat
4 Em localiza¸c˜ao do servidor e em Base do catalina, selecione o
diret´orio do tomcat
5 Coloque o nome de usu´ario e senha e clique em finalizar
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
8. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
index.html
Hyper Text Markup Language (HTML)
<html>
<head>
<title>T´ıtulo da p´agina</title>
</head>
<body>
Texto aqui !!
</body>
</html>
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
9. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
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 Introdu¸c˜ao ao desenvolvimento Web com Java
10. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Servlet
Interface Servlet
void init(ServletConfig config)
Chamado pelo container, indica que o Servlet est´a ativo
public ServletConfig getServletConfig()
Retorna um ServletConfig com parˆametros do Servlet
public void service(ServletRequest req, ServletResponse res)
Chamado pelo container, permite ao Servlet responder
requisi¸c˜oes
public String getServletInfo()
Retorna informa¸c˜oes sobre o Serlvet
public void destroy()
Chamado pelo Container para indicar que o servi¸co “caiu”
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
11. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
LoginServlet
public class LoginServlet extends HttpServlet {
@Override
public 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 Introdu¸c˜ao ao desenvolvimento Web com Java
12. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
HttpServletRequest
M´etodos que acessam parˆametros
String getParameter(String nome)
Enumeration getParametersNames()
String[ ] getParameterValues(String nome)
Exemplo de uma String de dados:
param1=Fellipe¶m2=20
Os valores s˜ao lidos decodificados!
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
13. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
HttpServletRequest
setStatus(int codigo)
Define o status da resposta
setHeader(String campo, String valor)
Define o valor de um campo do cabe¸calho resposta
addHeader(String campo, String valor)
Adiciona uma tupla (campo, valor) ao cabe¸calho da resposta
sendRedirect(String URL)
Redireciona a resposta para outra URL
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
14. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
ServletContext
Al´em dos parˆametros de inicializa¸c˜ao do contexto do Servlet,
podemos usar esse objeto para atribuir e recuperar atributos que
ser˜ao 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 do
Atributo);
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
15. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Passando parˆametros 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 Introdu¸c˜ao ao desenvolvimento Web com Java
16. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Passando parˆametros para o Servlet
@Override
public void init(ServletConfig config) throws ServletException{
//Recuperando parˆametro
String parametro1 = config.getInitParameter(”mensagem”);
//Retornando contexto
ServletContext sc = config.getServletContext();
//Adicionando atributo ao contexto.
sc.setAttribute(”msg”, parametro1);
}
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
17. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Passando parˆametros para o Servlet
@Override
public void doPost(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException{
ServletOutputStream out = res.getOutputStream();
res.setContentType(”text/html”);
ServletContext sc = req.getServletContext();
String mensagem = sc.getAttribute(”msg”).toString();
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
18. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Passando parˆametros para o Servlet
String page;
page = ”<html> <head> <title>RespostaServlet</title>
</head>”
+ ”<body>” + mensagem + ” ” +
req.getParameter(”login”) + ” :) </body>”
+ ”</html>”;
out.println(page);
}
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
19. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Formata¸c˜ao da p´agina
Imagine um Servlet para gerar o seguinte HTML...
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
20. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
LoginServlet
HttpServletRequest
HttpServletRequest
ServletContext
Passando parˆametros para o Servlet
Formata¸c˜ao da p´agina
Ficaria assim:
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
21. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
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>
Ol´a <%=request.getParameter(”login”) %>
</body>
</html> Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
22. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
JavaServer Pages
JSP (JavaServer Pages)
<body>
Ol´a
<%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 Introdu¸c˜ao ao desenvolvimento Web com Java
23. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Repassando a requisi¸c˜ao
Apresentando a mensagem
Modelo mvc
O Servlet fica com a l´ogica de neg´ocio e o Jsp com a l´ogica de
apresenta¸c˜ao
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
24. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Repassando a requisi¸c˜ao
Apresentando a mensagem
Repassando a requisi¸c˜ao
public void doPost(HttpServletRequest req, HttpServletResponse
res) 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 Introdu¸c˜ao ao desenvolvimento Web com Java
25. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Repassando a requisi¸c˜ao
Apresentando a mensagem
Repassando a requisi¸c˜ao
req.setAttribute(”login”, login);
req.setAttribute(”tratamento”, tratamento);
req.setAttribute(”data”, data);
req.getRequestDispatcher(”/mensagem.jsp”).forward(req, res);
}
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
26. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Repassando a requisi¸c˜ao
Apresentando a mensagem
Apresentando a mensagem
<body>
Ol´a ${tratamento} ${login} <br>
A data corrente ´e ”${data}”
</body>
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
27. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
Cookies e Sess˜oes: Armazenando informa¸c˜oes do usu´ario
Exemplo: carrinho de compras
Como manter um hist´orico das compras efetuadas pelo cliente?
Exemplo: login
Como saber se o usu´ario j´a logou na aplica¸c˜ao?
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
28. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina 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 Introdu¸c˜ao ao desenvolvimento Web com Java
29. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
Atributos do cookie
Coment´ario
String:getComment() e setComment(valor:String)
Per´ıodo de expira¸c˜ao (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 Introdu¸c˜ao ao desenvolvimento Web com Java
30. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
An´alise
O cookie ´e enviado toda vez que o cliente fizer a requisi¸c˜ao,
desde que ele n˜ao tenha expirado
Desvantagem
Muitos usu´arios desabilitam no browser o armazenamento de
cookies
Cada cookie s´o armazena um valor e o valor tem que ser do
tipo String
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
31. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
Sess˜oes
Servi¸co oferecido pelo servidor de aplica¸c˜ao
Deve ser gerenciado pelo seu Servlet
O programador deve verificar se j´a existe uma se¸c˜ao para o
Servlet, caso contr´ario deve criar uma
A partir da´ı qualquer requisi¸c˜ao feita pelo mesmo usu´ario
(ip:browser) fornecer´a o mesmo objeto HttpSession, mesmo
para Servlets diferentes
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
32. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
Exemplo: Sistema de Login
@Override
public void doGet(HttpServletRequest req, HttpServletResponse
res) 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 Introdu¸c˜ao ao desenvolvimento Web com Java
33. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina 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
inv´alido(s)!”); Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
34. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
P´agina do administrador
<body>
Oi ${user.login} vocˆe tem acesso como administrador.
</body>
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
35. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
P´agina do usu´ario comum
<body>
Oi ${user.login} vocˆe tem acesso como usu´ario comum.
</body>
Fellipe Fonseca Introdu¸c˜ao ao desenvolvimento Web com Java
36. Introdu¸c˜ao
Servlet Container
HTML
Servlet
JSP (JavaServer Pages)
Modelo mvc
Cookies e Sess˜oes
Definindo um cokie
Atributos do cookie
An´alise
Sess˜oes
Exemplo: Sistema de Login
Exemplo: Sistema de Login
P´agina do administrador
P´agina do usu´ario comum
P´agina de login
P´agina 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 Introdu¸c˜ao ao desenvolvimento Web com Java