Struts 2. Versão 1.0. Apostila destinada ao curso com carga horária de 20 (vinte) horas

Tamanho: px
Começar a partir da página:

Download "Struts 2. Versão 1.0. Apostila destinada ao curso com carga horária de 20 (vinte) horas"

Transcrição

1 Struts 2 O framework Apache Struts 2 é uma estrutura elegante e extensível para a criação de aplicações Web em Java. A estrutura foi projetada visando otimizar o ciclo completo de desenvolvimento, desde construção a implantação e manutenção das aplicações. Foi originalmente conhecido como WebWork 2. Depois de trabalhar de forma independente durante vários anos, as comunidades Struts e WebWork juntaram forças para criar Struts 2. Esta nova versão é mais simples de usar e se aproxima da ideia da qual o Struts foi concebido para ser. Versão 1.0 Apostila destinada ao curso com carga horária de 20 (vinte) horas

2 Sumário 1. Struts Características do Struts Projeto Simplificado...3 Classes de Ações Simplificadas...3 Não existem mais os ActionForms...3 Padrões inteligentes...3 Melhores características das Tag...4 Novos Detalhes...4 Criando um Hello World em Struts Criação de estrutura de diretórios para o projeto Configurações...5 Arquivo web.xml...5 Arquivo struts.xml...6 Arquivo struts-config.xml:...7 Arquivo struts.properties Actions...9 Camada Action...9 Camada Visão Templates Ajax com Struts...14 Implementação de Janela de Login com o Ajax (DOJO) Validação e Conversão...17 Validação...17 Conversão Struts e Spring Formulário Master/Detail de 31

3 1. Struts 2 Um framework é responsável por automatizar as tarefas mais comuns e fornecer uma plataforma na qual os usuários criam rapidamente seus aplicativos. Struts 2 foi baseado no framework OpenSymphony WebWork. Implementa o padrão de projeto Modelo Visão Controle (MVC Model-View-Control). Em Struts 2 o modelo de exibição, e o controlador são implementadas pelo resultado da ação de um FilterDispatcher (que realiza o trabalho do controlador). O trabalho do Controlador é mapear a solicitação do usuário e tomar as medidas cabíveis. A camada de Modelo contém os dados e a lógica de negócios que é implementado pelo componente de ação. A camada de visão é o componente de apresentação que é comumente implementado usando os padrões JSP, Velocity Template, Freemaker ou qualquer outra tecnologia de apresentação. Características do Struts 2 Projeto Simplificado Programação das classes abstratas em vez de interfaces era um problema do projeto do Struts 1 que foi resolvido no Struts 2. A maioria das classes agora são baseadas em interfaces e na maioria, essas interfaces são o núcleo independente de HTTP. As classes Actions do Struts 2 são uma estrutura independente e simplificada para o uso com POJOs simples. Classes de Ações Simplificadas As classes Actions agora são simples POJOs. Qualquer classe Java que possua o método execute() pode ser usada como uma classe no modelo Action. Não necessita implementar qualquer interface. A Inversão de Controle (IoC) agora é automaticamente introduzida durante o desenvolvimento das classes Actions. Não existem mais os ActionForms A característica dos ActionForms não é mais reconhecida para o Struts 2. Sendo substituídas por simples JavaBean que são utilizados para colocar as propriedades diretamente. Não é preciso usar todas as propriedades. Padrões inteligentes Os elementos de configuração possuem um valor padrão que pode ser definido de acordo com a necessidade. Ainda existem arquivos baseados em padrão XML de configuração que pode ser substituído de acordo com a necessidade. Ao contrário dos ActionForwards, os Results fornecem uma maior flexibilidade para criar múltiplos tipos de saídas. 3 de 31

4 Melhores características das Tag Agora as tags permitem adicionar capacidades de estilo sheet-driven, para que possamos criar páginas mais consistentes e com menos código. As tags são mais capazes e orientada para resultados. Podem ser ser alteradas para uma folha de estilo subjacente. A marcação individual da tag pode ser alterada editando um modelo FreeMarker. Novos Detalhes Utilização de anotações Java 5 como uma alternativa para XML e configuração de propriedades Java. O componente Checkbox não necessita mais de um tratamento especial para os valores falsos. Muitas mudanças podem ser feitas na hora, sem a necessidade de reiniciar o contêiner web. Criando um Hello World em Struts 2 Vamos desenvolver a aplicação tipo Olá Mundo usando o framework Struts 2. Nossa aplicação será o primeiro passo para que possamos compreender as modificações que ocorreram com este framework. Criação de estrutura de diretórios para o projeto Realizar o download do Struts 2 e cópiar o arquivo struts2-blank war para o diretório webapps do Tomcat. Renomear o arquivo struts2-blank war para struts2tutorial.rar e descompactá-lo. Agora inicie o Tomcat e acesse o endereço: No seu navegador mostrará: 4 de 31

5 2. Configurações A Configuração básica necessária para o framework Struts 2 depende da configuração dos seguintes arquivos: struts.xml, web.xml, struts-config.xml e struts.properties. Arquivo web.xml O arquivo de configuração web.xml é um arquivo de configuração Java EE que determina como os elementos da solicitação HTTP são processados pelo servlet container. Não é estritamente um arquivo de configuração do Struts 2, mas é um arquivo que precisa ser configurado para que o Struts 2 possa trabalhar corretamente. Este arquivo fornece um ponto de entrada para qualquer aplicação Web. O ponto de entrada de uma aplicação Struts 2 será um filtro definido no descritor de deployment. Desta forma, vamos definir uma entrada de classe FilterDispatcher no arquivo web.xml. O arquivo web.xml deve ser criada sob a pasta WebContent/WEB-INF. Vejamos um exemplo do arquivo web.xml: <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee id="webapp_id" version="3.0"> <display-name>struts 2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.filterdispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> Para mapear o filtro do Struts 2, usamos /*, e não /*.action o que significa que todas as urls serão analisadas pelo filtro do Struts. 5 de 31

6 Arquivo struts.xml O arquivo struts.xml contém as informações de configuração que devemos modificar como as ações que são desenvolvidas. Este arquivo pode ser usado para substituir as configurações padrões de um aplicativo, por exemplo struts.devmode = false E outras configurações que são definidas no arquivo de propriedades. Este arquivo pode ser criado na pasta WEB-INF/classes. Vejamos um exemplo do arquivo struts.xml: <?xml version="1.0" encoding="utf-8"?> <!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.devmode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.tutorialspoint.struts2.helloworldaction" method="execute"> <result name="success">/helloworld.jsp</result> </action> <-- more actions can be listed here --> </package> <-- more packages can be listed here --> </struts> A primeira coisa a notar é o elemento DOCTYPE. Todo o arquivo XML necessita ter um elemento doctype correto, conforme mostrado no código. <struts> é a tag raiz, no qual podemos declarar diferentes pacotes usando a tag <package>, isso permite a separação e a modularização da configuração. O que vem a ser muito útil quando temos um grande projeto dividido em diferentes partes. Digamos que, seu projeto possua três domínios: Negocio, Cliente e Pessoal, então podemos criar três pacotes e armazenar as ações associadas no pacote apropriado. A tag <package> possui os seguintes atributos: Atributo name (obrigatório) extends abstract namespace Descrição O identificador exclusivo para o pacote Nome do pacote herdado. Por padrão, usamos struts-default, como o pacote base Se marcado como true, o pacote não está disponível para o usuário final Nome único para as ações A tag <constant> juntamente com os atributos nome e valor são usados para substituir qualquer uma das seguintes propriedades definidas no default.properties, como acabamos de definir na propriedade struts.devmode. Definir esta propriedade permite ver as 6 de 31

7 mensagens de depuração no arquivo de log. Definimos as tags <action> correspondete a cada URL que desejamos acessar e definimos uma classe com método execute() que é acessado ao acessarmos a URL correspondente. A tag <result> determina o que é retornado para o navegador após uma ação for executada. A ação retorna um objeto do tipo String que contém o nome de um resultado. Essas tags são configuradas por ação ou como um resultado "global", disponível para cada ação em um pacote. Os resultados têm nome opcional e atributos de tipo. Usamos a String "sucess" como o nome de valor padrão. O arquivo struts.xml pode ficar muito grande ao longo do tempo, então é possível quebrá-lo por pacotes, o que é uma forma de modularizar, mas a Struts 2 oferece uma nova maneira de modularizar o arquivo struts.xml. É possível dividi-lo em vários arquivos XML e importálos da seguinte forma: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="my-struts1.xml"/> <include file="my-struts2.xml"/> </struts> Arquivo struts-config.xml: O arquivo de configuração struts-config.xml é a ligação entre a Visão e os componentes do modelo no Cliente Web. Contém os seguinte elementos principais: Interceptor struts-config form-bean global forwards action-mappings controller plug-in Descrição Nó raiz do arquivo de configuração. Local para mapear sua subclasse ActionForm. Pode-se usar este nome como um alias para a ActionForm todo o resto do arquivo strutsconfig.xml, e até mesmo nas páginas JSP. Esta seção mapeia uma página em seu webapp para um nome. Pode-se usar este nome para se referir à página real. Isso evita codificar URLs em suas páginas Web. Declaração do manipuladores de formulários e onde também são conhecidos como mapeamentos de ação. Esta seção configura as internas do Struts e raramente é usada em situações práticas. Esta seção informa ao Struts onde encontrar seus arquivos de propriedades, que contêm instruções e mensagens de erro Vejamos um exemplo do arquivo struts-config.xml: 7 de 31

8 <?xml version="1.0" encoding="iso "?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> <struts-config> <!-- ========== Form Bean Definitions ============ --> <form-beans> <form-bean name="login" type="test.struts.loginform" /> </form-beans> <!-- ========== Global Forward Definitions ========= --> <global-forwards> </global-forwards> <!-- ========== Action Mapping Definitions ======== --> <action-mappings> <action path="/login" type="test.struts.loginaction" > <forward name="valid" path="/jsp/mainmenu.jsp" /> <forward name="invalid" path="/jsp/loginview.jsp" /> </action> </action-mappings> <!-- ========== Controller Definitions ======== --> <controller contenttype="text/html;charset=utf-8" debug="3" maxfilesize="1.618m" locale="true" nocache="true"/> </struts-config> Arquivo struts.properties Este arquivo de configuração fornece um mecanismo para alterar o comportamento padrão do framework. Todas propriedades contidas neste arquivo também podem ser configuradas no web.xml usando o param-init, bem como usando a tag <constant> no arquivo struts.xml. Para manter os detalhes separados e um suporte mais específico, podemos criar este arquivo na pasta WEB-INF/classes. Os valores configurados neste arquivo substituem os valores padrões configurados em default.properties que estão contidos na distribuição struts2-core-x.y.z.jar. Existem propriedades que podem ser modificadas usando o arquivo struts.properties: ### Ao ser definido como verdadeiro, mostra as mensagens padrões struts.devmode = true ### Permite a releitura dos arquivos de internacionalização struts.i18n.reload = true ### Permite a releitura dos arquivos de configuração XML struts.configuration.xml.reload = true ### Define a porta que o servidor é executado struts.url.http.port = 8080 A linha iniciada com com o caracter #, será assumida como um comentário e ignorada pelo Struts 2. 8 de 31

9 3. Actions Actions são o ponto central do framework Struts 2, bem como para qualquer framework modelo MVC (Model View Controller). Cada URL é mapeada para uma action específica, que fornece a lógica de processamento necessária para atender à solicitação do usuário. Actions possuem duas outras capacidades importantes. Primeiro, uma action desempenha um papel importante na transferência de dados a partir do pedido através do ponto de vista, se o seu tipo um JSP ou outro resultado. Em segundo lugar, o recurso deve ajudar o quadro para determinar qual resultado deve tornar a visão de que será devolvido na resposta ao pedido. Camada Action O único requisito para as actions em Struts 2 é que deve haver um método sem argumento que retorna um objeto String ou um elemento Result e deve ser um POJO. Se o método não-argumento não for especificado, o comportamento padrão é usar o método execute(). Opcionalmente, pode-se estender a classe ActionSupport que implementa seis interfaces, incluindo a interface Action. Esta interface é mostrada como se segue: public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERROR = "error"; public static final String INPUT = "input"; public static final String LOGIN = "login"; public String execute() throws Exception; Vamos dar uma olhada no método de ação para um exemplo "Hello World": package x25.com.tutorial; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; public String getname() { return name; public void setname(string name) { this.name = name; Para ilustrar o ponto que o método da action controla a visão, faremos a seguinte alteração no método execute() e estender a classe ActionSupport como segue: 9 de 31

10 package x25.com.tutorial; import com.opensymphony.xwork2.actionsupport; public class HelloAction extends ActionSupport{ private String nome; public String execute() throws Exception { if ("SECRET".equals(nome)) { return SUCCESS; else { return ERROR; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; Neste exemplo, temos a seguinte lógica para o método execute() de modo a visualizar o atributo nome. Se este atributo for igual a "SECRET", retornamos SUCESS como o resultado, caso contrário retornamos um ERROR como o resultado. Porque estendemos ActionSupport, para isso usamos as constantes SUCESS e ERROR. Agora, vamos modificar nosso arquivo struts.xml como segue: <?xml version="1.0" encoding="utf-8"?> <!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.devmode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="x25.com.tutorial.helloaction" method="execute"> <result name="success">/helloworld.jsp</result> <result name="error">/accessdenied.jsp</result> </action> </package> </struts> Camada Visão Criamos o arquivo chamado HelloWorld.jsp na pasta raiz do seu projeto. Este arquivo será chamado em caso do retorno ter como resultado "SUCESS", tal como definido na interface Action: page contenttype="text/html; charset=utf-8" %> taglib prefix="s" uri="/struts-tags" %> <html> <head> 10 de 31

11 <title>hello World</title> </head> <body> Olá Mundo, <s:property value="name"/> </body> </html> Este outro arquivo será chamado pelo framework no caso que o resultado da Action seja ERROR. A seguir é o conteúdo de AccessDenied.jsp: page contenttype="text/html; charset=utf-8" %> taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>acesso Bloqueado</title> </head> <body> Você não está autorizado a ver esta página. </body> </html> Também precisamos criar o arquivo index.jsp na pasta raiz. Este arquivo será utilizado como ação inicial onde o usuário informa o nome e submete o formulário chamando o método da classe HelloAction e tornar a visão HelloWorld.jsp. language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <title>hello World</title> </head> <body> <h1>hello World com Struts 2</h1> <form action="hello"> <label for="nome">por favor entre com seu nome</label><br/> <input type="text" name="nome"/> <input type="submit" value="diga Hello"/> </form> </body> </html> Não existe qualquer mudança necessária no arquivo web.xml. Execute o aplicativo através do endereço 11 de 31

12 4. Templates Templates são carregadas prioritariamente, pesquisando a aplicação e depois por procurar o classpath. Se uma Template precisa de ser substituída, uma cópia é editada e pode ser colocada na aplicação, de modo que seja encontrada. Em muitas áreas o Struts 2 permaneceu praticamente inalterado depois de sua junção com o Webwork. É possível ter uma Template para o controle da aparência de suas tags em um nível de granulação fina ou em nível de aplicativo. Supondo o suporte a boas práticas e cada tag <input> possua uma tag <label>, conforme a seguinte codificação: <label for="nome">nome</label> <input type="text" name="nome" id="nome"/> Embora possamos escrever uma tag <label> para cada tag <input> manualmente para conseguir essa boa prática, podemos especificar uma Template para renderizar as tags <s:textfield> de modo a reduzir a codificação escrita na JSP. Criar uma Template chamada text.ftl no pasta template/mysimpletheme e certifique-se que está na classpath. Codificação text.ftl: <label <#if parameters.id?exists> for="${parameters.id?html" <#t/> </#if> >${parameters.label?html</label> <#include "/${parameters.templatedir/simple/text.ftl" /> O arquivo de inclusão está apontando para um modelo bare-bones disponibilizado com o Struts que torna um simples <input type="text"/> com todos seus atributos. Tudo o que estamos fazendo no código adicional é uma verificação da existência de um id sendo passado através da tag <textfield> e mostrá-lo em uma tag <label> juntamente com seu valor que está sendo passado. Agora temos tem uma Template para trabalhar, tudo o que resta a fazer é utilizá-la. Esta é uma maneira que pode aplicá-la a um único campo de texto: <s:textfield id="nome" name="nome" theme="mysimpletheme" label="nome"/> A declaração do tema "mysimpletheme" está informando ao Struts procurar uma Template no diretório mysimpletheme sob o diretório padrão de Templates. Para este modelo processar todos as tags <TextField> em vez de especificar theme="mysimpletheme" todas as vezes, devemos modificar as propriedades struts.ui.theme e struts.ui.templatedir no arquivo struts.properties que possuem como valores padrões de xhtml e template, respectivamente. O tema padrão do Struts é xhtml que renderiza as tags <td> e <tr> e tudo o mais que é indesejável na marcação. Para desativar essa renderização e os atributos de tag, podemos utilizar o tema "simple" como a seguinte codificação: <s:textfield id="nome" name="nome" theme="simple" label="nome"/> Alternativamente, podemos definir o atributo struts.ui.theme para simple no arquivo struts.properties. Também podemos definir o atributo template de cada controle para 12 de 31

13 apontar para um outro diretório. Resumidamente, o Struts fornece templates padrões no arquivo struts-core.jar deve atender às necessidades de muitas aplicações. No entanto, se uma template precisa ser modificada, é fácil conectar uma nova versão. Para extrair uma template é necessária mudar a partir do struts-core.jar, faça as modificações e salve uma cópia atualizada na pasta template/$theme/$template.ftl. Se estiver utilizando o tema XHMTL e precisa mudar a forma como as tags selecionem e renderizam, editar esse modelo e salve-o em /template/xhtml/select.ftl. O mecanismo global para controlar a aparência é completamente diferente do Struts 1.x sendo um pouco mais complexa do que pode ser necessário para muitos projetos. Porém permite uma maior liberdade para ajustar as templates de modo a atender qualquer caso. Este é um método de baixo nível para controlar a aparência de um controle CSS. Struts usa arquivos CSS na renderização de sua construção. Temas como xhtml são modificados para xhtml_css, embora essa renomeação possa não ser um bom padrão. Por exemplo, ao usar o seu tema xhtml_css e <s:textfield>, é necessário escrever classes CSS chamadas wwgrp e wwlbl para controlar a exibição das tags <label> e <input>. 13 de 31

14 5. Ajax com Struts Desenvolvedores do Ajax sabem que as tabelas podem fazer muito mais do que a exibição estática informações em um formato organizado, legível. Ao sincronizar-se as linhas da tabela com um banco de dados do lado do servidor, é possível criar tabelas dinâmicas desse tipo, filtrar dados e realizar paginação. Diversas soluções Ajax possuem a vantagem de simplificar a programação, convertendo o código do servidor Java em JavaScript, normalmente à custa da flexibilidade. A maioria dos desenvolvedores não querem ter o modelo de programação restringido pelo número limitado de componentes que essas estruturas fornecem. Neste quisito, criar conteúdo personalizado com Struts 2 e Ajax realmente é a melhor escolha, pois Struts 2 integra poderosos aliados para fazer o desenvolvimento Ajax tornar-se prazer. Implementação de Janela de Login com o Ajax (DOJO) Vejamos como desenvolver uma aplicação de Login usando o Ajax. Nesta aplicação é mostrado um formulário para autenticar um usuário, solitando o nome e a senha (O nome de login e senha é "admin"). Exibe uma página de boas vindas, quando ambos os campos forem corretamente preenchidos pelo usuário. Caso contrário, mostra uma mensagem de erro e debug (nome de usuário e senha inválidos Por favor, tente novamente e DEBUG: widget ID collision on ID: ajaxlogin_0). Inicialmente, criamos um mapeamento de ação no arquivo struts.xml. Aqui está o código para ser adicionado neste arquivo: <action name="showajaxloginform"> <result>/pages/ajaxlogin.jsp</result> </action> <action name="ajaxlogin" class="net.roseindia.login"> <result name="input">/pages/ajaxlogin.jsp</result> <result name="error">/pages/ajaxlogin.jsp</result> <result>/pages/ajaxloginsuccess.jsp</result> </action> A interface gráfica do aplicativo consiste em um formulário de login (ajaxlogin.jsp), que exibe a página de login para o usuário. Esta página usa a tag <s:div> que cria uma área de conteúdo para carregar o conteúdo utilizando tags do Ajax. Aqui também usamos a tag <s:submit> para atualizar o(s) elemento(s) ou que apresente uma mensagem de ajuda. Sempre que ocorre um erro as tags <s:actionerror> e <s:fielderror> exibem uma mensagem no formulário de login. Página: ajaxlogin.jsp taglib prefix="s" uri="/struts-tags"%> <html> <head> <s:head theme="ajax" debug="true"/> </script> 14 de 31

15 </head> <body> <s:div id="logindiv" theme="ajax"> <div style="width: 300px;border-style: solid"> <s:form action="ajaxlogin" validate="true"> <tr> <td colspan="2">entrada no Sistema</td> </tr> <tr> <td colspan="2"><s:actionerror /><s:fielderror /></td> </tr> <s:textfield name="username" label="nome"/> <s:password name="password" label="senha"/> <s:submit theme="ajax" targets="logindiv" notifytopics="/ajaxlogin"/> </s:form> </div> </s:div> </body> </html> Devemos agora, desenvolver uma classe de ação que trata a solicitação de login e verifica a autenticação do usuário. Se o nome do usuário e senha for "Admin", então retorna SUCESS caso contrário o objeto ERROR. Bean de Ação: Login.java package x25.com.tutorial; import com.opensymphony.xwork2.actionsupport; import java.util.date; public class Login extends ActionSupport { private String username = null; private String password = null; public String execute() throws Exception { System.out.println("Validando o Login..."); if ("Admin".equals(getUsername()) && "Admin".equals(getPassword()) { return SUCCESS; addactionerror("usuário ou senha inválida! Tente novamente!"); return ERROR; public String getusername() { return username; public void setusername(string value) { username = value; public String getpassword() { return password; 15 de 31

16 public void setpassword(string value) { password = value; A página ajaxloginsuccess.jsp exibe a mensagem de sucesso do Login (Bem Vindo Admin) quando o usuário é autenticado com êxito. Página: ajaxloginsuccess.jsp <html> <head> <title>login com Sucesso</title> </head> <body> <p align="center"> <font color="#000080" size="5">login realizado com sucesso!</font> </p> <h1> Bem Vindo <%=request.getparameter("username")%> </h1> </body> </html> 16 de 31

17 6. Validação e Conversão Um Validador (validator) verifica automaticamente se um erro de conversão ocorreu para um determinado campo. Uma conversão de tipo no framework é transparente. Geralmente, tudo o que é necessário fazer é garantir as entradas HTML possuem nomes que podem ser usados em expressões OGNL. Validação Neste exemplo, veremos como podemos validar uma página de login usando as validações do Struts 2. Para criarmos a página de login, as tags da interface do Struts. A tag <s:head> deve ser colocada na seção head da página HTML, esta tag gera automaticamente links para as bibliotecas de CSS e Javascript que são necessários para processar os elementos do formulário. A tag <s:form> contém os elementos do formulário. O atributo action contém o nome da ação que deve ser executada quando o formulário for submetido. Este nome da ação deve ser igual ao especificado no arquivo de configuração struts.xml. O tag <s:textfield> é usada para criar uma caixa de texto. O atributo label dessa tag contém o nome a ser exibido na página e o atributo name contém o nome da propriedade na classe da ação a ser mapeado. A tag <s:password> é idêntica a tag <s:textfield> excepto que o valor de entrada é mascarado. A tag <s:submit> é usada para criar um botão de submissão (envio do formulário). Página: login.jsp uri="/struts-tags" prefix="s" %> <head> <title>página Login</title> <s:head /> </head> <body> <s:form action="login"> <s:textfield name="username" label="usuário" /> <s:password name="password" label="senha" /> <s:submit value="entrar" /> </s:form> </body> Quando o usuário clicar no botão Entrar o pedido será encaminhado para a ação Login. Devemos realizar o mapeamento desta ação no arquivo struts.xml. <package name="default" extends="struts-default"> <action name="login" class="x25.com.tutorial.login"> <result name="input">/login.jsp</result> <result name="success">/success.jsp</result> </action> </package> Aqui o nosso pacote "padrão" estende o pacote "struts-default". Ao estender o "struts- 17 de 31

18 default" o pacote herda o conjunto de interceptores definido no defaultstack. O pacote "struts-default" é definido no arquivo struts-default.xml. Todas as tarefas comuns são realizadas pelas ações e separadas e colocadas em interceptores diferentes. Pode-se definir um interceptador para cada ação. Os interceptores mais comuns são utilizados agrupados em uma pilha defaultstack do pacote struts-default. O defaultstack será suficiente na maioria dos casos. Os interceptores serão disparados na ordem em que são declarados na pilha, tanto antes como após a acção é executada. Aqui, a ação "Login" é mapeado para a classe "Login" do pacote x25.com.tutorial. Os resultados são definidos usando o elemento "<result>". Se algum erro de validação ocorrer o usuário será encaminhado para a página login.jsp. Se o login for bem sucedido, então o usuário será encaminhado para a página sucesso.jsp. O defaultstack contém os seguintes interceptores: <interceptor-stack name="defaultstack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletconfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="i18n"/> <interceptor-ref name="chain"/> <interceptor-ref name="debugging"/> <interceptor-ref name="profiling"/> <interceptor-ref name="scopedmodeldriven"/> <interceptor-ref name="modeldriven"/> <interceptor-ref name="fileupload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="staticparams"/> <interceptor-ref name="actionmappingparams"/> <interceptor-ref name="params"> <param name="excludeparams">dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionerror"/> <interceptor-ref name="validation"> <param name="excludemethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludemethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> A classe de ação Login estende ActionSupport. Estender a classe ActionSupport fornece a implementação padrão para a maioria das tarefas comuns. public class Login extends ActionSupport { private String username; private String password; public Login() { public String execute() { 18 de 31

19 return SUCCESS; public void validate() { if (getusername().length() == 0) { addfielderror("username", "Nome é obrigatório"); else if (!getusername().equals("admin")) { addfielderror("username", "Usuário Inválido"); if (getpassword().length() == 0) { addfielderror("password", gettext("password.required")); public String getusername() { return username; public void setusername(string username) { this.username = username; public String getpassword() { return password; public void setpassword(string password) { this.password = password; A classe implementa a interface ActionSupport que expõe o método execute(). As seguintes constantes são declarados na interface de ação que podem ser usadas como valores de retorno do método execute(). public static final String ERROR = "error" public static final String INPUT = "input" public static final String LOGIN = "login" public static final String NONE = "none" public static final String SUCCESS = "success" São os seguintes valores: ERROR devolvido quando a execução da ação falha INPUT devolvido quando a ação exige a entrada do usuário. LOGIN devolvido quando o usuário não estiver logado no sistema. NONE devolvido quando a execução da ação for bem sucedida e não existem visões para mostrar. SUCCESS devolvido quando a ação for executada com êxito e o resultado correspondente é exibido para o usuário. Agora vamos ver os papéis desempenhados pelos diferentes interceptores. O interceptor params ajuda em transferir os dados da solicitação para o objeto da 19 de 31

20 ação. O interceptor workflow controla o fluxo de controle. Verifica se a ação implementa a interface Validateable, se isso acontecer, esse interceptor chamar o método validate() da classe Action. No método validate() valida o usuário e a senha. Se a validação falhar um erro é adicionado usando o método addfilederror(). O método validate() não retorna nenhum erro, em vez disso, armazena todos os erros com a ajuda da interface ValidationAware. Agora, o interceptor workflow verifica os erros de validação ocorridos. Se algum erro ocorreu no interceptor o processamento do pedido será interrompido e o controle é transferido para a página de entrada com as mensagens de erro apropriadas. Para cada campo, as mensagens de erro podem ser adicionadas usando o método addfielderror(). As mensagens de erro pode ser adicionadas diretamente ou pode ser especificado em um arquivo de propriedades separado. Os arquivos de propriedades deve possuir o mesmo nome da classe Action. Neste caso o nome do arquivo de propriedades é "Login.properties" já que o nome da ação é "Login.java". Este arquivo deve conter a seguinte entrada: password.required = Senha é obrigatória. O método gettext() é fornecido pela interface TextProvider e pode ser usado para retornar as mensagens de erro. Conversão Conversão de tipo é ideal para as situações na qual precisamos transformar uma String em um objeto mais complexo. Porque para a Web tudo é uma sequência em HTTP, Uma das principais características do WebWork era uma conversão de tipo muito úteis. Por exemplo, se o usuário estivesse acessando as coordenadas na forma de uma String (como "3, 22"), podemos necessitar da conversão tanto de String para ponto como de ponto a String. Usando este exemplo, se sua ação (ou outro objeto composto no qual está definindo em propriedades) possui um arquivo ClassName-conversion.properties, Os conversores de tipo configurados para conversão de e para strings. Transformar "3, 22" para o ponto (3, 22) direcionamos a seguinte entrada para o arquivo de propriedades: ponto = x25.com.converter.pontoconverter Um exemplo de conversão de tipo é mostrado abaixo, usamos a conversão de data e moeda, ao clicar no botão Enviar esses valores serão convertidos. Página: Submit.jsp taglib prefix="s" uri="/struts-tags" %> <head> <title>formulário de Submissão</title> <style url(css/main.css);</style> <style>.errormessage { color:green; 20 de 31

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)

Leia mais

Guia para Iniciantes do WebWork

Guia para Iniciantes do WebWork Guia para Iniciantes do WebWork Marcelo Martins Este guia descreve os primeiros passos na utilização do WebWork Introdução Desenvolver sistemas para Web requer mais do que simplesmente um amontoado de

Leia mais

Introdução ao framework web Apache Struts 2

Introdução ao framework web Apache Struts 2 Introdução ao framework web Apache Struts 2 Agenda Histórico Características Arquitetura Elementos Configurações Actions Resultados Exceções Internacionalização Interceptors Taglibs Validação Histórico

Leia mais

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Padrão Arquitetural MVC Arquitetura de Aplicações JSP/Web Ao projetar uma aplicação Web, é importante considerála como sendo formada por três componentes lógicos: camada

Leia mais

J550. Apache Struts. Helder da Rocha (helder@acm.org) www.argonavis.com.br

J550. Apache Struts. Helder da Rocha (helder@acm.org) www.argonavis.com.br J550 Apache Struts Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Sobre este módulo Este é um módulo opcional. Apresenta uma visão geral do framework Struts, usado para desenvolver aplicações

Leia mais

Minicurso de MVC web com Struts. EclipseDay@Serpro Felipe F Nascimento felipenasc@inf.puc-rio.br

Minicurso de MVC web com Struts. EclipseDay@Serpro Felipe F Nascimento felipenasc@inf.puc-rio.br Minicurso de MVC web com Struts EclipseDay@Serpro Felipe F Nascimento felipenasc@inf.puc-rio.br Agenda MVC Web e Command Visão Geral, Conceitos e terminologia Exemplo Conceitos Avançados Referências Laboratório

Leia mais

Prof. Roberto Desenvolvimento Web Avançado

Prof. Roberto Desenvolvimento Web Avançado Resposta exercício 1: Configuração arquivo web.xml helloservlet br.com.exercicios.helloservlet

Leia mais

Aprenda a usar um framework MVC desenvolvendo o login de um sistema com o Webwork utilizando seus principais recursos.

Aprenda a usar um framework MVC desenvolvendo o login de um sistema com o Webwork utilizando seus principais recursos. Introdução ao Webwork Samuel Mota Aprenda a usar um framework MVC desenvolvendo o login de um sistema com o Webwork utilizando seus principais recursos. Introdução Objetivo O objetivo deste tutorial é

Leia mais

!" # # # $ %!" " & ' ( 2

! # # # $ %!  & ' ( 2 !"# # #$ %!" "& ' ( 2 ) *+, - 3 . / 4 !" 0( # "!#. %! $""! # " #.- $ 111.&( ( 5 # # 0. " % * $(, 2 % $.& " 6 # #$ %% Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans Responde a consulta

Leia mais

Curso de Introdução ao

Curso de Introdução ao Curso de Introdução ao Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br O que é? Struts Struts é um framework gratuito para construção de aplicações web implementadas em Java.

Leia mais

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr J2EE Exemplo completo Utilização Servlet Instrutor HEngholmJr Page 1 of 9 AT09 Exemplo complete Utilização Servlet Version 1.1 December 5, 2014 Indice 1. BASEADO NOS EXEMPLOS DE CÓDIGO DESTA APOSTILA,

Leia mais

Java para WEB. Servlets

Java para WEB. Servlets Servlets Servlets são classes Java que são instanciadas e executadas em associação com servidores Web, atendendo requisições realizadas por meio do protocolo HTTP. Servlets é a segunda forma que veremos

Leia mais

JSP (Java Server Pages)

JSP (Java Server Pages) JSP (Java Server Pages) André Tavares da Silva andre.silva@udesc.br JSP A linguagem surgiu por volta de 1995. JSP foi inicialmente inventado por Anselm Baird-Smith durante um final de semana e depois Satish

Leia mais

Autenticação e Autorização

Autenticação e Autorização Autenticação e Autorização Introdução A segurança em aplicações corporativas está relacionada a diversos aspectos, tais como: autenticação, autorização e auditoria. A autenticação identifica quem acessa

Leia mais

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Por quê JSP? Com Servlets é fácil Ler dados de um formulário Recuperar dados de uma requisição Gerar informação de resposta Fazer gerenciamento

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Tutorial Struts 2 Roteiro para Demonstrações Vítor E. Silva Souza (vitorsouza@gmail.com)

Tutorial Struts 2 Roteiro para Demonstrações Vítor E. Silva Souza (vitorsouza@gmail.com) Tutorial Struts 2 Roteiro para Demonstrações Vítor E. Silva Souza (vitorsouza@gmail.com) Licença para uso e distribuição Este material está disponível para uso não-comercial e pode ser derivado e/ou distribuído,

Leia mais

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior Desenvolvimento WEB em JAVA Palestrante: Lourival F. de Almeida Júnior Agenda Introdução Servlet Arquitetura de Software Velocity Struts Conclusão Referências Introdução (antes) Programador Produto Introdução

Leia mais

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN Universidade São Judas Tadeu Faculdade de Tecnologia e Ciências Exatas Sistemas de Informação 3ASIN Atividade de Tópicos em Desenvolvimento e Banco de Dados Nome: Pedro Augusto Pereira R.A.: 201013018

Leia mais

mhtml:file://d:\utfpr\2009-2\especialização Java\Materiais de Aula\02 - JSF\Estud...

mhtml:file://d:\utfpr\2009-2\especialização Java\Materiais de Aula\02 - JSF\Estud... Página 1 de 7 Precisa de um freelancer, códigosfonte e exemplos Dicas & Truques completos? Contrate Nossa Consultoria Downloads Quem Somos Artigos & Tutoriais Bem-vindo(a) ao meu site. Além de realizar

Leia mais

Aula 03 - Projeto Java Web

Aula 03 - Projeto Java Web Aula 03 - Projeto Java Web Para criação de um projeto java web, vá em File/New. Escolha o projeto: Em seguida, na caixa Categorias selecione Java Web. Feito isso, na caixa à direita selecione Aplicação

Leia mais

Relatório do GPES. Conhecendo o Framework Struts

Relatório do GPES. Conhecendo o Framework Struts Relatório do GPES Relatório referente à criação da camada de regra de negócio com a utilização do Framework Struts para o desenvolvimento de um exemplo de Cadastro de Clientes. Conhecendo o Framework Struts

Leia mais

Parte I. Demoiselle Vaadin

Parte I. Demoiselle Vaadin Parte I. Demoiselle Vaadin O Vaadin é um framework para construção de interfaces web que aplica ideias inovadoras. Apesar de usar o GWT como mecanismo para a exibição de seus componentes, eles tem características

Leia mais

DWR DIRECTED WEB REMOTING

DWR DIRECTED WEB REMOTING DWR DIRECTED WEB REMOTING Vamos ver nesse artigo um pouco sobre o Frameworks Ajax para Java, o DWR. Vamos ver seus conceitos, utilidades, vantagens, algumas práticas e fazer o passo a passo para baixar,

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Minha primeira aplicação utilizando Java Server Faces + Glassfish

Minha primeira aplicação utilizando Java Server Faces + Glassfish Minha primeira aplicação utilizando Java Server Faces + Glassfish Este tutorial apresenta de forma simples, como iniciar no desenvolvimento com o framework Java Server faces 1.2, utilizando-se o servidor

Leia mais

J550. Model View Controller

J550. Model View Controller J550 Model View Controller 1 Design de aplicações JSP Design centrado em páginas Aplicação JSP consiste de seqüência de páginas (com ou sem beans de dados) que contém código ou links para chamar outras

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes Resumo Neste tutorial serão apresentados conceitos relacionados a Servlets. Ele inicial como uma breve introdução do funcionamento

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

Molhando os pés com Tapestry, parte 1

Molhando os pés com Tapestry, parte 1 Molhando os pés com Tapestry, parte 1 Daniel Fernandes Martins Se cansou de apenas ouvir falar sobre o framework Tapestry? Se sim, então veja por si só o que o Tapestry pode fazer por você! Sobre o tutorial

Leia mais

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique. Lista de Revisão 1. Nos sistemas web, geralmente os usuários apresentam dois problemas típicos, a desorientação e a sobrecarga cognitiva. Discorra sobre esses problemas. 2. Apresente as principais diferenças

Leia mais

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP Software cliente: browser e outros Protocolo HTTP Infraestrutura de transporte

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Apache Wicket. Apache Wicket

Apache Wicket. Apache Wicket wicket_ Apache Wicket Apache Wicket Um framework simplificado para construir páginas Web dinâmicas Qual desenvolvedor não gostaria de utilizar orientação a objetos na Web? Utilizar componentes reutilizáveis

Leia mais

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS - www.aas.pro.

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS - www.aas.pro. Material de apoio a aulas de Desenvolvimento Web Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS AAS - www.aas.pro.net Março-2012 Este pequeno tutorial tem como objetivo conduzir o programador passo-a-passo

Leia mais

Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação. na Prática. Por: Fernando Goulart

Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação. na Prática. Por: Fernando Goulart Universidade Católica de Brasília Pró-Reitoria de Graduação Sistemas de Informação Struts na Prática Por: Fernando Goulart 1 Leituras recomendadas Husted, Ted. Struts em Ação. Ciência Moderna, 2004. Spielman,

Leia mais

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04 Agenda 1. 2. Web Container TomCat 2 3 J2EE permite criar aplicações Web dinâmicas (com conteúdo dinâmico)

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

Programação II Programação para a Web. Christopher Burrows

Programação II Programação para a Web. Christopher Burrows Programação II Programação para a Web Christopher Burrows Apache Tomcat O Apache Tomcat é um Servlet Container desenvolvido pela Apache Software Foundation. Implementa as tecnologias Java Servlets e Java

Leia mais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais Curso de Java Geração de Páginas WEB através de JSP Todos os direitos reservados Klais JSP e Servlets Servletsconstituem um mecanismo conveniente para a geração de páginas HTML dinâmicas e seu tratamento

Leia mais

TUTORIAL JSP & SERVLET

TUTORIAL JSP & SERVLET TUTORIAL JSP & SERVLET A.A.S. UNINOVE WWW.AAS.PRO.BR Exemplo simples de JSP com Servlet (para envio e recebimento de dados) Sumário JSP & SERVLET... 2 1. Criando Projeto... 2 2. O primeiro JSP... 3 3.

Leia mais

TUTORIAL DE INTRODUÇÃO AO CEWOLF

TUTORIAL DE INTRODUÇÃO AO CEWOLF 1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos

Leia mais

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source Configuraçãoes e Software Antes de começar a escrita do código, você tem que certificar-se que tem todo o software necessário e

Leia mais

Desenvolvimento WEB II

Desenvolvimento WEB II Desenvolvimento WEB II Struts 2 Sérgio Cerqueira sergioruivace@les.inf.puc-rio.br Agenda Introdução Struts e a Web Contextualização Arquitetura Configuração Action Result Type Interceptor Value Stack /

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges

TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges Versão 1.0 TUTORIAL SPRING SECURITY PROGRAMAÇÃO COM FRAMEWORKS Responsáveis: Ana Luíza Cruvinel, Maikon Franczak e Wendel Borges Data: 01/12/2014 SUMÁRIO 1. INTRODUÇÃO... 2 2. O QUE É SPRING SECURITY?...

Leia mais

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007 Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007 Nível: Intermediário Este tutorial tem como objetivo criar um simples componente que renderiza uma tag label utilizando recursos

Leia mais

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600 Objetivo Com enfoque totalmente prático permite que programadores Java possam ampliar seus conhecimentos no mundo Web na criação de sistemas profissionais. Utilizar os modelos de programação com Servlets,

Leia mais

Java na WEB Componentes Bean

Java na WEB Componentes Bean 1 Java na WEB Componentes Bean Objetivo: Ao final da aula o aluno será capaz de: Criar site dinâmico utilizando componentes Bean Utilizar Tags de ação Empregar Coleções de Bean. Sumário 5. Definição de

Leia mais

Estudo Dirigido - Parte 1

Estudo Dirigido - Parte 1 Linguagem Java para Web - JSP Professora Lucélia Estudo Dirigido - Parte 1 Na primeira parte deste tutorial, vamos receber os dados de um formulário e verificar se os dados foram ou não preenchidos. Se

Leia mais

Desenvolvimento de aplicações Web. Java Server Pages

Desenvolvimento de aplicações Web. Java Server Pages Desenvolvimento de aplicações Web Java Server Pages Hamilton Lima - athanazio@pobox.com 2003 Como funciona? Servidor web 2 Internet 1 Browser 3 Arquivo jsp 4 JSP Compilado 2 Passo a passo 1 browser envia

Leia mais

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

 # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' ( ! " # $ %&'( ) *' ( +,)+ ( - $ (+*'.%/ 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' ( 2 (5) '%'1%6% %/ )1%12 74 % +1%() %% % *8) + 9 "(:4 8) % ; *' 3 "( % '% + 4% % ) +' 455 %' 4 *' ( +% ) + %,)1 0 +

Leia mais

Grupo de Usuários Java http://www.guj.com.br JavaServer Faces: A mais nova tecnologia Java para desenvolvimento WEB

Grupo de Usuários Java http://www.guj.com.br JavaServer Faces: A mais nova tecnologia Java para desenvolvimento WEB JavaServer Faces: A mais nova tecnologia Java para desenvolvimento WEB Talita Pitanga Conheça um pouco sobre a mais nova tecnologia para desenvolvimento de aplicações WEB: JavaServer Faces. Introdução

Leia mais

Prática Sobre Servlets e JSP

Prática Sobre Servlets e JSP Prática Sobre Servlets e JSP 1. Localize a pasta do Tomcat (TOMCAT_HOME); 2. Acesse a pasta bin e execute tomcat5w.exe; 3. Abra o Navegador e acesse http://localhost:8080 (A apresentação de uma página

Leia mais

Material de Apoio Profº Alan Cleber Borim

Material de Apoio Profº Alan Cleber Borim Desenvolvimento Web...2 Java....2 O Tomcat...2 Instalando o ambiente da aplicação....3 Instalando o jdk JAVA...3 Instalando o Tomcat...3 Criando um novo ambiente de desenvolvimento...4 Definição de Servlet...7

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Scriptlets e Formulários

Scriptlets e Formulários 2 Scriptlets e Formulários Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Permitir ao aluno aprender a criar um novo projeto Java para web no Netbeans IDE,

Leia mais

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br Desenvolvimento de Aplicações Web Programação Contextualização de aplicações Web: navegadores e servidores como interpretadores, tecnologias do lado do cliente (XHTML, CSS, Javascript) e do lado do servidor

Leia mais

JSF - Controle de Acesso FERNANDO FREITAS COSTA

JSF - Controle de Acesso FERNANDO FREITAS COSTA JSF - Controle de Acesso FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA JSF Controle de Acesso Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação

Leia mais

Criando documentação com javadoc

Criando documentação com javadoc H Criando documentação com javadoc H.1 Introdução Neste apêndice, fornecemos uma introdução a javadoc ferramenta utilizada para criar arquivos HTML que documentam o código Java. Essa ferramenta é usada

Leia mais

Introdução à Tecnologia Web

Introdução à Tecnologia Web Introdução à Tecnologia Web JavaScript Sintaxe da Linguagem: Delimitadores e etc Profª MSc. Elizabete Munzlinger JavaScript Sintaxe da Linguagem Índice 1 SINTAXE DA LINGUAGEM... 2 1.1 Delimitadores de

Leia mais

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] ) Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Desenvolvimento Web com JSP/Servlets

Desenvolvimento Web com JSP/Servlets Desenvolvimento Web com JSP/Servlets Requisitos Linguagem Java; Linguagem SQL; Noções de HTML; Noções de CSS; Noções de Javascript; Configuração do ambiente JDK APACHE TOMCAT MySQL Instalando o JDK Instalando

Leia mais

Programação Web Aula 12 - Java Web Software

Programação Web Aula 12 - Java Web Software Programação Web Aula 12 - Java Web Software Bruno Müller Junior Departamento de Informática UFPR 25 de Maio de 2015 1 Java 2 Java Web Software 3 Servlets Modelo de Trabalho Funcionamento API Java Código

Leia mais

Struts. Características Avançadas

Struts. Características Avançadas Struts Características Avançadas Agenda Tags do Struts DispatchAction Multiplos arquivos de configuração Command Pattern DynaActionForm Array s Validation Framework JSP2.0 Expression Language html html:submit

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Tutorial Módulo 06 - Segurança

Tutorial Módulo 06 - Segurança LABORATÓRIO 06 Segurança Este laboratório tem por objetivo exercitar o uso do componente de segurança do Framework e uso da especificação JAAS. Objetivos: Uso do Login Module do Componente de Segurança

Leia mais

Java para Desenvolvimento Web

Java para Desenvolvimento Web Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para

Leia mais

JSP e Servlet Princípio de MVC

JSP e Servlet Princípio de MVC UNIPÊ Centro Universitário de João Pessoa Desenvolvimento para Web HTTP e Servlets JSP e Servlet Princípio de MVC ducaribas@gmail.com 1 12 JSP e Servlets Desvantagens de JSP e Servlets Servlets Escrever

Leia mais

JSP (Java Server Pages)

JSP (Java Server Pages) JSP (Java Server Pages) Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior 1 Introdução Tecnologia para desenvolvimento de aplicações WEB fundamentada na

Leia mais

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes Desenvolvimento Web XHTML Formulários Prof. Bruno E. G. Gomes 2014 Introdução Um recurso bastante utilizado no desenvolvimento Web é o envio de dados de uma página para o servidor quando fornecemos informações,

Leia mais

Tecnologias Web. Java Enterprise Edition

Tecnologias Web. Java Enterprise Edition Tecnologias Web Java Enterprise Edition Cristiano Lehrer, M.Sc. Introdução Java Enterprise Edition (JEE): Plataforma de tecnologias para o desenvolvimento de aplicações corporativas distribuídas. É uma

Leia mais

Desenvolvimento Web com Framework Demoiselle versão 1.0

Desenvolvimento Web com Framework Demoiselle versão 1.0 Desenvolvimento Web com Framework Demoiselle versão 1.0 Módulo 07: Outros Componentes Autor: Rodrigo Hjort Serpro / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br Modificado

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007

Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007 Iniciando com Zend_Auth By Rob Allen, www.akrabat.com Document Revision 1.0.8 Copyright 2007 Este tutorial é destinado a oferecer uma bem básica introdução para o uso do componente Zend_Auth com o Zend

Leia mais

Servlets, JSPs e Java Beans

Servlets, JSPs e Java Beans Servlets, JSPs e Java Beans Prof. Pasteur Ottoni de Miranda Junior PUC Minas Disponível em www.pasteurjr.blogspot.com 1-Servlets 1.1 O que são Servlets são classes Java executadas em servidores web. Servem

Leia mais

SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR DE EVENTOS

SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR DE EVENTOS SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR DE EVENTOS Palmas 2006 i SILVIO COSTA MOREIRA UTILIZAÇÃO DO STRUTS FRAMEWORK NO DESENVOLVIMENTO DE UM GERENCIADOR

Leia mais

Tutorial Jogo da Velha WEB

Tutorial Jogo da Velha WEB Tutorial Jogo da Velha WEB Criação do Projeto 1- Inicie o Eclipse 2- Crie um novo projeto Web dinâmico. 3- Na tela seguinte, digite o nome do projeto e caso no campo Target Runtime não estiver aparecendo

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

Tutorial Módulo 01 Arquitetura Anexo I. Tutorial Módulo 01 Arquitetura Anexo I. LABORATÓRIO 01 Arquitetura e Configuração

Tutorial Módulo 01 Arquitetura Anexo I. Tutorial Módulo 01 Arquitetura Anexo I. LABORATÓRIO 01 Arquitetura e Configuração Tutorial Módulo 01 Arquitetura Anexo I LABORATÓRIO 01 Arquitetura e Configuração Este documento tem por objetivo a orientação para a configuração do ambiente, utilizando a IDE Eclipse, e a criação de um

Leia mais

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais Curso de Java Geração de Páginas WEB Aplicação WEB Numa aplicação WEB de conteúdo dinâmico As páginas são construídas a partir de dados da aplicação (mantidos num banco de dados). Usuários interagem com

Leia mais

Evolução guiada por APIs. com REST para modernizar seu legado

Evolução guiada por APIs. com REST para modernizar seu legado Evolução guiada por APIs Option #2 híbrida Criando uma arquitetura com REST para modernizar seu legado Rodrigo Engenheiro de Software na CI&T. Atuou na criação da FIFA World Cup 2014 Happiness Flag da

Leia mais

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Aula 4. Objetivos. Conteúdo dinâmico na internet. Aula 4 Objetivos Conteúdo dinâmico na internet. Para uma solicitação da Web mais simples, um navegador solicita um documento HTML e o servidor Web encontra o arquivo correspondente e devolve. Se o documento

Leia mais

J550. Helder da Rocha (helder@acm.org) www.argonavis.com.br

J550. Helder da Rocha (helder@acm.org) www.argonavis.com.br J550 Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 O que são Filtros Um filtro éum componente Web que reside no servidor Intercepta as requisições e respostas no seu caminho até o servlet e de

Leia mais

J550 Testes em Aplicações Web com Cactus

J550 Testes em Aplicações Web com Cactus J550 Testes em Aplicações Web com Cactus Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Sobre este módulo Este módulo descreve um framework - o Jakarta Cactus - que pode ser utilizado para testar

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

Java Server Pages JSP

Java Server Pages JSP Java Server Pages JSP Roneclei Campos dos Santos roneclei.campos@gmail.com Eduardo Manuel de Freitas Jorge emjorge@reconcavotecnologia.org.br 2008 Sumário: 1 Introdução...3 2 Arquitetura JSP...4 3 Objetos

Leia mais

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira WEBDESIGN Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira Formulários e JavaScript Como visto anteriormente, JavaScript pode ser usada para

Leia mais

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web: Web Browser como o processo cliente Servidor web com páginas estáticas Vs Aplicações dinâmicas para a Web: 1 Cliente Web browser HTTP porto 80 Servidor web... JDBC RMI XML... Base de Dados Aplicação em

Leia mais

SPRING - VALIDAÇÃO. Altere o arquivo formulario.jsp como segue:

SPRING - VALIDAÇÃO. Altere o arquivo formulario.jsp como segue: Altere o arquivo formulariojsp como segue: SPRING - VALIDAÇÃO

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para Internet Avançada 4. Web Services Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt São módulos de aplicações de negócios que expõem as regras do negócio como serviços na Internet através

Leia mais

Anotações e Navegação no JSF 2.0

Anotações e Navegação no JSF 2.0 1/16 Anotações e Navegação no JSF 2.0 Simplifique a navegação e a configuração XML com o JSF 2.0 Aprenda a utilizar anotações e navegações implícita e condicional em suas aplicações JSF 2.0 MARCEL TOKARSKI

Leia mais

INTRODUÇÃO À TECNOLOGIA SERVLETS

INTRODUÇÃO À TECNOLOGIA SERVLETS PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO À TECNOLOGIA SERVLETS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o conceito aplicações orientada a serviços via web Apresentar o papel dos contentores

Leia mais

Desenvolvendo aplicações

Desenvolvendo aplicações Desenvolvendo aplicações 22 para a Web Uma aplicação Java pode ser executada sem modificação em qualquer plataforma que tenha a máquina virtual Java instalada. Esta característica faz com que as aplicações

Leia mais