Disciplina:
MsC. Alexandro Vladno
Edmilson Campos
MsC. Fábio Procópio
Esp. Felipe Dantas
MsC. João Maria
MsC. Liviane Melo
Corpo docente:
Ciclo de vida; Funcionamento; Requisições e Respostas.
Programação Web
AULA 05
Edmilson Campos ([email protected]) 5
Edmilson Campos ([email protected]) 6
Edmilson Campos ([email protected]) 12
public class OiMundo extends HttpServlet {
protected void service (HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
PrintWriter out = response.getWriter();
// escreve o texto
out.println("<html>");
out.println("<body>");
out.println("Primeira servlet");
out.println("</body>");
out.println("</html>");
}
}
O objetivo da servlet acima é exibir uma mensagem HTML simples
para os usuários que a requisitarem
Observe que toda classe
Servlet extende HttpServlet
E aqui têm-se os parâmetros request e
response usados para controlar as
requisições e respostas, respectivamente
▪
»
»
»
▪
»
Edmilson Campos ([email protected]) 13
Mapear o nome das Servlets aumenta a flexibilidade e
a segurança da aplicação
Edmilson Campos ([email protected]) 18
▪
»
<html>
<body>
<form action="adicionaContato">
Nome: <input type="text" name="nome" /><br />
E-mail: <input type="text" name="email" /><br />
Endereço: <input type="text" name="endereco" /><br />
Data Nascimento: <input type="text" name="dataNascimento" /><br />
<input type="submit" value="Gravar" />
</form>
</body>
</html>
O atributo action do form indica qual endereço
deve ser chamado ao submeter o formulário, ao clicar no botão Gravar.
Nesse caso, estamos apontando para um endereço que será uma Servlet
que já vamos criar, chamada adicionarContato
Edmilson Campos ([email protected]) 20
▪
public class AdicionaContatoServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
//Recuperando os parâmetros do request
String nome = request.getParameter("nome");
String endereco = request.getParameter("endereco");
String email = request.getParameter("email");
String dataEmTexto = request.getParameter("dataNascimento");
//Realiza operação para inserir contato
//[…]
// Imprime o nome do contato que foi adicionado
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Contato " + nome + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}
Edmilson Campos ([email protected]) 21
▪
▪
<servlet>
<servlet-name>AdicionaContato</servlet-name>
<servlet-class>br.com.caelum.agenda.servlet.AdicionaContatoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AdicionaContato</servlet-name>
<url-pattern>/adicionaContato</url-pattern>
</servlet-mapping>
Atenção para não errar o caminho correto do <server-class> e nem
esquecer a barra da url no <url-pattern>
▪»
»
Edmilson Campos ([email protected]) 22
A razão também de muitas pessoas só conhecerem os métodos GET e
POST se dar pelo fato deles serem os únicos suportados pelo HTML 4
Edmilson Campos ([email protected]) 24
▪
»
public class AdicionaContatoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
//Executado quando a requisição é enviada pelo método GET
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
//Executado quando a requisição é enviada pelo método POST
}
}
▪
» plataforma do cliente informação do browser
» cookies
» sessão
» método HTTP
» stream de dados
String cliente = request.getHeader(“User-Agent”);
Cookie[] cookies = request.getCookies();
String metodo = request.getMethod();
HttpSession sessao = request.getSession();
Edmilson Campos ([email protected]) 25
InputStream entrada = request.getInputStream();
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class BeerSelect extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice<br>");
String c = request.getParameter("color");
out.println("<br>Got beer color " + c);
}
}
Deve-se evitar a utilização de stream. O correto é utilizar páginas JSP
(que será estudo ainda) para retornar ao usuário a resposta
Edmilson Campos ([email protected]) 28
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class CodeReturn extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
response.setContentType(“application/jar");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream(“/bookCode.jar”);
int read = 0;
byte[] bytes = new byte[1024];
OutPutStream os = response.getOutPutStream();
while((read = is.read(bytes)) != -1)
os.write(bytes, 0, read);
os.flush();
os.close();
}
}
Edmilson Campos ([email protected]) 29
▪»
»
Edmilson Campos ([email protected]) 31
ServletOutPutStream out = response.getOutPutStream();
out.writer(umArrayDeBytes);
PrintWriter writer = response.getWriter();
writer.println(“algum texto e html”);
O PrintWriter empacota o ServletOutPutStream, ele possui uma
referência para o ServletOutPutStream, adicionando métodos de
alto nível para tratar caracteres
▪
▪
//...
if (Se o trabalho for para o Servlet){
// O Servlet trata a solicitação
}
else response.sendRedirect(“http://www.ufla.br”);
//...
Edmilson Campos ([email protected]) 34
▪
▪
▪
▪
▪
public RequestDispatcher getRequestDispatcher(String path)
public void forward(ServletRequest req, ServletResponse res)
public void forward(ServletRequest req, ServletResponse res)
Edmilson Campos ([email protected]) 35
▪http://www.corewebprogramming.com/
▪ http://www.w3schools.com/
▪
▪
▪
Edmilson Campos ([email protected]) 44
Top Related