14
Apostila Struts2 Aula 01 Checkbox www.cotiinformatica.com.br 1 http://struts.apache.org/ Struts É um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrão Model 2 (uma variante do MVC oficializada pela Sun), de aplicações web (principalmente) construído em Java para ser utilizado em um container web em um servidor J2EE. [1] Este framework foi originalmente desenvolvido por Craig McClanahan e doado para a Apache Software Foundation em 2002, onde continua sendo desenvolvido segundo o padrão desta fundação. Objetivos e visão geral Em um aplicativo de web padrão Java EE, o cliente normalmente envia informações ao servidor através de um formulário da web. Em seguida, a informação ou é entregue a umJava Servlet que a processa, interage com um banco de dados e produz uma resposta formatada em HTML, ou é entregue a um JavaServer Page (JSP) que mixa código HTMLe Java para obter o mesmo resultado. Ambas as abordagens são consideradas inadequadas para grandes projetos porque eles misturam a lógica do aplicativo com apresentação e dificultam a manutenção. O objetivo do Struts é separar o model (modelo - lógica de aplicativo que interage com um banco de dados) do view (visualização - páginas HTML apresentadas para o cliente) e do controller (controlador - instância que transmite informações entre a exibição e o modelo). Struts fornece o

Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

  • Upload
    lythuan

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 1

http://struts.apache.org/

Struts É um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrão Model 2 (uma variante do MVC oficializada pela Sun), de aplicações web (principalmente) construído em Java para ser utilizado em um container web em um servidor J2EE.[1] Este framework foi originalmente desenvolvido por Craig McClanahan e doado para a Apache Software Foundation em 2002, onde continua sendo desenvolvido segundo o padrão desta fundação.

Objetivos e visão geral Em um aplicativo de web padrão Java EE, o cliente normalmente envia informações ao servidor através de um formulário da web. Em seguida, a informação ou é entregue a umJava Servlet que a processa, interage com um banco de dados e produz uma resposta formatada em HTML, ou é entregue a um JavaServer Page (JSP) que mixa código HTMLe Java para obter o mesmo resultado. Ambas as abordagens são consideradas inadequadas para grandes projetos porque eles misturam a lógica do aplicativo com apresentação e dificultam a manutenção. O objetivo do Struts é separar o model (modelo - lógica de aplicativo que interage com um banco de dados) do view (visualização - páginas HTML apresentadas para o cliente) e do controller (controlador - instância que transmite informações entre a exibição e o modelo). Struts fornece o

Page 2: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 2

controlador/controller (um servlet conhecido como ActionServlet) e facilita a escrita de moldes padronizados para a camada de visualização/view (normalmente em JSP, mas XML/XSLT e Velocity também são suportados). O programador de aplicativo da web é responsável por escrever o código do modelo/model, e por criar um arquivo de configuração centralizador (struts-config.XML) que une modelo, visualização e controlador. Solicitações do cliente são enviadas para o controller em forma de Actions (ações) definidas no arquivo de configuração. O controller, ao receber uma solicitação, chama a classe Action correspondente a Programação Orientada a Objeto, e esta interage com o código do model específico. O código do model retorna um "ActionForward", uma cadeia de caracteres que informa ao controller qual página de resultado deve ser enviada para o cliente. As informações são passadas entre model e view em forma de JavaBeans especial. Uma poderosa biblioteca personalizada de palavras-chave (tags - metadata) permite ler e gravar o conteúdo (beans) da camada de apresentação sem a necessidade de qualquer código Java embutido. Struts é categorizado como uma estrutura de aplicativo web baseada em solicitação. Struts também oferece suporte a internacionalização e inclui um mecanismo de moldes chamado "Tiles", que permite que a camada de apresentação seja composta de cabeçalho, rodapé e componentes de conteúdo independentes.

Principais problemas e soluções:

Facilita a população de beans (Action Forms) Simplifica o uso de servlets, necessitando apenas a criação de classes

Action Com suas tags dispensa o uso de scriptlets em 98% dos casos.

LIBS utlizadas no projeto... asm-3.3.jar asm-commons-3.3.jar commons-fileupload-1.3.jar commons-io-2.0.1.jar commons-lang-2.4.jar commons-lang3-3.1.jar freemarker-2.3.19.jar javassist-3.11.0.GA.jar mysql-connector-java-5.1.26-bin.jar ognl-3.0.6.jar servlet3-api.jar

Page 3: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 3

struts2-convention-plugin-2.3.15.1.jar struts2-core-2.3.15.1.jar struts2-jquery-plugin-3.6.1.jar xwork-core-2.3.15.1.jar

Estrutura do projeto...

package entity;

public class Produto { private Integer idProduto; private String nome; private Double preco; public Produto() { // TODO Auto-generated constructor stub } public Produto(Integer idProduto, String nome, Double preco) { super(); this.idProduto = idProduto; this.nome = nome; this.preco = preco; } @Override public String toString() {

Page 4: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 4

return "Produto [idProduto=" + idProduto + ", nome=" + nome + ", preco=" + preco + "]"; } public Integer getIdProduto() { return idProduto; } public void setIdProduto(Integer idProduto) { this.idProduto = idProduto; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Double getPreco() { return preco; } public void setPreco(Double preco) { this.preco = preco; } @Override public boolean equals(Object c) { return this.idProduto.equals(((Produto)c).getIdProduto()); } }

package action; import java.security.IdentityScope; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;

Page 5: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 5

import entity.Produto;

public class ProdutoAction extends ActionSupport { private Produto produto; private List<Produto> lista; private Integer[] idEscolhidos; private List<Produto> produtosEscolhidos; public List<Produto> getProdutosEscolhidos() { return produtosEscolhidos; } public void setProdutosEscolhidos(List<Produto> produtosEscolhidos) { this.produtosEscolhidos = produtosEscolhidos; } public Produto getProduto() { return produto; } public void setProduto(Produto produto) { this.produto = produto; } public Integer[] getIdEscolhidos() { return idEscolhidos; } public void setIdEscolhidos(Integer[] idEscolhidos) { this.idEscolhidos = idEscolhidos; } public List<Produto> getLista() { lista = new ArrayList<Produto>(); lista.add(new Produto(10, "arroz", 15.)); lista.add(new Produto(20, "feijao", 9.5)); lista.add(new Produto(30, "carne", 50.)); lista.add(new Produto(40, "flango", 16.)); return lista; } public void setLista(List<Produto> lista) { this.lista = lista; }

Page 6: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 6

public String init() { getLista(); return SUCCESS; } public String enviar() { HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); try { Produto c = new Produto(); getLista(); produtosEscolhidos = new ArrayList<>(); if (idEscolhidos.length > 0) { for (Integer id : idEscolhidos) { Produto p = new Produto(); p.setIdProduto(id); produtosEscolhidos.add(lista.get(lista.indexOf(p))); } return SUCCESS; } else { throw new IllegalArgumentException("Nenhum Produto Marcado !! "); } } catch (Exception ex) { request.setAttribute("msg", "Error :" + ex.getMessage()); } return ERROR; } }

struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="produtoaction" extends="struts-default">

Page 7: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 7

<action name="home" class="action.ProdutoAction" method="init"> <result name="success">/sistema.jsp</result> </action> <action name="produto.enviar" class="action.ProdutoAction" method="enviar"> <result name="success">/resposta.jsp</result> <result name="error">/sistema.jsp</result> </action> </package> </struts>

Para gerar o XML...

Clicar com o botão direito no projeto -> Properties...

Page 8: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 8

Clicar em Project Faces -> Desmarcar Dynamic Web Module clicando com o botão direito -> Unlock

Desmarca -> Apply

Page 9: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 9

Marcar novamente -> Futher Configuration -> clicar em Generate web.xml -> ok -> Apply -> OK

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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Aula01-checkbox</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter>

Page 10: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 10

<filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

Criar a página índex.jsp na pasta “WebContent”

<!doctype html> <html> <head> <link rel="stylesheet" href="bootstrap/css/bootstrap.css"> <script type="text/javascript" src="bootstrap/js/jquery-1.10.2.js"></script> <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script> </head> <body> <div class="container"> <div class="well"> <h3>Aula 1 Struts 2</h3> </div> <a href="home.action" class="btn btn-primary">Entrar no Sistema <span class="glyphicon glyphicon-log-in"></span> </a> </div> </body> </html>

Page 11: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 11

Para rodar o projeto... Clicar no projeto com o botão direito -> Run as -> Run on server

Page 12: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 12

sistema.jsp <!doctype html> <html> <head> <link rel="stylesheet" href="bootstrap/css/bootstrap.css"> <script type="text/javascript" src="bootstrap/js/jquery-1.10.2.js"></script> <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script> <title>Sistema Struts2</title> </head> <body> <%@ taglib prefix="s" uri="/struts-tags"%> <div class="container"> <div class="well"> <h1>Struts 2 com CheckBox</h1> </div> <div class="col-sm-8 col-sm-offset-2"> <s:form action="produto.enviar"> <label style="font-color: #000">Marque os produtos:</label> <s:checkboxlist list="lista" name="idEscolhidos" listKey="idProduto" listValue="nome" /> <s:submit value="Enviar" cssClass="btn btn-primary"/> <br /> <br /> ${msg} </s:form> </div> </div> </body>

Page 13: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 13

</html>

resposta.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Resposta</title> <link rel="stylesheet" href="bootstrap/css/bootstrap.css"> <script type="text/javascript" src="bootstrap/js/jquery-1.10.2.js"></script> <script type="text/javascript" src="bootstrap/js/bootstrap.js"></script> </head>

Page 14: Checkbox - blogedsonbelem.com.brblogedsonbelem.com.br/blog/java/Aula01-struts.pdfApostila Struts2 Aula 01 Checkbox 1 Struts É um framework de desenvolvimento da camada controladora,

Apostila Struts2

Aula

01

Checkbox

www.cotiinformatica.com.br 14

<body> <div class="container"> <div class="well"> <h1>Struts 2 com CheckBox</h1> <a href="home.action" class="btn btn-primary"><span class="glyphicon glyphicon-home"></span> Home</a> </div> <h4>Produtos Escolhidos: </h4><br/> <s:property value="produtosEscolhidos"/> <br/> </div> </body> </html>