Abra o PDF - Blog Edson Belém

Propaganda
Apostila Struts2
Aula
01
Checkbox
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
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
01
Checkbox
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
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
01
Checkbox
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() {
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
01
Checkbox
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;
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
01
Checkbox
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;
}
www.cotiinformatica.com.br
5
Apostila Struts2
Aula
01
Checkbox
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">
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
01
Checkbox
<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...
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
01
Checkbox
Clicar em Project Faces -> Desmarcar Dynamic Web Module clicando
com o botão direito -> Unlock
Desmarca -> Apply
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
01
Checkbox
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>
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
01
Checkbox
<filter-name>struts2</filter-name>
<filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx
ecuteFilter</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/jquery1.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>
www.cotiinformatica.com.br
10
Apostila Struts2
Aula
01
Checkbox
Para rodar o projeto...
Clicar no projeto com o botão direito -> Run as -> Run on server
www.cotiinformatica.com.br
11
Apostila Struts2
Aula
01
Checkbox
sistema.jsp
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
<script type="text/javascript" src="bootstrap/js/jquery1.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>
www.cotiinformatica.com.br
12
Apostila Struts2
Aula
01
Checkbox
</html>
resposta.jsp
<%@ page language="java" contentType="text/html; charset=ISO8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1">
<title>Resposta</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
<script type="text/javascript" src="bootstrap/js/jquery1.10.2.js"></script>
<script type="text/javascript"
src="bootstrap/js/bootstrap.js"></script>
</head>
www.cotiinformatica.com.br
13
Apostila Struts2
Aula
01
Checkbox
<body>
<div class="container">
<div class="well">
<h1>Struts 2 com CheckBox</h1>
<a href="home.action" class="btn btnprimary"><span class="glyphicon glyphicon-home"></span> Home</a>
</div>
<h4>Produtos Escolhidos: </h4><br/>
<s:property value="produtosEscolhidos"/>
<br/>
</div>
</body>
</html>
www.cotiinformatica.com.br
14
Download