JSP - Ações

Neste capítulo, discutiremos Ações em JSP. Essas ações usam construções na sintaxe XML para controlar o comportamento do mecanismo de servlet. Você pode inserir um arquivo dinamicamente, reutilizar componentes JavaBeans, encaminhar o usuário para outra página ou gerar HTML para o plug-in Java.

Existe apenas uma sintaxe para o elemento Action, uma vez que está em conformidade com o padrão XML -

<jsp:action_name attribute = "value" />

Os elementos de ação são basicamente funções predefinidas. A tabela a seguir lista as ações JSP disponíveis -

S.No. Sintaxe e propósito
1

jsp:include

Inclui um arquivo no momento em que a página é solicitada.

2

jsp:useBean

Encontra ou instancia um JavaBean.

3

jsp:setProperty

Define a propriedade de um JavaBean.

4

jsp:getProperty

Insere a propriedade de um JavaBean na saída.

5

jsp:forward

Encaminha o solicitante para uma nova página.

6

jsp:plugin

Gera código específico do navegador que cria uma tag OBJECT ou EMBED para o plug-in Java.

7

jsp:element

Define elementos XML dinamicamente.

8

jsp:attribute

Define o atributo do elemento XML definido dinamicamente.

9

jsp:body

Define o corpo do elemento XML definido dinamicamente.

10

jsp:text

Usado para escrever texto de modelo em páginas e documentos JSP.

Atributos Comuns

Existem dois atributos que são comuns a todos os elementos de ação: o id atributo e o scope atributo.

Atributo de id

O atributo id identifica exclusivamente o elemento Action e permite que a ação seja referenciada dentro da página JSP. Se a Action criar uma instância de um objeto, o valor id pode ser usado para referenciá-lo por meio do objeto implícito PageContext.

Atributo de escopo

Este atributo identifica o ciclo de vida do elemento Action. O atributo id e o atributo scope estão diretamente relacionados, pois o atributo scope determina a vida útil do objeto associado ao id. O atributo scope tem quatro valores possíveis:(a) page, (b)request, (c)sessione (d) application.

A ação <jsp: include>

Esta ação permite inserir arquivos na página que está sendo gerada. A sintaxe é semelhante a esta -

<jsp:include page = "relative URL" flush = "true" />

Ao contrário do include , que insere o arquivo no momento em que a página JSP é traduzida em um servlet, esta ação insere o arquivo no momento em que a página é solicitada.

A tabela a seguir lista os atributos associados à ação incluir -

S.No. Atributo e descrição
1

page

O URL relativo da página a ser incluída.

2

flush

O atributo booleano determina se o recurso incluído tem seu buffer liberado antes de ser incluído.

Exemplo

Vamos definir os dois arquivos a seguir (a)date.jsp e (b) main.jsp como segue -

A seguir está o conteúdo do date.jsp arquivo -

<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>

A seguir está o conteúdo do main.jsp arquivo -

<html>
   <head>
      <title>The include Action Example</title>
   </head>
   
   <body>
      <center>
         <h2>The include action Example</h2>
         <jsp:include page = "date.jsp" flush = "true" />
      </center>
   </body>
</html>

Vamos agora manter todos esses arquivos no diretório raiz e tentar acessar main.jsp. Você receberá a seguinte saída -

The include action Example

Today's date: 12-Sep-2010 14:54:22

A ação <jsp: useBean>

o useBeana ação é bastante versátil. Ele primeiro procura por um objeto existente utilizando as variáveis ​​id e escopo. Se um objeto não for encontrado, ele tenta criar o objeto especificado.

A maneira mais simples de carregar um bean é a seguinte -

<jsp:useBean id = "name" class = "package.class" />

Depois que uma classe de bean é carregada, você pode usar jsp:setProperty e jsp:getProperty ações para modificar e recuperar as propriedades do bean.

A tabela a seguir lista os atributos associados à ação useBean -

S.No. Atributo e descrição
1

class

Designa o nome completo do pacote do bean.

2

type

Especifica o tipo de variável que fará referência ao objeto.

3

beanName

Fornece o nome do bean conforme especificado pelo método instantiate () da classe java.beans.Beans.

Vamos agora discutir o jsp:setProperty e a jsp:getProperty ações antes de dar um exemplo válido relacionado a essas ações.

A ação <jsp: setProperty>

o setPropertyação define as propriedades de um Bean. O Bean deve ter sido definido previamente antes desta ação. Existem duas maneiras básicas de usar a ação setProperty -

Você pode usar jsp:setProperty depois, mas fora de um jsp:useBean elemento, conforme fornecido abaixo -

<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>

Neste caso, o jsp:setProperty é executado independentemente se um novo bean foi instanciado ou um bean existente foi encontrado.

Um segundo contexto no qual jsp: setProperty pode aparecer está dentro do corpo de um jsp:useBean elemento, conforme fornecido abaixo -

<jsp:useBean id = "myName" ... >
   ...
   <jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>

Aqui, o jsp: setProperty é executado apenas se um novo objeto foi instanciado, não se um existente foi encontrado.

A tabela a seguir lista os atributos associados ao setProperty ação -

S.No. Atributo e descrição
1

name

Designa o bean cuja propriedade será definida. O Bean deve ter sido definido previamente.

2

property

Indica a propriedade que você deseja definir. Um valor de "*" significa que todos os parâmetros de solicitação cujos nomes correspondem aos nomes de propriedade do bean serão passados ​​para os métodos configuradores apropriados.

3

value

O valor que deve ser atribuído à propriedade fornecida. O valor do parâmetro é nulo ou o parâmetro não existe, a ação setProperty é ignorada.

4

param

O atributo param é o nome do parâmetro de solicitação cujo valor a propriedade deve receber. Você não pode usar valor e parâmetro, mas não é permitido usar nenhum deles.

A ação <jsp: getProperty>

o getProperty action é usado para recuperar o valor de uma determinada propriedade e convertê-lo em uma string e, finalmente, inseri-lo na saída.

A ação getProperty possui apenas dois atributos, sendo que ambos são obrigatórios. A sintaxe da ação getProperty é a seguinte -

<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>

A tabela a seguir lista os atributos necessários associados ao getProperty ação -

S.No. Atributo e descrição
1

name

O nome do Bean que possui uma propriedade a ser recuperada. O Bean deve ter sido definido previamente.

2

property

O atributo property é o nome da propriedade Bean a ser recuperada.

Exemplo

Vamos definir um bean de teste que será usado posteriormente em nosso exemplo -

/* File: TestBean.java */
package action;
 
public class TestBean {
   private String message = "No message specified";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

Compile o código acima para o TestBean.class arquivo e certifique-se de que copiou o TestBean.class em C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action pasta e o CLASSPATH variável também deve ser definida para esta pasta -

Agora use o seguinte código em main.jspArquivo. Isso carrega o bean e define / obtém um parâmetro String simples -

<html>
   
   <head>
      <title>Using JavaBeans in JSP</title>
   </head>
   
   <body>
      <center>
         <h2>Using JavaBeans in JSP</h2>
         <jsp:useBean id = "test" class = "action.TestBean" />
         <jsp:setProperty name = "test"  property = "message" 
            value = "Hello JSP..." />
            
         <p>Got message....</p>
         <jsp:getProperty name = "test" property = "message" />
      </center>
   </body>
</html>

Vamos agora tentar acessar main.jsp, ele exibiria o seguinte resultado -

Using JavaBeans in JSP

Got message.... Hello JSP...

A ação <jsp: forward>

o forward action termina a ação da página atual e encaminha a solicitação para outro recurso, como uma página estática, outra página JSP ou um Servlet Java.

A seguir está a sintaxe do forward ação -

<jsp:forward page = "Relative URL" />

A tabela a seguir lista os atributos necessários associados à ação de encaminhamento -

S.No. Atributo e descrição
1

page

Deve consistir em uma URL relativa de outro recurso, como uma página estática, outra página JSP ou um Servlet Java.

Exemplo

Vamos reutilizar os dois arquivos a seguir (a) date.jsp e (b) main.jsp como segue -

A seguir está o conteúdo do date.jsp arquivo -

<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>

A seguir está o conteúdo do main.jsp arquivo -

<html>
   <head>
      <title>The include Action Example</title>
   </head>
   
   <body>
      <center>
         <h2>The include action Example</h2>
         <jsp:forward page = "date.jsp" />
      </center>
   </body>
</html>

Vamos agora manter todos esses arquivos no diretório raiz e tentar acessar main.jsp. Isso exibiria um resultado parecido com o abaixo.

Aqui, ele descartava o conteúdo da página principal e exibia apenas o conteúdo da página encaminhada.

Today's date: 12-Sep-2010 14:54:22

A ação <jsp: plugin>

o pluginação é usada para inserir componentes Java em uma página JSP. Ele determina o tipo de navegador e insere o<object> ou <embed> tags conforme necessário.

Se o plug-in necessário não estiver presente, ele baixa o plug-in e, em seguida, executa o componente Java. O componente Java pode ser um Applet ou um JavaBean.

A ação do plug-in possui vários atributos que correspondem a tags HTML comuns usadas para formatar componentes Java. o<param> elemento também pode ser usado para enviar parâmetros para o Applet ou Bean.

A seguir está a sintaxe típica de uso da ação do plugin -

<jsp:plugin type = "applet" codebase = "dirname" code = "MyApplet.class"
   width = "60" height = "80">
   <jsp:param name = "fontcolor" value = "red" />
   <jsp:param name = "background" value = "black" />
 
   <jsp:fallback>
      Unable to initialize Java Plugin
   </jsp:fallback>
 
</jsp:plugin>

Você pode tentar esta ação usando algum miniaplicativo se estiver interessado. Um novo elemento, o<fallback> , pode ser usado para especificar uma string de erro a ser enviada ao usuário no caso de falha do componente.

The <jsp:element> Action

The <jsp:attribute> Action

The <jsp:body> Action

o <jsp:element>, <jsp:attribute> e <jsp:body>ações são usadas para definir elementos XML dinamicamente. A palavra dinamicamente é importante, porque significa que os elementos XML podem ser gerados no momento da solicitação, em vez de estaticamente no momento da compilação.

A seguir está um exemplo simples para definir elementos XML dinamicamente -

<%@page language = "java" contentType = "text/html"%>
<html xmlns = "http://www.w3c.org/1999/xhtml"
   xmlns:jsp = "http://java.sun.com/JSP/Page">
   
   <head><title>Generate XML Element</title></head>
   
   <body>
      <jsp:element name = "xmlElement">
         <jsp:attribute name = "xmlElementAttr">
            Value for the attribute
         </jsp:attribute>
         
         <jsp:body>
            Body for XML element
         </jsp:body>
      
      </jsp:element>
   </body>
</html>

Isso produziria o seguinte código HTML em tempo de execução -

<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page">
   <head><title>Generate XML Element</title></head>
   
   <body>
      <xmlElement xmlElementAttr = "Value for the attribute">
         Body for XML element
      </xmlElement>
   </body>
</html>

A ação <jsp: text>

o <jsp:text>ação pode ser usada para escrever o texto do modelo em páginas e documentos JSP. A seguir está a sintaxe simples para esta ação -

<jsp:text>Template data</jsp:text>

O corpo do modelo não pode conter outros elementos; ele só pode conter texto e expressões EL (Observação - as expressões EL são explicadas em um capítulo subsequente). Observe que em arquivos XML, você não pode usar expressões como${whatever > 0}, porque os sinais de maior que são ilegais. Em vez disso, use ogt forma, como ${whatever gt 0} ou uma alternativa é incorporar o valor em um CDATA seção.

<jsp:text><![CDATA[<br>]]></jsp:text>

Se você precisar incluir um DOCTYPE declaração, por exemplo para XHTML, você também deve usar o <jsp:text> elemento da seguinte forma -

<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "DTD/xhtml1-strict.dtd">]]></jsp:text>

   <head><title>jsp:text action</title></head>
   
   <body>
      <books><book><jsp:text>  
         Welcome to JSP Programming
      </jsp:text></book></books>
   </body>
</html>

Experimente o exemplo acima com e sem <jsp:text> açao.