Apostila Struts2
Aula
01
Checkbox
http://struts.apache.org/
Struts É um framework de desenvolvimento da camada controladora, numa estrutura seguindo o padrão Model padrão Model 2 (uma variante do MVC do MVC oficializada pela Sun) pela Sun),, de aplicações web (principalmente) construído em Java em Java para ser utilizado em [1] um container web web em um servidor um servidor J2EE. J2EE. Este framework foi originalmente desenvolvido por Craig McClanahan e doado para a Apache Software Foundation em 2002, 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, 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 um Java Servlet que a processa, interage com um banco de dados e produz uma resposta formatada em HTML, ou é entregue a um JavaServer um JavaServer Page (JSP) (JSP) que mixa código HTML código HTMLee 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 (um servlet conhecido como ActionServlet) e facilita a escrita de moldes padronizados para a camada de visualização/view (normalmente em JSP, em JSP, mas XML 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", "ActionForward", uma cadeia de caracteres que informa ao controller qual qual página de resultado deve ser enviada para o cliente. cliente. As informações são passadas entre model e view em 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 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 idProduto; ; private String nome nome; ; private Double preco preco; ; public Produto() { // TODO Auto-generated constructor stub } public Produto(Integer idProduto idProduto, , String nome nome, , Double preco) preco ) { super(); this.idProduto idProduto = = idProduto idProduto; ; this.nome nome = = nome nome; ; this.preco preco = = 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 lista; private Integer[] idEscolhidos; private List produtosEscolhidos; public List getProdutosEscolhidos() { return produtosEscolhidos; } public void setProdutosEscolhidos(List 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 getLista() { lista = new ArrayList(); 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 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
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
01
Checkbox
/sistema.jsp /resposta.jsp /sistema.jsp
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 Aula01-checkbox index.html index.htm index.jsp default.html default.htm default.jsp
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
01
Checkbox
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx ecuteFilter struts2 /*
Criar a página
índex.jsp
na pasta WebContent
Aula 1 Struts 2 Entrar no Sistema
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 Sistema Struts2
Struts 2 com CheckBox Marque os produtos: ${msg}
www.cotiinformatica.com.br
12
Apostila Struts2
Aula
01
Checkbox
resposta.jsp Resposta
www.cotiinformatica.com.br
13
Apostila Struts2
Aula
01
Checkbox
Struts 2 com CheckBox Home Produtos Escolhidos:
www.cotiinformatica.com.br
14
Apostila Struts2
Aula
02
StrutsTiles
Projeto Tiles Estrutura do projeto...
LIBS: antlr-2.7.7.jar c3p0-0.9.2.1.jar commons-beanutils-1.7.0.jar commons-collections-2.1.jar commons-collections-3.2.1-1.0.0.jar commons-digester-1.8.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar ehcache-core-2.4.3.jar freemarker-2.3.8.jar hibernate-c3p0-4.3.1.Final.jar hibernate-commons-annotations-4.0.4.Final.jar hibernate-core-4.3.1.Final.jar hibernate-ehcache-4.3.1.Final.jar hibernate-entitymanager-4.3.1.Final.jar hibernate-jpa-2.1-api-1.0.0.Final.jar hibernate-validator-4.3.0.Final.jar hibernate-validator-annotation-processor-4.3.0.Final.jar jandex-1.1.0.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.1.3.GA.jar jboss-logging-annotations-1.2.0.Beta1.jar
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
02
StrutsTiles
jboss-transaction-api_1.2_spec-1.0.0.Final.jar log4j-1.2.15.jar mysql-connector-java-5.1.23-bin.jar ognl-2.6.11.jar ojdbc14-10.2.0.3.jar servlet3-api.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.0-rc0.jar struts2-core-2.0.14.jar struts2-tiles-plugin-2.0.14.jar tiles-api-2.0.4.jar tiles-core-2.0.4.jar tiles-jsp-2.0.4.jar validation-api-1.0.0.GA.jar xwork-2.0.7.jar
package entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table;
@Entity @Table @NamedQueries( {@NamedQuery(name="Cliente.findAll",query="from Cliente"), @NamedQuery(name="Cliente.findByEmail" , query="from Cliente c where c.email= :param1" ) })
public class Cliente implements Serializable{ private static final long serialVersionUID = 1L;
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
02
StrutsTiles
@Id @GeneratedValue(strategy=GenerationType. AUTO ) @Column private Integer idCliente; @Column(length=50) private String nome; @Column(length=50,unique= true) private String email; public Cliente() { } public Cliente(Integer idCliente, String nome, String email) { this.idCliente = idCliente; this.nome = nome; this.email = email; }
@Override public String toString() { return "Cliente [idCliente=" + idCliente + ", nome=" + nome + ", email=" + email + "]"; } public Integer getIdCliente() { return idCliente; } public void setIdCliente(Integer idCliente) { this.idCliente = idCliente; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
02
StrutsTiles
public static long getSerialversionuid() { return serialVersionUID; }
}
mysql_hibernate.cfg.xml org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/bd_t iles?createDatabaseIfNotExist=true root coti true update
package config; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport;
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
02
StrutsTiles
public class Main { public static void main(String[] args) { new SchemaExport( new AnnotationConfiguration().configure( "config/mysql_hibernate.cfg. xml")).create( true, true); System.out.println("Tableas geradas"); } }
No console... log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. drop table if exists Cliente create table Cliente ( idCliente integer not null auto_increment, email varchar(50), nome varchar(50), primary key (idCliente) ) alter table Cliente add constraint UK_tfai0ea59ylhrubk6at672968 (email) Tableas geradas
www.cotiinformatica.com.br
unique
5
Apostila Struts2
Aula
02
StrutsTiles
package persistence;
import org.hibernate.HibernateException; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration;
public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { Configuration configuration = new Configuration().configure( "config/mysql_hibernate.cfg.xml" ); StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings( configuration.get Properties());
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
02
StrutsTiles
sessionFactory = configuration.buildSessionFactory( builder.build()); } catch (HibernateException ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError( ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void closeSessionFactory() { sessionFactory.close(); } }
package persistence; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport; import entity.Cliente;
public class ClienteDao { Session session; Transaction transaction; Query query; Criteria criteria; public void create(Cliente c)throws Exception{ session = HibernateUtil. getSessionFactory().openSession(); transaction = session.beginTransaction(); session.save(c);
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
02
StrutsTiles
transaction.commit(); session.close(); } public List findAll(){ session = HibernateUtil. getSessionFactory().openSession(); List resp = session.getNamedQuery("Cliente.findAll").list(); session.close(); return resp; } public Cliente findByCode(Integer cod)throws Exception{ session = HibernateUtil. getSessionFactory().openSession(); Cliente cliente= (Cliente) session.get(Cliente. class, cod); session.close(); return cliente; }
}
package action; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import entity.Cliente; import persistence.ClienteDao;
public class ControleCliente extends ActionSupport{ private Cliente cliente; HttpServletRequest request; private List lista; private void init(){ request = (HttpServletRequest)
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
02
StrutsTiles
ActionContext. getContext().get(ServletActionContext. HTTP_RE QUEST ); }
public List getLista() { lista = new ClienteDao().findAll(); return lista; } public void setLista(List lista) { this.lista = lista; } public Cliente getCliente() { return cliente; } public void setCliente(Cliente cliente) { this.cliente = cliente; } public String home() { return SUCCESS; } public String cadastro() { return "cadastro"; } public String consulta() { getLista(); return "consulta"; } public String logout() { return "logout"; }
public String cadastrar(){ init(); try{ new ClienteDao().create( cliente); //grava cliente = new Cliente(); //limpa request.setAttribute("msg", "Dados Gravados do Cliente ..." ); //manada a mensagem //vá para success return SUCCESS; }catch(Exception ex){
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
02
StrutsTiles
request.setAttribute("msg", "Error :" + ex.getMessage()); return ERROR; }
} }
struts.xml home /error.tiles cadastro
www.cotiinformatica.com.br
10
Apostila Struts2
Aula
02
StrutsTiles
/error.tiles
home cadastro consulta
web.xml org.apache.struts2.tiles.StrutsTilesListener tilesDefinitions /WEB-INF/tiles.xml struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
www.cotiinformatica.com.br
11
Apostila Struts2
Aula
02
StrutsTiles
tiles.xml < > >
www.cotiinformatica.com.br
14
Apostila Struts2
Aula
02
StrutsTiles
header.jsp Struts 2 Example - Tiles
footer.jsp www.cotiinformatica.com.br
menu.jsp
www.cotiinformatica.com.br
15
Apostila Struts2
Aula
02
StrutsTiles
Home Cadastrar Consultar
index.jsp Struts 2 Projeto - Template - Struts Tilles Entrar no Sistema
www.cotiinformatica.com.br
16
Apostila Struts2
Aula
02
StrutsTiles
welcome.jsp Bem vindo ao Struts 2 https://struts.apache.org/
www.cotiinformatica.com.br
17
Apostila Struts2
Aula
02
StrutsTiles
Vamos analisar algumas das características do Struts 2 que o ajudaram a se tornar um framework mais amigável e produtivo ao desenvolvedor. Linguagem Java: A linguagem Java tem mais de 10 anos de vida, possuindo diversas bibliotecas disponíveis que facilitam a vida dos programadores para se concentrarem mais no seus negócios e menos na infraestrutura e características da linguagem. Com uma plataforma madura por trás, o Struts está disponível para quem trabalha com Java. Plug-ins: O Struts 2 aceita plug-ins disponibilizados por terceiros, assim o Struts não exige que o framework venha com tudo e sim apenas as funcionalidades básicas.
www.cotiinformatica.com.br
18
Apostila Struts2
Aula
02
StrutsTiles
cadastro.jsp Cadastrar Cliente Nome: Email:
www.cotiinformatica.com.br
19
Apostila Struts2
Aula
02
StrutsTiles
${msg}
www.cotiinformatica.com.br
20
Apostila Struts2
Aula
02
StrutsTiles
Cadastrando...
Cadastrado..
www.cotiinformatica.com.br
21
Apostila Struts2
Aula
02
StrutsTiles
consulta.jsp Consultar Cliente IdCliente Nome Email
www.cotiinformatica.com.br
22
Apostila Struts2
Aula
02
StrutsTiles
www.cotiinformatica.com.br
23
Apostila Struts2
Aula
02
StrutsTiles
error.jsp error page.
www.cotiinformatica.com.br
24
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
Estrutura do preojeto...
LIBS: 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 struts2-bootstrap-plugin-1.6.1.jar 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
package entity;
public class Cliente { private Integer idCliente; private String nome; private String email;
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
public Cliente() { // TODO Auto-generated constructor stub } public Cliente(Integer idCliente, String nome, String email) { super(); this.idCliente = idCliente; this.nome = nome; this.email = email; }
@Override public String toString() { return "Cliente [idCliente=" + idCliente + ", nome=" + nome + ", email=" + email + "]"; } public Integer getIdCliente() { return idCliente; } public void setIdCliente(Integer idCliente) { this.idCliente = idCliente; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
@Override public boolean equals(Object c) { return this.idCliente.equals(((Cliente)c).getIdCliente()); } }
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
package action; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.validator.annotations.EmailValidator; import com.opensymphony.xwork2.validator.annotations.RequiredStringVali dator; import com.opensymphony.xwork2.validator.annotations.ValidatorType; import entity.Cliente;
public class ClienteAction extends ActionSupport{ private Cliente cliente; private List lista; private Integer idEscolhido; public Integer getIdEscolhido() { return idEscolhido; } public void setIdEscolhido(Integer idEscolhido) { this.idEscolhido = idEscolhido; } public ClienteAction() { cliente = new Cliente(); } public Cliente getCliente() { return cliente; } public void setCliente(Cliente cliente) {
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
this.cliente = cliente;
} public List getLista() { lista = new ArrayList(); lista.add(new Cliente(10,"joao","
[email protected]")); lista.add(new Cliente(20,"maria","
[email protected]")); lista.add(new Cliente(30,"ana","
[email protected]")); return lista; } public void setLista(List lista) { this.lista = lista; } @Action(value="home", results={ @Result(name=SUCCESS ,location="sistema.jsp"), @Result(name=INPUT ,location="sistema.jsp")}) public String init(){ getLista(); return SUCCESS ; } @Action(value="gravar", results={ @Result(name=SUCCESS ,location="resposta.jsp"), @Result(name=ERROR,location="sistema.jsp")}) public String cadastrar(){ HttpServletRequest request=(HttpServletRequest) ActionContext. getContext().get(ServletActionContext. HTTP_RE QUEST ); try{ Cliente c = new Cliente(); c.setIdCliente(idEscolhido); getLista(); cliente = lista.get(lista.indexOf(c)); request.setAttribute("msg", "Cliente Escolhido: " + cliente); return SUCCESS ; }catch(Exception ex){ ex.printStackTrace(); request.setAttribute("msg", "Error :" + ex.getMessage()); } return ERROR ; } }
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
web.xml StudentEnrollmentWithStruts struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx ecuteFilter struts2 /*
index.jsp
www.cotiinformatica.com.br
5
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
Struts Annotation Entrar no Sistema
sistema.jsp
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
Struts Annotation Escolher Cliente ${msg}
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
resposta.jsp Resposta
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
03
Aula03-struts_Annotation_Bootstrap
Struts Annotation ${msg}
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
04
struts2_crud
Estrutura do projeto...
LIBS: antlr-2.7.6.jar asm-attrs.jar asm.jar c3p0-0.9.0.jar cglib-2.1.3.jar commons-beanutils-1.8.0.jar commons-codec-1.3.jar commons-collections-3.2.1.jar commons-digester-2.0.jar commons-el-1.0.jar commons-fileupload-1.0.jar commons-lang-2.1.jar commons-logging-1.1.1.jar commons-validator.jar dom4j-1.6.1.jar ejb3-persistence.jar freemarker-2.3.8.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate3.jar jakarta-oro.jar jcommon_javadoc.jar
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
04
struts2_crud
jcommon_source.jar jcommon.jar jstl.jar jta.jar log4j-1.2.15.jar mysql-connector-java-5.1.23-bin.jar ognl-2.6.11.jar oro-2.0.8.jar servlet3-api.jar standard.jar struts2-core-2.0.14.jar xwork-2.0.7.jar
package entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table;
@Entity @Table @NamedQueries({ @NamedQuery(name="Usuario.findAll",query="from Usuario"), @NamedQuery(name="Usuario.findByLogin" , query="from Usuario u where u.email =:param1 and u.senha =:param2") })
public class Usuario implements Serializable{ private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType. AUTO ) @Column
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
04
struts2_crud
private Integer idUsuario;
@Column(unique= true, length=50,nullable= false) private String email; @Column(length=50, nullable= false) private String nome; @Column( length=100, nullable= false) private String senha; @Column( length=10, nullable= false) private String perfil; public Usuario() { } public Usuario(Integer idUsuario, String email, String nome, String senha, String perfil) { this.idUsuario = idUsuario; this.email = email; this.nome = nome; this.senha = senha; this.perfil = perfil; }
@Override public String toString() { return "Usuario [idUsuario=" + idUsuario + ", email=" + email + ", nome=" + nome + ", perfil=" + perfil + "]"; } public Integer getIdUsuario() { return idUsuario; } public void setIdUsuario(Integer idUsuario) { this.idUsuario = idUsuario; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getNome() {
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
04
struts2_crud
return nome;
} public void setNome(String nome) { this.nome = nome; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public String getPerfil() { return perfil; } public void setPerfil(String perfil) { this.perfil = perfil; } public static long getSerialversionuid() { return serialVersionUID; } }
mysql_hibernate.cfg.xml org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/struts2?createDatabaseIfNotExist=tru e root
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
04
struts2_crud
coti true true update
package config; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Main { public static void main(String[] args) { Configuration cfg = new AnnotationConfiguration(). configure("config/mysql_hibernate.cfg.xml" ); new SchemaExport(cfg).create( true,true); System.out.println("Tabela Gerada com Sucesso ..." ); } }
No console... log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. drop table if exists Usuario create table Usuario ( idUsuario integer not null auto_increment, email varchar(50) not null unique, nome varchar(50) not null, perfil varchar(10) not null, senha varchar(100) not null,
www.cotiinformatica.com.br
5
Apostila Struts2
Aula
04
struts2_crud
primary key (idUsuario) ) Tabela Gerada com Sucesso ...
package type;
//Classe Estatica(Constante)
public enum PerfilUsuario { ADMINISTRADOR("adm"),USUARIO ("usu"),GUEST ("guest"); private String perfil;
PerfilUsuario(String perfil){ this.perfil = perfil; } public String getPerfil() { return perfil; }
}
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
04
struts2_crud
package control; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor;
public class ClearCacheInterceptor implements Interceptor{ private static final long serialVersionUID = 1L;
@Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletResponse response = ServletActionContext. getResponse(); System.out.println("Chegou no Intercept ------------------" ); response.setHeader("Cache-Control", "no-cache, no-store" ); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); return invocation.invoke(); } }
package control; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig;
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
04
struts2_crud
import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;
@WebFilter({"/usu/*","/adm/*"})
public class Filtro implements Filter { public Filtro() { } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req= (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; HttpSession session = req.getSession(); if (session.getAttribute("usuario")==null){ resp.sendRedirect("../index.jsp"); //va para o index.jsp return; //para } //senão dá sequencia ... chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { } }
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
04
struts2_crud
package control; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import persistence.UsuarioDao; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import entity.Usuario;
public class UsuarioAction extends ActionSupport implements ModelDriven{ private static final long serialVersionUID = 1L;
//Nome do Objeto private Usuario usuario; //Classe Usuario private List lista; HttpServletRequest request; HttpSession session; //Irei trabalhar com Sessão public UsuarioAction() { usuario = new Usuario(); //espaço no Construtor lista =new ArrayList(); //construtor }
@Override public Usuario getModel() { return usuario; } public Usuario getUsuario() { return usuario;
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
04
struts2_crud
} public void setUsuario(Usuario usuario) { this.usuario = usuario; } public static long getSerialversionuid() { return serialVersionUID; } public String listar(){ return SUCCESS; } public List getLista() { try{ lista = new UsuarioDao().findAll(); //chamada do Banco }catch(Exception ex){ } return lista; } public void setLista(List lista) { this.lista = lista; }
public String gravar(){ request = (HttpServletRequest) ActionContext. getContext().get (ServletActionContext. HTTP_REQUEST ); try{ new UsuarioDao().create( usuario); getLista(); usuario = new Usuario(); request.setAttribute("msg", "Dados Gravados"); }catch(Exception ex){ request.setAttribute("msg", "Error :" + ex.getMessage()); } return SUCCESS; }
public String logar(){ request = (HttpServletRequest) ActionContext. getContext().get (ServletActionContext. HTTP_REQUEST );
www.cotiinformatica.com.br
10
Apostila Struts2
Aula
04
struts2_crud
session = request.getSession( true); try{ Usuario resp = new UsuarioDao().findByLogin( usuario); if (resp!=null){ usuario = new Usuario(); session.setAttribute("usuario", resp); session.setAttribute("msg","Logado Com Sucesso" ); return SUCCESS; } else{ session.setAttribute("usuario", null); //limpa } request.setAttribute("msg", "Usuario NAO LOGADO" ); return INPUT ; //sistema.jsp }catch(Exception ex){ request.setAttribute("msg", "Error :" + ex.getMessage()); return ERROR; //erro.jsp } } public String logout(){ request = (HttpServletRequest) ActionContext. getContext().get(ServletActionContext. HTTP_REQUEST ); session = request.getSession( true); try{ session.setAttribute("msg", null); session.setAttribute("usuario", null); session.invalidate(); return SUCCESS; }catch(Exception ex){ request.setAttribute("msg","Error:" + ex.getMessage()); } return ERROR; } }
www.cotiinformatica.com.br
11
Apostila Struts2
Aula
04
struts2_crud
package persistence; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory;
public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { sessionFactory = new AnnotationConfiguration(). configure("config/mysql_hibernate.cfg.xml" ).buildSessionFactory( ); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError( ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; }
}
package persistence; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.jcommon.encryption.SimpleMD5; import entity.Usuario;
public class UsuarioDao { Session session; Transaction transaction; Query query; Criteria criteria;
www.cotiinformatica.com.br
12
Apostila Struts2
Aula
04
struts2_crud
private void criptografia(Usuario u){ SimpleMD5 md5 = new SimpleMD5(u.getSenha(),"cotiinformatica@gmail" ); u.setSenha(md5.toHexString()); } public void create(Usuario u){ criptografia(u); session = HibernateUtil. getSessionFactory().openSession(); transaction = session.beginTransaction(); session.save(u); transaction.commit(); session.close(); } public Usuario findByLogin(Usuario u){ criptografia(u); session = HibernateUtil. getSessionFactory().openSession(); query = session.getNamedQuery("Usuario.findByLogin" ); query.setString("param1", u.getEmail()); query.setString("param2", u.getSenha()); Usuario resp=(Usuario) query.uniqueResult(); session.close(); return resp; }
public List findAll(){ session = HibernateUtil. getSessionFactory().openSession(); query = session.getNamedQuery("Usuario.findAll"); List lista =query.list(); session.close(); return lista; }
}
www.cotiinformatica.com.br
13
Apostila Struts2
Aula
04
struts2_crud
struts.xml /sistema.jsp /sistema.jsp /error.jsp /consulta.jsp /usu/logado.jsp /sistema.jsp /error.jsp /sistema.jsp /usu/logado.jsp /sistema.jsp /error.jsp
web.xml struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 30 sistema.jsp
www.cotiinformatica.com.br
15
Apostila Struts2
Aula
04
struts2_crud
index.jsp Bem Vindo ao Sistema Struts2 Entrar No Sistema
O Struts 2 foi inicialmente distribuído em Janeiro de 2001, obtendo um sucesso incrível entre os desenvolvedores Java. O Struts na sua versão inicial oferecia um padrão MVC (Model-View-Controller ou Modelo-Visão-Controlador) para desenvolvimento Java Web. O Struts facilitava bastante o gerenciamento, a reutilização e a manutenção do código.
www.cotiinformatica.com.br
16
Apostila Struts2
Aula
04
struts2_crud
Com o decorrer dos anos, o desenvolvimento com Struts foi decaindo bastante, muito em função da quantidade de código exigido para que o desenvolvedor possa implementar as facilidades necessárias de um aplicativo web, portanto, uma nova proposta para uma nova versão do Struts foi sugerida.
sistema.jsp
www.cotiinformatica.com.br
17
Apostila Struts2
Aula
04
struts2_crud
Cadastro de Usuário em Struts2 Home Consultar os Dados Cadastro Logar
a-z]{3,35}"
id="email" Email" control" />
id="senha"
Nome :
title="Entre com o Padrao no Senha" class="form-
Email :
id="senha2" Senha" control" />
Senha : Java WebDeveloper www.cotiinformatica.com.br ${msg}
www.cotiinformatica.com.br
19
Apostila Struts2
Aula
04
struts2_crud
Cadastrando...
www.cotiinformatica.com.br
20
Apostila Struts2
Aula
04
struts2_crud
Cadastrado...
Aba de Logar...
www.cotiinformatica.com.br
21
Apostila Struts2
Aula
04
struts2_crud
Logando...
Logado...
www.cotiinformatica.com.br
22
Apostila Struts2
Aula
04
struts2_crud
error.jsp > > > > >Página de Erro do Sistema Struts2 Sistema >${msg}
www.cotiinformatica.com.br
23
Apostila Struts2
Aula
04
struts2_crud
consulta.jsp Consulta Struts Usuários Home
www.cotiinformatica.com.br
24
Apostila Struts2
Aula
04
struts2_crud
Consulta Nome Email Perfil Java WebDeveloper www.cotiinformatica.com.br
www.cotiinformatica.com.br
25
Apostila Struts2
Aula
04
struts2_crud
www.cotiinformatica.com.br
26
Apostila Struts2
Aula
04
struts2_crud
usu/logado.jsp Página de Usuário Struts2 Logout , ${msg}
www.cotiinformatica.com.br
28
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Estrutura do Projeto...
LIBS: antlr-2.7.6.jar asm-attrs.jar asm.jar c3p0-0.9.0.jar cglib-2.1.3.jar commons-beanutils-1.7.0.jar commons-codec-1.3.jar commons-collections-3.1.jar commons-digester-1.6.jar commons-el-1.0.jar commons-fileupload-1.0.jar commons-lang-2.1.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar ejb3-persistence.jar freemarker-2.3.8.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate3.jar hsqldb.jar jstl-1.1.0.jar jta.jar log4j-1.2.15.jar mysql-connector-java-5.1.23-bin.jar ognl-2.6.11.jar
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
oro-2.0.8.jar servlet3-api.jar standard.jar struts2-core-2.0.11.jar xwork-2.0.4.jar
package entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;
@Entity
public class Cliente { @Id @GeneratedValue(strategy = GenerationType. AUTO ) private Integer idCliente; @Column(length = 35) private String nome; @Column(length = 1, columnDefinition = "enum('m','f')") private String sexo; public Cliente() {
} public Cliente(Integer idCliente, String nome, String sexo)
{ this.idCliente = idCliente; this.nome = nome; this.sexo = sexo;
} public Integer getIdCliente() { return idCliente;
}
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
public void setIdCliente(Integer idCliente) { this.idCliente = idCliente;
} public String getNome() { return nome;
} public void setNome(String nome) { this.nome = nome;
} public String getSexo() { return sexo;
} public void setSexo(String sexo) { this.sexo = sexo;
} }
mysql_hibernate.cfg.xml org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/stru ts2?createDatabaseIfNotExist=true root 1234 true
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
true true package config; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Main { public static void main(String[] args) { Configuration cfg = new
AnnotationConfiguration().configure("config/mysql_hibernate.cfg. xml"); new SchemaExport(cfg).create(true,true); System.out.println("Tabela Cliente gerada"); } }
No console... log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). log4j:WARN Please initialize the log4j system properly. drop table if exists Cliente create table Cliente ( idCliente integer not null auto_increment, nome varchar(35), sexo enum('m','f'), primary key (idCliente) ) Tabela Cliente gerada
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
package persistence;
import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory;
public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { sessionFactory = new
AnnotationConfiguration().configure("config/mysql_hibernate.cfg. xml").buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } }
www.cotiinformatica.com.br
5
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
public static SessionFactory getSessionFactory() { return sessionFactory;
} } package persistence; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import entity.Cliente;
public class ClienteDao { Session session; Transaction transaction; Criteria criteria; Query query; public void create(Cliente c) throws Exception { session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction(); session.save(c); transaction.commit(); session.close(); } public void update(Cliente c) throws Exception { session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction(); session.update(c); transaction.commit(); session.close(); } public void delete(Cliente c) throws Exception { session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction(); session.delete(c);
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
transaction.commit(); session.close(); } public Cliente findByIde(Integer code) throws Exception{ session = HibernateUtil.getSessionFactory().openSession(); Cliente resp = (Cliente)session.get(Cliente.class, code);
session.close(); return resp; } public List findAll() { session = HibernateUtil.getSessionFactory().openSession(); criteria = session.createCriteria(Cliente.class);
List lista = criteria.list(); session.close(); return lista; } } package control; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import persistence.ClienteDao; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import entity.Cliente;
public class ClienteAction extends
ActionSupport { private static final long serialVersionUID = 1L; private Cliente cliente; private String id; private List clientes; public ClienteAction() { cliente = new Cliente();
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
clientes = new ArrayList(); } public Cliente getCliente() { return cliente;
} public void setCliente(Cliente cliente) { this.cliente = cliente;
} public List getClientes() { try { clientes = new ClienteDao().findAll(); } catch (Exception e) {
e.printStackTrace(); } return clientes;
} public void setClientes(List clientes) { this.clientes = clientes;
} public String getId() { return id;
} public void setId(String id) { this.id = id;
} public static long getSerialversionuid() { return serialVersionUID;
} public String cadastrarCliente() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext. HTTP_REQUEST ); try { new ClienteDao().create(cliente); request.setAttribute("msg", "Dados Gravados com Sucesso!"); } catch (Exception e) { request.setAttribute("msg", "Error: " + e.getMessage()); e.printStackTrace(); return ERROR; } return SUCCESS; }
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
public String deletarCliente() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext. HTTP_REQUEST ); try { Integer idCliente = new Integer(id); cliente = new ClienteDao().findByIde(idCliente); new ClienteDao().delete(cliente); request.setAttribute("msg", "Cliente Deletado com Sucesso!"); } catch (Exception e) { request.setAttribute("msg", "Error: " + e.getMessage()); return ERROR; } return SUCCESS; } public String listarClientes() { return SUCCESS;
} }
struts.xml /sistema.jsp /error.jsp /consulta.jsp /error.jsp
www.cotiinformatica.com.br
9
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
/consulta.jsp
web.xml
struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 30 index.jsp
www.cotiinformatica.com.br
10
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
index.jsp Struts2 Projeto STRUTS 2.0 Cadastrar Consultar Struts 2 / Spring MVC / JSF - MVC http://struts.apache.org/ Struts 2 Segue um padrao (XML), configuração , forma de trabalhar ... Quem comando o Projeto Todo (struts.xml) _ Faz toda a configuração que você precisa para seu projeto ... Inversão de Valores ... Quem controla a forma de seu projeto trabalhar é um arquivo .xml Struts2 Voce tem Defesa a Segurança ....
FrameWork Potente em relacao a
www.cotiinformatica.com.br
11
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Website by JavaWebDeveloper Tarde
sistema.jsp Cadastro
www.cotiinformatica.com.br
12
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Projeto STRUTS 2.0 Home Cadastrar Cliente Consultar Cliente Cadastro de Usuário Nome: Sexo: Masculino Feminino Gravar Cliente ${msg}
www.cotiinformatica.com.br
14
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Clicando em cadastrar...
Cadastrando...
www.cotiinformatica.com.br
15
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
consulta.jsp Consulta Projeto STRUTS 2.0
Home Cadastrar Cliente Consultar Cliente ${msg} Consulta de Clientes idCliente Nome Sexo
www.cotiinformatica.com.br
16
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Excluir Website by JavaWebDeveloper Tarde
www.cotiinformatica.com.br
17
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
Apagando carol...
www.cotiinformatica.com.br
18
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
error.jsp Erro body { background-image: url("img/404-10.jpg"); background-repeat: no-repeat; background-attachment: fixed ; background-size: cover; } Home ${msg}
www.cotiinformatica.com.br
19
Apostila Struts2
Aula
05
Struts Cadastrar, Modal, Consultar
www.cotiinformatica.com.br
20
Apostila Struts2
Aula
06
Struts Select Bootstrap
Estrutura do projeto...
LIBS: 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 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
www.cotiinformatica.com.br
1
Apostila Struts2
Aula
06
Struts Select Bootstrap
package entity; public class Cliente { private Integer idCliente; private String nome; private String email; public Cliente() { // TODO Auto-generated constructor stub } public Cliente(Integer idCliente, String nome, String email) { super(); this.idCliente = idCliente; this.nome = nome; this.email = email; }
@Override public String toString() { return "Cliente [idCliente=" + idCliente + ", nome=" + nome + ", email=" + email + "]"; } public Integer getIdCliente() { return idCliente; } public void setIdCliente(Integer idCliente) { this.idCliente = idCliente; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
www.cotiinformatica.com.br
2
Apostila Struts2
Aula
06
Struts Select Bootstrap
@Override public boolean equals(Object c) { return this.idCliente.equals(((Cliente)c).getIdCliente()); } }
package action; 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; import entity.Cliente;
public class ClienteAction extends ActionSupport{ private Cliente cliente; private List lista; private Integer idEscolhido; public Integer getIdEscolhido() { return idEscolhido; } public void setIdEscolhido(Integer idEscolhido) { this.idEscolhido = idEscolhido; } public ClienteAction() { cliente = new Cliente(); } public Cliente getCliente() { return cliente; } public void setCliente(Cliente cliente) { this.cliente = cliente; }
www.cotiinformatica.com.br
3
Apostila Struts2
Aula
06
Struts Select Bootstrap
public List getLista() { lista = new ArrayList(); lista.add(new Cliente(10,"joao","
[email protected]")); lista.add(new Cliente(20,"maria","
[email protected]")); lista.add(new Cliente(30,"ana","
[email protected]")); return lista; } public void setLista(List lista) { this.lista = lista; } public String init(){ getLista(); return SUCCESS ; } public String enviar(){ HttpServletRequest request=(HttpServletRequest) ActionContext. getContext().get(ServletActionContext. HTTP_RE QUEST ); try{ Cliente c = new Cliente(); c.setIdCliente(idEscolhido); getLista(); cliente = lista.get(lista.indexOf(c)); request.setAttribute("msg", "Cliente Escolhido: " + cliente); return SUCCESS ; }catch(Exception ex){ ex.printStackTrace(); request.setAttribute("msg", "Error :" + ex.getMessage()); } return ERROR; } }
struts.xml
www.cotiinformatica.com.br
4
Apostila Struts2
Aula
06
Struts Select Bootstrap
/sistema.jsp /resposta.jsp /sistema.jsp
web.xml struts2_select_bootstrap struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx ecuteFilter struts2 /*
www.cotiinformatica.com.br
5
Apostila Struts2
Aula
06
Struts Select Bootstrap
index.jsp Index Sistema Struts2 Entrar no Sistema
www.cotiinformatica.com.br
6
Apostila Struts2
Aula
06
Struts Select Bootstrap
sistema.jsp Escolher Cliente
www.cotiinformatica.com.br
7
Apostila Struts2
Aula
06
Struts Select Bootstrap
${msg}
www.cotiinformatica.com.br
8
Apostila Struts2
Aula
06
Struts Select Bootstrap
Escolhendo o cliente...
resposta.jsp Resposta
www.cotiinformatica.com.br
9