Objetos implícitos JSP
O que é objeto implícito JSP?
- Objetos implícitos JSP são criados durante a fase de tradução do JSP para o servlet.
- Esses objetos podem ser usados diretamente em scriplets que vão no método de serviço.
- Eles são criados automaticamente pelo contêiner e podem ser acessados por meio de objetos.
Quantos objetos implícitos estão disponíveis em JSP?
Existem 9 tipos de objetos implícitos disponíveis no contêiner:
- SOLICITAÇÃO
- Resposta
- Configuração
- Aplicação
- Número da
- Contexto da página
- Página
- Exceção
Vamos estudar um por um
1) Fora
- Out é um dos objetos implícitos para gravar os dados no buffer e enviar a saída ao cliente em resposta
- O objeto Out nos permite acessar o fluxo de saída do servlet
- Out é objeto da classe javax.servlet.jsp.jspWriter
- Enquanto trabalhava com servlet, precisamos do objeto printwriter
Exemplo:
<%@ 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>Implicit Guru JSP1</title> </head> <body> <% int num1=10;int num2=20; out.println("num1 is " +num1); out.println("num2 is "+num2); %> </body> </html>
Explicação do código:
Linha de código 11-12– out é usado para imprimir no fluxo de saída
Quando executamos o código acima, obtemos a seguinte saída:
Saída:
- Na saída, obtemos os valores de num1 e num2
2) Solicitação
- O objeto de solicitação é uma instância de java.servlet.http.HttpServletRequest e é um dos argumentos do método de serviço
- Ele será criado por contêiner para cada solicitação.
- Ele será usado para solicitar informações como parâmetro, informações de cabeçalho, nome do servidor, etc.
- Ele usa getParameter() para acessar o parâmetro de solicitação.
Exemplo:
Implicit_jsp2.jsp(formulário do qual a solicitação é enviada para guru.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>Implicit Guru form JSP2</title> </head> <body> <form action="guru.jsp"> <input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
Guru.jsp (onde a ação é executada)
Explicação do código:
Linha de código 10-13: Em implicit_jsp2.jsp(form) a solicitação é enviada, portanto a variável username é processada e enviada para guru.jsp que é ação do JSP.
Guru.jsp
Linha de código 10-11: É a ação jsp onde a solicitação é processada e o nome de usuário é obtido do formulário jsp.
Ao executar o código acima, você obtém a seguinte saída
Saída:
Ao escrever o teste e clicar no botão enviar, você obtém a seguinte saída “Teste de boas-vindas”.
3) Resposta
- “Response” é uma instância da classe que implementa a interface HttpServletResponse
- Container gera este objeto e passa para o método _jspservice() como parâmetro
- O “objeto de resposta” será criado pelo contêiner para cada solicitação.
- Representa a resposta que pode ser dada ao cliente
- O objeto implícito de resposta é usado para digitar o conteúdo, adicionar cookie e redirecionar para a página de resposta
Exemplo:
<%@ 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>Implicit Guru JSP4</title> </head> <body> <%response.setContentType("text/html"); %> </body> </html>
Explicação do código:
Linha de código 11: No objeto de resposta podemos definir o tipo de conteúdo
Aqui estamos definindo apenas o tipo de conteúdo no objeto de resposta. Portanto, não há saída para isso.
4) Configuração
- “Config” é do tipo java.servlet.servletConfig
- É criado pelo contêiner para cada página jsp
- É usado para obter o parâmetro de inicialização em web.xml
Exemplo:
Web.xml (especifica o nome e o mapeamento do servlet)
Implicit_jsp5.jsp (obtendo o valor do nome do servlet)
<%@ 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>Implicit Guru JSP5</title> </head> <body> <% String servletName = config.getServletName(); out.println("Servlet Name is " +servletName);%> </body> </html>
Explicação do código:
Em web.xml
Linha de código 14-17: Em web.xml temos mapeamento de servlets para as classes.
Implícito_jsp5.jsp
Linha de código 10-11: Para obter o nome do servlet em JSP, podemos usar config.getServletName, que nos ajudará a obter o nome do servlet.
Ao executar o código acima você obtém a seguinte saída:
Saída:
- O nome do servlet é “GuruServlet”, pois o nome está presente em web.xml
5) Aplicativo
- O objeto aplicativo (linha de código 10) é uma instância de javax.servlet.ServletContext e é usado para obter as informações de contexto e atributos em JSP.
- O objeto de aplicativo é criado por contêiner, um por aplicativo, quando o aplicativo é implantado.
- O objeto Servletcontext contém um conjunto de métodos que são usados para interagir com o contêiner do servlet. Podemos encontrar informações sobre o contêiner do servlet
Exemplo:
<%@ 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 Implicit JSP6</title> </head> <body> <% application.getContextPath(); %> </body> </html>
Explicação do código:
- No código acima, o atributo application ajuda a obter o caminho do contexto da página JSP.
6) Sessão
- A sessão contém o objeto “httpsession” (linha de código 10).
- O objeto de sessão é usado para obter, definir e remover atributos do escopo da sessão e também para obter informações da sessão
Exemplo:
Implicit_jsp7 (atributo definido)
<%@ 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>Implicit JSP</title> </head> <body> <% session.setAttribute("user","GuruJSP"); %> <a href="implicit_jsp8.jsp">Click here to get user name</a> </body> </html>
Implícito_jsp8.jsp (getAttribute)
<%@ 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>implicit Guru JSP8</title> </head> <body> <% String name = (String)session.getAttribute("user"); out.println("User Name is " +name); %> </body> </html>
Explicação do código:
Implícito_jsp7.jsp
Linha de código 11: estamos definindo o atributo user na variável de sessão, e esse valor pode ser obtido da sessão em qualquer jsp chamado (_jsp8.jsp).
Linha de código 12: Estamos chamando outro jsp em href no qual obteremos o valor do atributo user que está definido.
Implícito_jsp8.jsp
Linha de código 11: Estamos obtendo o valor do atributo do usuário do objeto de sessão e exibindo esse valor
Ao executar o código acima, você obtém a seguinte saída:
Quando você clica no link do nome de usuário. Você obterá a seguinte saída.
Saída:
- Quando clicamos no link fornecido em implicit_jsp7.jsp, somos redirecionados para a segunda página jsp, ou seja, página (_jsp8.jsp) e obtemos o valor do objeto de sessão do atributo do usuário (_jsp7.jsp).
7) Contexto da página
- Este objeto é do tipo pagecontext.
- É usado para obter, definir e remover os atributos de um escopo específico
Os escopos são de 4 tipos:
- Página
- SOLICITAÇÃO
- Número da
- Aplicação
Exemplo:
<%@ 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>Implicit Guru JSP9</title> </head> <body> <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE); String name = (String)pageContext.getAttribute("student"); out.println("student name is " +name); %> </body> </html>
Explicação do código:
Linha de código 11: estamos definindo o atributo usando o objeto pageContext e ele possui três parâmetros:
- Chave
- Valor
- Objetivo
No código acima, a chave é estudante e o valor é “gurustudent” enquanto o escopo é o escopo da página. Aqui o escopo é “página” e pode ser usado apenas no escopo da página.
Linha de código 12: Estamos obtendo o valor do atributo usando pageContext
Ao executar o código acima, você obtém a seguinte saída:
Saída:
- A saída irá imprimir “o nome do aluno é gurustudent”.
8) Página
- A variável implícita da página contém o objeto servlet atualmente executado para o jsp correspondente.
- Atua como este objeto para a página jsp atual.
Exemplo:
Neste exemplo, estamos usando o objeto page para obter o nome da página usando o método toString
<%@ 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>Implicit Guru JSP10</title> </head> <body> <% String pageName = page.toString(); out.println("Page Name is " +pageName);%> </body> </html>
Explicação do código:
Linha de código 10-11: Neste exemplo, estamos tentando usar o método toString() do objeto de página e tentando obter o nome da string da página JSP.
Ao executar o código você obtém a seguinte saída:
Saída:
- A saída é o nome da string da página jsp acima
9) Exceção
- Exceção é o objeto implícito da classe que pode ser lançada.
- É usado para tratamento de exceções em JSP.
- O objeto de exceção só pode ser usado em páginas de erro.Exemplo:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!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>Implicit Guru JSP 11</title> </head> <body> <%int[] num1={1,2,3,4}; out.println(num1[5]);%> <%= exception %> </body> </html>
Explicação do código:
Linha de código 10-12 – Possui um array de números, ou seja, num1 com quatro elementos. Na saída, estamos tentando imprimir o quinto elemento do array de num1, que não está declarado na lista de arrays. Portanto, é usado para obter o objeto de exceção do jsp.
Saída:
Estamos obtendo ArrayIndexOfBoundsException no array onde estamos obtendo um array num1 do quinto elemento.