Objetos implícitos JSP: tutorial completo

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:

Vamos estudar um por um

  • 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 o seguintewing saída:

Fora em JSP

Saída:

  • Na saída, obtemos os valores de num1 e num2

SOLICITE

  • 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)

Solicitação em JSP

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 o seguintewing saída

Saída:

Solicitação em JSP

Quando você escreve o teste e clica no botão enviar, você obtém o seguintewing saída “Teste de boas-vindas”.

Solicitação em JSP

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.

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)

Configuração em JSP

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 o seguintewing saída:

Resposta em JSP

Saída:

  • O nome do servlet é “GuruServlet”, pois o nome está presente em web.xml

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.

Número da

  • 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 o seguintewing saída:

Sessão em JSP

Quando você clica no link do nome de usuário. Você receberá o seguintewing saída.

Sessão em JSP

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).

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
  • SOLICITE
  • Número da
  • Aplicativo

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 o seguintewing saída:

PageContext em JSP

Saída:

  • A saída irá imprimir “o nome do aluno é gurustudent”.

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.

Quando você executa o código, você obtém o seguintewing saída:

Página em JSP

Saída:

  • A saída é o nome da string da página jsp acima

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:

Exceção em JSP

Estamos obtendo ArrayIndexOfBoundsException no array onde estamos obtendo um array num1 do quinto elemento.