2.1 Classe HttpServletRequest
A maior parte do trabalho que seu servlet precisa fazer com base nas informações recebidas da solicitação. O objeto é responsável por isso HttpServletRequest
, que o container vai passar para o seu servlet (para o método service
ou métodos doGet()
, doPost()
etc.)
Este objeto possui alguns métodos, pois ele simplesmente armazena os dados da requisição, e através dele você pode interagir com o container.
Os métodos podem ser divididos em 2 grandes grupos:
- Métodos relacionados à autorização do usuário
- Métodos para trabalhar com dados de consulta
Darei os métodos de autorização do usuário na forma de uma tabela, mas não os analisaremos. O fato é que eles raramente são usados para autorizar um usuário. Todas as estruturas populares usam suas próprias abordagens muito mais avançadas para autorização.
Eu deveria listá-los, mas, novamente, não vi ninguém usá-los.
Método | Descrição | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Executa autenticação de resposta |
2 | changeSessionId() |
Forçar a alteração do ID da sessão |
3 | getAuthType() |
Retorna o tipo de autenticação utilizada: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Retorna o login do usuário |
5 | getRequestedSessionId() |
Retorna o SessionID do cliente |
6 | getSession() |
Retorna um objeto HttpSession |
7 | getUserPrincipal() |
Retorna um objeto java.security.Principal |
8 | login(username, password) |
Realiza o login do usuário |
9 | logout() |
Sai da sessão do usuário |
2.2 Solicitar dados
O segundo grupo de métodos é muito mais interessante. Que tipo de dados temos no pedido?
- método http
- URI
- Opções
- Títulos
Vamos ver quais métodos estão disponíveis para trabalhar com eles:
Método | Descrição | |
---|---|---|
1 | getMethod() |
Retorna o método HTTP: GET, POST, DELETE, ... |
2 | getRequestURI() |
Retorna o URI da solicitação: http://codegym.cc/my/data |
3 | getRequestURL() |
Retorna o URL da solicitação: http://codegym.cc/my/data |
4 | getQueryString() |
Retorna Consulta, ou seja, tudo após o ? |
5 | getParameterMap() |
Retorna uma lista de parâmetros de consulta |
6 | getParameter(String name) |
Retorna o valor do parâmetro pelo seu nome |
7 | getContentType() |
Retorna o corpo da solicitação MimeType |
8 | getReader() |
Leitor para ler o corpo da solicitação como texto |
9 | getInputStream() |
InputStream para ler o corpo da solicitação como byte[] |
10 | getSession() |
Retorna um objeto HttpSession |
onze | getCookies() |
Retorna uma matriz de objetos Cookie[] |
12 | getHeaderNames() |
Retorna uma lista de títulos, apenas nomes |
13 | getHeader(String name) |
Retorna o valor do cabeçalho por nome |
14 | getServletPath() |
Retorna a parte da URL que se refere ao servlet |
15 | getContextPath() |
Retorna a parte do URI que especifica o conteúdo da solicitação |
E isso nem é todos os métodos ...
Embora depois de estudarmos o protocolo HTTP e aprendermos a trabalhar com HttpClient, tudo é mais ou menos familiar aqui, não é?
Vamos escrever um servlet para o qual possa ser passado texto e uma cor, e ele retornará uma página HTML com esse texto escrito na cor especificada. Gostou da ideia?
Vamos começar escrevendo nosso servlet:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Agora precisamos obter o texto e a cor passados do URI pelo usuário:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” and “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
E, finalmente, você precisa enviar o texto como HTML. Abordaremos isso na próxima palestra, mas aqui darei uma pequena dica:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION