Solicitação de cliente JSP
Ações JSP que usam construções na sintaxe XML para controlar o comportamento do mecanismo de servlet. Aprenderemos mais detalhadamente sobre vários elementos de ação JSP, como solicitação do cliente, resposta do servidor e códigos de status HTTP.
Solicitação de cliente JSP
- Quando a página web é solicitada, ela envia informações ao servidor web no cabeçalho HTTP.
- Podemos usar essas informações usando o objeto HTTPServletRequest.
- As informações enviadas pelo navegador são armazenadas no cabeçalho da solicitação HTTP.
- Estamos usando cabeçalhos diferentes para enviar informações ao objeto de solicitação.
Cabeçalhos em JSP
Diferentes cabeçalhos em JSP são descritos abaixo:
cabeçalho | Descrição | Exemplo |
---|---|---|
ACEITAR | Ele especifica os tipos MIME que o navegador ou outros clientes podem manipular | Imagem/png ou imagem/jpeg |
Aceitar conjunto de caracteres | Ele usa o conjunto de caracteres usado pelo navegador para exibir as informações | ISO-8859-1 |
Aceitar- Codificação | Especifica o tipo de codificação tratada pelo navegador | Gzip ou compactar |
Linguagem de aceitação | Ele especifica o idioma especificado pelos clientes | En,en_us |
Autorização | Cabeçalho usado pelos clientes ao tentar acessar páginas da web protegidas por senha | |
Conexão | Indica se o cliente pode lidar com conexões HTTP persistentes (o navegador pode recuperar vários arquivos) | Mantenha vivo |
Comprimento do conteúdo | Aplicável a solicitações de postagem. Fornece o tamanho dos dados postados em bytes | |
Cookie | Retorna cookie ao servidor (aqueles que foram enviados anteriormente ao navegador) | |
Proprietário | Especifica o host e a porta do URL original | |
Se modificado desde | Indica que requer apenas uma página se ela tiver sido alterada ou modificada | |
Se não modificado desde | Indica que requer uma página somente se ela não tiver sido alterada ou modificada | |
Referente | Indica o URL da página URL de referência | |
Agente de usuário | Identifica o navegador ou cliente que faz a solicitação |
Métodos de cabeçalho HTTP em JSP
Os seguintes métodos são usados para ler o cabeçalho HTTP na página JSP:
- Biscoito[] getCookies() – retorna um array contendo objetos cookie que o cliente enviou
- Enumeração getAttributeNames() – contém enumeração de nomes de atributos para solicitação
- Enumeração getHeaderNames() – contém enumeração de nomes de cabeçalho.
- Enumeração getParameterNames() – contém a enumeração da obtenção de nomes de parâmetros na solicitação.
- HttpSessiongetSession() – retorna a sessão atual associada à solicitação ou se não tiver uma sessão, criará uma nova.
- Local getLocale() – retorna o locale preferido em que o cliente aceitará o conteúdo. Ele foi atribuído à resposta. Por padrão, o valor será o locale padrão do servidor.
- Objeto getAttribute (nome da string) - retorna o valor do atributo nomeado como um objeto.
- ServletInputStreamgetInputStream() - recupera o corpo da solicitação como dados binários.
- String getAuthType() – retorna o nome do esquema de autenticação para proteger o servlet
- String getCharacterEncoding() – retorna o nome da codificação de caracteres usada no corpo da solicitação.
- String getContentType() – retorna o tipo MIME do corpo da solicitação.
- String getContextPath() – retorna a parte do URI da solicitação indica o caminho do contexto do URI
- String getHeader(Nome da string) – retorna o cabeçalho da solicitação como uma string
- String getMethod() – retorna o nome do método HTTP como GET, POST
- String getParameter(Nome da string) – retorna o parâmetro da solicitação como uma string.
- String getPathInfo() – retorna as informações do caminho associadas ao URL
- String getQueryString() – retorna a string de consulta associada ao URL da solicitação
- String getServletPath() – retorna a parte das URLs da solicitação que chama o JSP
- String[] getParameterValues(Nome da string) – retorna a matriz de objetos string contendo os valores que o parâmetro de solicitação possui
Exemplo:
No exemplo abaixo, estamos usando métodos diferentes usando o objeto request
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Client Request Guru JSP</title> </head> <body> <h2>Client Request Guru JSP</h2> <table border="1"> <tr> <th>guru header</th><th>guru header Value(s)</th> </tr> <% HttpSession gurusession = request.getSession(); out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>"); Locale gurulocale = request.getLocale (); out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>"); String path = request.getPathInfo(); out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); String lpath = request.get(); out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); String servername = request.getServerName(); out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>"); int portname = request.getServerPort(); out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>"); Enumeration hnames = request.getHeaderNames(); while(hnames.hasMoreElements()) { String paramName = (String)hnames.nextElement(); out.print ("<tr><td>" + paramName + "</td>" ); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>"); } %>
Explicação do código:
Linha de código 17: Usando o objeto de solicitação, obtemos o objeto de sessão daquela sessão específica e obtemos o valor do objeto dessa sessão
Linha de código 19: Usando o objeto de solicitação, estamos obtendo o código do idioma daquela sessão específica, i.een_US, para esse JSP.
Linha de código 21: Usando o objeto request, estamos obtendo informações de caminho para esse JSP. Neste caso, é nulo porque não há caminho para o URL mencionado.
Linha de código 23: Usando o objeto de solicitação, obtemos o caminho do contexto, ou seja, o caminho raiz
Linha de código 25: Usando o objeto request, estamos obtendo o nome do servidor.
Linha de código 27: Usando o objeto request, estamos obtendo a porta do servidor.
Linha de código 29-35: Usando o objeto de solicitação, obtemos nomes de cabeçalho que aparecem como enumeração e, portanto, obtemos todos os valores de cabeçalho nos nomes de cabeçalho.
Nisto, obtemos todos os valores do cabeçalho como um Cookie, host, conexão, aceitar idioma, aceitar codificação.
Ao executar o código acima, você obtém a seguinte saída:
saída:
Estamos obtendo uma série de valores como nome da sessão, nome do local, nome do caminho, nome do servidor, nome da porta, host, caminho do contexto e todos os valores de cabeçalho disso JSP.
Resposta do servidor JSP
- Quando uma solicitação é processada e a resposta é gerada no servidor web. Consiste em uma linha de status, cabeçalhos de resposta, uma linha em branco e um documento.
- É o objeto da classe HTTPServletResponse, que é um objeto de resposta.
- A linha de status é uma versão do HTML.
Cabeçalhos de resposta em JSP
Os cabeçalhos de resposta em JSP são mencionados abaixo:
cabeçalho | Descrição |
---|---|
Permitir | Ele especifica os métodos de solicitação como GET, POST que o servidor está solicitando |
Controle de cache | O documento de resposta pode ser armazenado em cache. Pode ser público, privado e sem cache. Nenhum cache especifica que o documento não deve ser armazenado em cache |
Conexão | Ele instrui se o navegador deve usar saveHTTPConnections ou não. O valor Close representa que o navegador não deve usar conexões persistentes em HTTPConnections e “keep-alive” significa usar conexões persistentes |
Disposição de conteúdo | Para perguntar ao usuário se deseja salvar a resposta no disco ou não |
Codificação de conteúdo | A página deve ser codificada durante a transmissão |
Comprimento do conteúdo | Número de bytes na resposta |
Tipo de conteúdo | Especifica o tipo MIME de resposta |
Validade | Especifica até quando o conteúdo deve ser considerado desatualizado e não deve ser armazenado em cache |
Última modificação | Indica quando o documento foi modificado pela última vez |
Localização | Deve ser incluído em todas as respostas que possuem código de status 300 como código de status |
revisar | Especifica como encontrar a página atualizada. |
Tentar novamente depois | Pode ser usado com resposta 503 para informar ao cliente quando ele poderá repetir a solicitação |
Definir cookie | Especifica o cookie associado à página |
Métodos de cabeçalho de resposta HTTP em JSP
A seguir estão os métodos em JSP usando objeto de resposta:
- String encodeRedirectURL(String URL) – codifica o URL no método redirectURL.
- String codificarURL (String URL) - codifica o URL incluindo o ID da sessão.
- Booleano contémHeader (nome da string) - contém um cabeçalho no JSP ou não.
- Booleano isCommited() - a resposta foi confirmada ou não.
- Void addCookie(Cookie cookie) – adiciona cookie à resposta
- Void addDateHeader (nome da string, valor da string) - adiciona nome e valor da data do cabeçalho de resposta
- Void addHeader (nome da string, valor da string) - adiciona cabeçalho de resposta com nome e valor
- Void addIntHeader (nome da string, valor int) - adiciona cabeçalho de resposta com nome e valor inteiro
- Liberação nulaBuffer() - força o conteúdo do buffer para a saída para o cliente.
- Anular redefinição() – limpa os dados no buffer.
- Anular redefiniçãoBuffer - limpa o buffer de conteúdo na resposta sem limpar os códigos de status.
- Void sendError(intsc,Stringmsg) – envia uma resposta de erro ao cliente usando o código de status.
- Anular sendRedirect (localização da string) – envia uma resposta de redirecionamento temporária ao cliente.
- Conjunto vazioBufferTamanho (tamanho interno) – define o tamanho do buffer do corpo
- Void setCharacterEncoding (conjunto de caracteres de string) - define codificação de caracteres
- Void setContentType (tipo String) - define o tipo de conteúdo da resposta
- Void setContentLength(intlen) – define o comprimento do conteúdo da resposta
- Void setLocale(Locale lcl) – define o tipo de localidade da resposta
- Anular setStatus(intsc) – define o código de status da resposta
Exemplo:
Neste exemplo, estamos cobrindo diferentes métodos getLocale,flushbuffer, getWriter, get ContentType, setIntHeader.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action Response</title> </head> <body> <center> <h2>Guru Response</h2> <% Locale lcl = response.getLocale(); out.println("Locale is : " + lcl + "\n"); response.flushBuffer(); PrintWriter output = response.getWriter(); output.println("This is from writer object"); String type = response.getContentType(); out.println("The content type : " + type + "\n"); // Set refresh,autoload time as 5 seconds response.setIntHeader("Refresh", 5); //Get current time Date dt = new Date(); out.println("Today's date is : " +dt.toString() + "\n"); %> </center> </body> </html>
Explicação do código:
Linha de código 13: Usando o objeto de resposta, obtemos o objeto locale desta sessão JSP
Linha de código 15: Usando o objeto de resposta, flushbuffer é usado para forçar o conteúdo do buffer no cliente
Linha de código 16: Usando o objeto de resposta, obtemos o objeto escritor que obtém saída no fluxo de saída
Linha de código18: Usando o objeto de resposta, obtemos o tipo de conteúdo, ou seja, o tipo MIME do objeto de resposta
Linha de código 21: Usando o objeto de resposta, ele é usado para carregar automaticamente a cada 5 segundos, pois 5 é definido como o segundo parâmetro
Ao executar o código acima, você obtém a seguinte saída:
Saída:
- Aqui obtemos a saída, pois é do objeto escritor de getWriter, que nos fornece o objeto e podemos gerar a saída no fluxo de saída.
- Obtemos a localidade como en_us e o tipo de conteúdo como text/html
- Obtemos charset como ISO 8859
- A data de hoje como a data atual.
Códigos de status HTTP JSP
- Quando a solicitação é processada, a resposta é gerada. A linha de status de resposta consiste na versão HTTP, um código de status e uma mensagem associada.
- A mensagem está diretamente associada ao código de status e à versão HTTP e é determinada pelo servidor.
- Por padrão, 200 é definido como um código de status em JSP, portanto não precisamos defini-lo explicitamente.
- Podemos definir como método response.setStatus()
Os códigos se enquadram nas seguintes 5 categorias:
- 100-199 – Aqui o cliente indica que deve responder com alguma ação
- 200-299 – Significa que a solicitação foi bem-sucedida
- 300-399 – São usados para arquivos que foram movidos e geralmente incluem um cabeçalho de localização indicando o novo endereço
- 400-499 – Indica erro do cliente
- 500-599 – Indica erro do servidor
Alguns dos códigos de status comuns estão abaixo:
- 200 – Indica que está tudo bem
- 301 – Mudou-se permanentemente
- 304 – Não modificado desde a última alteração
- 400 - Pedido inválido
- 404 - Não encontrado
- 405 – Método não encontrado
- 500 - Erro interno do servidor
- 503 serviço indisponível
- 505 – Versão HTTP não suportada
Métodos de código de status HTTP em JSP
Alguns dos métodos de código de status em JSP estão listados abaixo:
- setStatus vazio público (intstatusCode): Ele define o código de status que queremos definir naquela página JSP. Isso nos dará a mensagem do código de status que foi definido
- SendRedirect nulo público (URL da string): Ele gera uma resposta 302 junto com o cabeçalho de localização fornecendo a URL do novo documento
- Public void sendError(intcode,Stringmsg): Ele envia o código de status junto com a mensagem curta e é formatado dentro do documento HTML.
Exemplo:
Neste exemplo, estamos enviando erro explicitamente para a página JSP.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
Explicação do código:
Linha de código 10: Usando o objeto de resposta estamos enviando o erro para uma página com dois parâmetros.
- Código de status – pode ser qualquer um dos itens acima. Neste caso, descrevemos como 404
- Mensagem – Pode ser qualquer mensagem específica que queremos mostrar o erro
Se você executar o código acima, obterá a seguinte saída:
Saída:
Aqui obtemos o código de erro 404, que foi enviado a partir do código e também exibe a mensagem “Página do Guru não encontrada” vista na saída.
Resumo
- Neste artigo, aprendemos sobre a solicitação do cliente e a resposta do servidor, como a solicitação é interceptada e como as respostas são manipuladas.
- Ações JSP que usam construções na sintaxe XML para controlar o comportamento do mecanismo de servlet.
- Quando a página web é solicitada, ela envia informações ao servidor web no cabeçalho HTTP.
- Quando uma solicitação é processada e a resposta é gerada no servidor web. Consiste em uma linha de status, cabeçalhos de resposta, uma linha em branco e um documento.
- Quando a solicitação é processada, a resposta é gerada. A linha de status de resposta consiste na versão HTTP, um código de status e uma mensagem associada.