Desenvolvimento - Java
Configurando nossa primeira Action utilizando Struts 2 no JDeveloper
No artigo anterior aprendemos como configurar o framework Struts 2 utilizando a IDE JDeveloper da Oracle. Neste artigo vamos dar continuidade, e, aprender a criar nossa primeira Action para vermos o funcionamento da camada de Controller (MVC). Estaremos utilizando o framework Struts 2.1.8.1 e o ambiente de desenvolvimento JDeveloper versão 10.1.3.4.
por Anderson Manoel SanchesNo artigo anterior aprendemos como configurar o framework Struts 2 utilizando a IDE JDeveloper da Oracle.
Neste artigo vamos dar continuidade, e, aprender a criar nossa primeira Action para vermos o funcionamento da camada de Controller (MVC).
Estaremos utilizando o framework Struts 2.1.8.1 e o ambiente de desenvolvimento JDeveloper versão 10.1.3.4.
Criando nossa Action
A partir desse momento vamos criar uma classe Java (ExemploAction) que vai conter o método a ser invocado por um link na pagina principal (índex.jsp criada em nossa artigo anterior), clique com o botão direito do mouse sobre “Application Sources” no projeto “ViewController” e selecione a opção “New”, na janela “New Gallery” selecione “General” e escolha o item “Java Class”.
Preencha a janela “Create Java Class” conforme a imagem abaixo e clique no botão "OK":
Será criada nossa nova classe ExemploAction com a seguinte estrutura:
package br.com.minhaempresa.action;
public class ExemploAction {
public ExemploAction() {
}
}
Vamos modificar a classe ExemploAction que irá herdar as características da classe ActionSupport.
A classe ActionSupport fornece uma implementação padrão comum para a maioria das ações.
Além de herdar as características, vamos criar um novo método chamado chamaPagina(), este método será chamado através de um link na página index.jsp.
A ação não irá realizar nenhum processamento, apenas irá retornar uma string para que o controller possa realizar o redirecionamento.
Nossa classe ficará dessa forma:
package br.com.minhaempresa.action;
import com.opensymphony.xwork2.ActionSupport;
public class ExemploAction extends ActionSupport {
public ExemploAction() {
}
public String chamaPagina() {
return "principal";
}
}
Alterando o arquivo struts.xml
Vamos agora alterar o arquivo struts.xml, realizando o mapeamento da Action que acabamos de criar.
Clique duas vezes para abrir o arquivo, acrescente o seguinte código:
<package name="principal" extends="struts-default">
<action name="chamaPagina" class="br.com.minhaempresa.action.ExemploAction" method="chamaPagina">
<result name="principal">principal.jsp</result>
</action>
<!-- Add actions here -->
</package>
Aqui criamos um novo pacote para nossas actions, depois inserimos a tag <action> responsável pelo mapeamento.
No atributo name definimos um nome para nossa action, esse nome será utilizado no link na pagina principal.
No atributo class definimos o mapeamento para a classe que estende a classe ActionSupport, responsável por realizar alguma ação no sistema.
No atributo method definimos o método que vamos chamar dentro da classe.
E, finalmente, definimos uma tag <result> responsável pelo redirecionamento após a execução de uma ação. Em nosso exemplo, se retornar da ação a string "principal", o controller irá redirecionar para a pagina principal.jsp.
Nosso arquivo struts.xml deverá ficar da seguinte forma:
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="principal" extends="struts-default">
<action name="chamaPagina" class="br.com.minhaempresa.action.ExemploAction" method="chamaPagina">
<result name="principal">principal2.jsp</result>
</action>
</package>
<!-- Add actions here -->
<!--outros arquivos que compoem o struts xml
<include file="struts-<arquivo>.xml"/>
-->
</struts>
Acrescentando o link na página index.jsp
Vamos criar o link na página index.jsp responsável por invocar o método chamaPagina() da classe ExemploAction.
Clique duas vezes no arquivo index.jsp, e, logo abaixo da tab <s:text name="mensagem" /><br />, acrescente o seguinte código:
<s:a href="chamaPagina.action">Pagina Principal</s:a>
Nossa pagina index.jsp deverá ficar da seguinte forma:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Executar Rotina</title>
</head>
<body>
<s:text name="mensagem" /><br />
<s:a href="chamaPagina.action">Pagina Principal</s:a>
</body>
</html>
Criando a página principal.jsp
Vamos criar a nova página principal.jsp.
Clique com o botão direito do mouse sobre "Web Content", escolha a opção "New".
Na janela "New Gallery" selecione "Web Tier", e, "JSP".
Continue o assistente e defina o nome do arquivo como "principal.jsp", conclua o assistente.
Em nossa nova página apenas acrescente um título, nossa página ficará dessa forma:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Executar Rotina</title>
</head>
<body>
<h1>Escolha as opções no menu</h1>
</body>
</html>
Rodando nosso projeto
A partir deste momento temos nossa classe action criada, nosso arquivo struts configurado, nosso link na pagina index.jsp já acrescentado e nossa página principal criada, só nos resta rodar o projeto e verificar se tudo está correto.
Clique com o botão direito do mouse sobre o arquivo index.jsp e escolha a opção "Run". Nossa página deverá ser chamada no browser:
Vamos clicar no link "Pagina Principal".
Nossa página principal deverá ser carregada.
Bom, muito obrigado e até um próximo artigo.