Академический Документы
Профессиональный Документы
Культура Документы
Checkbox 01
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.
www.cotiinformatica.com.br 1
Apostila Struts2 Aula
Checkbox 01
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.
www.cotiinformatica.com.br 2
Apostila Struts2 Aula
Checkbox 01
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
Checkbox 01
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
Checkbox 01
import entity.Produto;
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
Checkbox 01
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>
www.cotiinformatica.com.br 6
Apostila Struts2 Aula
Checkbox 01
<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>
www.cotiinformatica.com.br 7
Apostila Struts2 Aula
Checkbox 01
Clicar em Project Faces -> Desmarcar Dynamic Web Module clicando
com o botão direito -> Unlock
www.cotiinformatica.com.br 8
Apostila Struts2 Aula
Checkbox 01
Marcar novamente -> Futher Configuration -> clicar em Generate
web.xml -> ok -> Apply -> OK
web.xml
<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
Checkbox 01
<filter-name>struts2</filter-name>
<filter-
class>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>
<!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>
www.cotiinformatica.com.br 10
Apostila Struts2 Aula
Checkbox 01
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
Checkbox 01
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>
<div class="well">
<h1>Struts 2 com CheckBox </h1>
</div>
</s:form>
</div>
</div>
</body>
www.cotiinformatica.com.br 12
Apostila Struts2 Aula
Checkbox 01
</html>
resposta.jsp
<%@ page language="java" contentType="text/html; charset=ISO-
8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-
8859-1">
<title>Resposta</title>
www.cotiinformatica.com.br 13
Apostila Struts2 Aula
Checkbox 01
<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>
www.cotiinformatica.com.br 14
Apostila Struts2 Aula
StrutsTiles 02
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
StrutsTiles 02
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
StrutsTiles 02
@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() {
}
@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
StrutsTiles 02
public static long getSerialversionuid() {
return serialVersionUID;
}
}
mysql_hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate
Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-
3.0.dtd">
<hibernate-configuration >
<session-factory>
<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </pro
perty>
<property
name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </
property>
<property
name="hibernate.connection.url">jdbc:mysql://localhost:3306/bd_t
iles?createDatabaseIfNotExist=true </property>
<property
name="hibernate.connection.username">root</property>
<property
name="hibernate.connection.password">coti</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="entity.Cliente"/>
</session-factory>
</hibernate-configuration >
package config;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
www.cotiinformatica.com.br 4
Apostila Struts2 Aula
StrutsTiles 02
public class Main {
No console...
log4j:WARN No appenders could be found for logger
(org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
www.cotiinformatica.com.br 5
Apostila Struts2 Aula
StrutsTiles 02
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
StrutsTiles 02
sessionFactory =
configuration.buildSessionFactory( builder.build());
} catch (HibernateException ex) {
System.err.println("Initial SessionFactory creation
failed." + ex);
throw new ExceptionInInitializerError( ex);
}
}
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;
www.cotiinformatica.com.br 7
Apostila Struts2 Aula
StrutsTiles 02
transaction.commit();
session.close();
}
public List<Cliente> findAll(){
session = HibernateUtil. getSessionFactory().openSession();
List<Cliente> resp =
session.getNamedQuery("Cliente.findAll").list();
session.close();
return resp;
}
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;
private void init(){
request = (HttpServletRequest)
www.cotiinformatica.com.br 8
Apostila Struts2 Aula
StrutsTiles 02
ActionContext. getContext().get(ServletActionContext. HTTP_RE
QUEST );
}
public List<Cliente> getLista() {
lista = new ClienteDao().findAll();
return lista;
}
public void setLista(List<Cliente> 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
StrutsTiles 02
request.setAttribute("msg", "Error :" +
ex.getMessage());
return ERROR;
}
}
}
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.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" />
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
www.cotiinformatica.com.br 10
Apostila Struts2 Aula
StrutsTiles 02
<result name="error"
type="tiles">/error.tiles</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<listener>
<listener-
class>org.apache.struts2.tiles.StrutsTilesListener </listener-
class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<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>
www.cotiinformatica.com.br 11
Apostila Struts2 Aula
StrutsTiles 02
</filter-mapping>
</filter-mapping >
</web-app
</web-app>>
tiles.xml
<?xml version
<?xml version=="1.0" encoding
encoding=="UTF-8" ?>
<!DOCTYPE
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration
2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd" >
<tiles-definitions
tiles-definitions>>
<definition name
name=
="baseLayout" template
template=="/BaseLayout.jsp">
<put-attribute name
name=
="title" value
value=="" />
<put-attribute name
name=
="header" value
value=="/Header.jsp" />
<put-attribute name
name=
="menu" value
value=="/Menu.jsp" />
<put-attribute name
name=
="body" value
value=="" />
<put-attribute name
name=
="footer" value
value=="/Footer.jsp" />
</definition
</definition>>
<definition name
name=
="home" extends
extends=="baseLayout">
<put-attribute name
name=
="title" value
value=
="Welcome page" />
<put-attribute name
name=
="body" value
value=
="/Welcome.jsp" />
</definition
</definition>>
<definition name
name=
="/error.tiles" extends
extends=="baseLayout">
<put-attribute name
name=
="title" value
value=="Error page" />
<put-attribute name
name=
="body" value
value=="/Error.jsp" />
</definition
</definition>>
<definition name
name=
="cadastro" extends
extends=
="baseLayout">
<put-attribute name
name=="title" value
value=="Pagina de
Cadastro" />
<put-attribute name
name=="body" value
value=="/cadastro.jsp" />
</definition
</definition>>
<definition name
name=
="consulta" extends
extends=
="baseLayout">
<put-attribute name
name=="title" value
value=="Pagina de
Consulta" />
<put-attribute name
name=="body" value
value=="/consulta.jsp" />
</definition
</definition>>
</tiles-definitions
</tiles-definitions>>
www.cotiinformatica.com.br 12
Apostila Struts2 Aula
StrutsTiles 02
style.css
@CHARSET "ISO-8859-1";
#header {
background-position:
background-position :50% 0;
50% 0
background-repeat:
background-repeat :repeat no-repeat;
}
#wrap {
margin-bottom:
margin-bottom :0;
margin-left:
margin-left :auto;
margin-right:
margin-right :auto;
margin-top:
margin-top :0;
overflow-x:
overflow-x :hidden;
overflow-y:
overflow-y :hidden;
padding-left:
padding-left :10px
;
padding-right:
padding-right :10px
;
position:
position :relative;
width:
width :980px
;
min-height:
min-height : 400px
;
#content {
display:
display :inline;
float:
float :left;
font-size:
font-size :100%
;
line-height:
line-height :1.6em;
margin:
margin :15px
;
padding:
padding :5px
;
text-align:
text-align :left;
width:
width :580px
;
min-height:
min-height : 400px
;
}
#sidebar {
display:
display :inline;
float:
float :left;
margin:
margin :15px
;
padding:
padding :5px
;
width:
width :300px
;
}
www.cotiinformatica.com.br 13
Apostila Struts2 Aula
StrutsTiles 02
#footer {
background-position:
background-position :50% ;
50% 100%
100%
background-repeat:
background-repeat :repeat no-repeat;
clear:
clear :both;
height:
height :60px
;
margin-bottom:
margin-bottom :0;
margin-left:
margin-left :auto;
margin-right:
margin-right :auto;
margin-top:
margin-top :0;
padding-bottom:
padding-bottom :10px
;
padding-top:
padding-top :10px
;
text-align:
text-align :center;
}
baseLayout.jsp
<%@ taglib uri
uri=
="http://tiles.apache.org/tags-tiles"
prefix=
prefix ="tiles"%>
<!DOCTYPE HTML>
<!DOCTYPE
<html
html>>
<head
head>>
<meta http-equiv
http-equiv=
="Content-Type" content
content=
="text/html; charset=UTF-
8">
<title
title><
><tiles:insertAttribute
tiles:insertAttribute name
name=
="title" ignore
ignore=="true"
/></title
/></ title>
>
<link rel
rel=
="stylesheet" type
type=="text/css" media
media=="all"
href=
href ="style.css" />
</head
</head>>
<body id=
id="home">
<div id
id=="header">
<tiles:insertAttribute name
name=="header" />
</div
</div>
>
<div id=
id="wrap">
<div id
id=="content">
<tiles:insertAttribute name
name=="body" />
</div
</div>
>
www.cotiinformatica.com.br 14
Apostila Struts2 Aula
StrutsTiles 02
<div id="sidebar">
<tiles:insertAttribute name="menu" />
</div>
</div>
<div id="footer">
<tiles:insertAttribute name="footer" />
</div>
</body>
</html>
header.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<div class="container">
<h1 class="well">Struts 2 Example - Tiles </h1>
</div>
footer.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<div class="container">
<h4 class="well">
<a
href="www.cotiinformatica.com.br">www.cotiinformatica.com.br </a>
</h4>
</div>
menu.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
www.cotiinformatica.com.br 15
Apostila Struts2 Aula
StrutsTiles 02
index.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
<script type="text/javascript"
src="bootstrap/js/jquery.js"></script>
<script type="text/javascript"
src="bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="well">
<h2>Projeto - Template - Struts Tilles </h2>
<s:actionerror />
<s:a href="home.action">Entrar no Sistema</s:a>
</div>
</div>
</body>
</html>
www.cotiinformatica.com.br 16
Apostila Struts2 Aula
StrutsTiles 02
welcome.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<%@taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css" />
<script type="text/javascript"
src="bootstrap/js/jquery.js"></script>
<script type="text/javascript"
src="bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div class="col-sm-12">
<div class="well">
Bem vindo ao Struts 2
<a
href="https://struts.apache.org/">https://struts.apache.org/ </a>
<br>
www.cotiinformatica.com.br 17
Apostila Struts2 Aula
StrutsTiles 02
</html>
www.cotiinformatica.com.br 18
Apostila Struts2 Aula
StrutsTiles 02
cadastro.jsp
<!DOCTYPE html>
<html>
<head>
<%@ taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
<script type="text/javascript"
src="bootstrap/js/jquery.js"></script>
<script type="text/javascript"
src="bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div class="jumbotron">
<ul class="nav nav-tabs">
<li><a href="#">Cadastrar Cliente</a>
</li>
</ul>
<p/>
<div class="row">
<s:form action="cliente.gravar" cssClass="form1">
<div class="col-sm-10">
<label for="nome">Nome:</label>
<input type="text" id="nome" name="cliente.nome"
class="form-control" />
</div>
<div class="col-sm-10">
<label for="Email">Email:</label>
<input type="text" id="email" name="cliente.email"
class="form-control" />
</div>
<div class="col-sm-10">
<br/>
<input type="submit" value="Cadastrar Cliente"
class="btn btn-primary" />
</div>
<p/>
<div class="col-sm-10">
www.cotiinformatica.com.br 19
Apostila Struts2 Aula
StrutsTiles 02
${msg}
</div>
</s:form>
</div>
</div>
</body>
</html>
www.cotiinformatica.com.br 20
Apostila Struts2 Aula
StrutsTiles 02
Cadastrando...
Cadastrado..
www.cotiinformatica.com.br 21
Apostila Struts2 Aula
StrutsTiles 02
consulta.jsp
<%@ page language="java" contentType="text/html; charset=ISO-
8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html >
<html>
<head>
<%@taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css" />
<script type="text/javascript"
src="bootstrap/js/jquery.js"></script>
<script type="text/javascript"
src="bootstrap/js/bootstrap.js"></script>
</head>
<body>
<div>
<ul class="nav nav-tabs">
<li class="active"><a href="#">Consultar
Cliente</a></li>
</ul>
<div class="col-sm-12">
<table class="table table-hover">
<thead>
<tr>
<th>IdCliente</th>
<th>Nome</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<s:iterator value="lista">
<tr>
<td><s:property
value="idCliente" /></td>
<td><s:property
value="nome" /></td>
www.cotiinformatica.com.br 22
Apostila Struts2 Aula
StrutsTiles 02
<td><s:property
value="email" /></td>
</tr>
</s:iterator>
</tbody>
</table>
</div>
</div>
</body>
www.cotiinformatica.com.br 23
Apostila Struts2 Aula
StrutsTiles 02
error.jsp
error page.
www.cotiinformatica.com.br 24
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
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
Aula03-struts_Annotation_Bootstrap 03
public Cliente() {
// TODO Auto-generated constructor stub
}
@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
Aula03-struts_Annotation_Bootstrap 03
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 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
Aula03-struts_Annotation_Bootstrap 03
this.cliente = cliente;
}
public List<Cliente> getLista() {
lista = new ArrayList<Cliente>();
lista.add(new Cliente(10,"joao","joao@gmail.com"));
lista.add(new Cliente(20,"maria","maria@gmail.com"));
lista.add(new Cliente(30,"ana","ana@gmail.com"));
return lista;
}
public void setLista(List<Cliente> 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", "<b>Cliente
Escolhido: </b>" + cliente);
return SUCCESS ;
}catch(Exception ex){
ex.printStackTrace();
request.setAttribute("msg", "Error :" + ex.getMessage());
}
return ERROR ;
}
}
www.cotiinformatica.com.br 4
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
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
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>StudentEnrollmentWithStruts </display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-
class>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>
index.jsp
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="css/bootstrap.css" >
<script type="text/javascript" src="js/jquery-
1.10.2.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="well">
www.cotiinformatica.com.br 5
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
<h2>Struts Annotation</h2>
</div>
<a href="home.action">Entrar no Sistema <span
class="glyphicon glyphicon-log-in"></span> </a>
</div>
</body>
</html>
sistema.jsp
<!DOCTYPE html>
<html>
<head>
<%@ taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="css/bootstrap.css" >
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
</head>
<body>
<div class="container">
www.cotiinformatica.com.br 6
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
<div class="well">
<h2>Struts Annotation</h2>
</div>
<div class="col-sm-10">
<br />
<s:submit value="Enviar Dados" cssClass="btn btn-primary" />
</div>
</s:form>
<br /> ${msg}
</div>
</div>
</div>
</div>
</div>
</body>
</html>
www.cotiinformatica.com.br 7
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
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="css/bootstrap.css" >
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="well">
www.cotiinformatica.com.br 8
Apostila Struts2 Aula
Aula03-struts_Annotation_Bootstrap 03
<h2>Struts Annotation</h2>
</div>
${msg}
</div>
</body>
</html>
www.cotiinformatica.com.br 9
Apostila Struts2 Aula
struts2_crud 04
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
struts2_crud 04
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
struts2_crud 04
private Integer idUsuario;
public Usuario() {
}
@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
struts2_crud 04
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate
Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-
3.0.dtd">
<hibernate-configuration >
<session-factory>
<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </pro
perty>
<property
name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </
property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/struts2?createDatabaseIfNotExist=tru
e</property>
<property
name="hibernate.connection.username">root</property>
www.cotiinformatica.com.br 4
Apostila Struts2 Aula
struts2_crud 04
<property
name="hibernate.connection.password">coti</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="entity.Usuario"/>
</session-factory>
</hibernate-configuration >
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...
www.cotiinformatica.com.br 5
Apostila Struts2 Aula
struts2_crud 04
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
struts2_crud 04
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
struts2_crud 04
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() {
}
www.cotiinformatica.com.br 8
Apostila Struts2 Aula
struts2_crud 04
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;
//Nome do Objeto
private Usuario usuario; //Classe Usuario
private List <Usuario> lista;
HttpServletRequest request;
HttpSession session; //Irei trabalhar com Sessão
public UsuarioAction() {
usuario = new Usuario(); //espaço no Construtor
lista =new ArrayList<Usuario>(); //construtor
}
@Override
public Usuario getModel() {
return usuario;
}
public Usuario getUsuario() {
return usuario;
www.cotiinformatica.com.br 9
Apostila Struts2 Aula
struts2_crud 04
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public String listar(){
return SUCCESS;
}
public List<Usuario> getLista() {
try{
lista = new UsuarioDao().findAll();
//chamada do Banco
}catch(Exception ex){
}
return 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
struts2_crud 04
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
struts2_crud 04
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);
}
}
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
struts2_crud 04
private void criptografia(Usuario u){
SimpleMD5 md5 = new
SimpleMD5(u.getSenha(),"cotiinformatica@gmail" );
u.setSenha(md5.toHexString());
}
public List<Usuario> findAll(){
session = HibernateUtil. getSessionFactory().openSession();
query = session.getNamedQuery("Usuario.findAll");
List<Usuario> lista =query.list();
session.close();
return lista;
}
}
www.cotiinformatica.com.br 13
Apostila Struts2 Aula
struts2_crud 04
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="usuarioaction" extends="struts-default">
<interceptors>
<interceptor name="caching"
class="control.ClearCacheInterceptor"/>
<interceptor-stack name="cachingStack">
<interceptor-ref name="caching" />
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token"/>
</interceptor-stack>
</interceptors>
<action name="usuario.gravar"
class="control.UsuarioAction"
method="gravar">
<result name="success">/sistema.jsp</result>
<result name="input">/sistema.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="usuario.listar"
class="control.UsuarioAction"
method="listar">
<result name="success">/consulta.jsp</result>
</action>
<action name="usuario.logar"
class="control.UsuarioAction"
method="logar">
<interceptor-ref name="cachingStack"/>
<result name="success">/usu/logado.jsp</result>
<result name="input">/sistema.jsp</result>
<result name="error">/error.jsp</result>
<result name="invalid.token">/sistema.jsp</result>
</action>
<action name="usuario.logout"
www.cotiinformatica.com.br 14
Apostila Struts2 Aula
struts2_crud 04
class="control.UsuarioAction"
method="logout">
<result name="input">/usu/logado.jsp</result>
<result name="success">/sistema.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<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>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>sistema.jsp</welcome-file>
</welcome-file-list>
</web-app>
www.cotiinformatica.com.br 15
Apostila Struts2 Aula
struts2_crud 04
index.jsp
<!doctype html>
<html>
<body>
<div class="container">
<div class="well">
<h2>Bem Vindo ao Sistema Struts2 </h2>
<a href="sistema.jsp" class="btn btn-
primary">Entrar No Sistema <span class="glyphicon glyphicon-log-
in"></span></a>
</div>
www.cotiinformatica.com.br 16
Apostila Struts2 Aula
struts2_crud 04
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. </p>
</div>
</div>
</div>
</body>
</html>
sistema.jsp
<!DOCTYPE html>
<html>
<head>
<%@ taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="css/bootstrap.css">
www.cotiinformatica.com.br 17
Apostila Struts2 Aula
struts2_crud 04
<script type="text/javascript" src="js/jquery-
1.10.2.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="well">
<h2>Cadastro de Usuário em Struts2 </h2>
<s:a href="usuario.home.action" cssClass="btn btn-success">Home
<span class="glyphicon glyphicon-home"></span> </s:a>
<s:a href="usuario.listar.action" cssClass="btn btn-
warning">Consultar os Dados
<span class="glyphicon glyphicon-search"></span></s:a>
</div><!-- FECHA WELL -->
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<s:form method="post" action="usuario.gravar">
<br />
<input type="hidden" name="usuario.perfil" value="usu">
www.cotiinformatica.com.br 18
Apostila Struts2 Aula
struts2_crud 04
Senha" title="Entre com o Padrao no Senha" class="form-
control" />
<br />
<input type="submit" value="Cadastrar Usuario"
class="btn btn-primary" />
</s:form>
</div><!-- FECHA DIV HOME -->
${msg}
</div><!-- FECHA COL -->
</div> <!-- FECHA CONTAINER -->
</body>
</html>
www.cotiinformatica.com.br 19
Apostila Struts2 Aula
struts2_crud 04
Cadastrando...
www.cotiinformatica.com.br 20
Apostila Struts2 Aula
struts2_crud 04
Cadastrado...
Aba de Logar...
www.cotiinformatica.com.br 21
Apostila Struts2 Aula
struts2_crud 04
Logando...
Logado...
www.cotiinformatica.com.br 22
Apostila Struts2 Aula
struts2_crud 04
error.jsp
<!doctype html>
<!doctype
<html
html>>
<head
head>>
<link rel
rel=
="stylesheet" href
href=="css/bootstrap.css">
<script type
type=
="text/javascript" src
src=
="js/jquery-
1.10.2.js"></
></script
script>>
<script type
type=
="text/javascript" src
src=
="js/bootstrap.js"></
></script
script>>
</head
</head>>
<body
body>>
<div class=
class="container">
<div class
class=="well">
<h2
h2>
>Página de Erro do Sistema Struts2 </
</h2
h2>
>
<a href
href=="sistema.jsp" class
class=="btn btn-primary">Sistema
<span class
class=
="glyphicon glyphicon-log-in"></
></span
span></
></a
a>
</div
</div>
><!-- FECHA WELL -->
<div class=
class="col-sm-8 col-sm-offset-2">
<div
div>
>${msg}</
${msg}</div
div>
>
</div
</div>
><!-- FECHA COL -->
</div
</div>
><!-- FECHA CONTAINER -->
</body>
</body >
</html
</html>>
www.cotiinformatica.com.br 23
Apostila Struts2 Aula
struts2_crud 04
consulta.jsp
<!DOCTYPE html>
<html>
<head>
<%@ taglib prefix="s" uri="/struts-tags"%>
<link rel="stylesheet" href="css/bootstrap.css">
<script type="text/javascript" src="js/jquery-
1.10.2.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
</head>
<body>
<div class="container">
<div class="well">
<h2>Consulta Struts Usuários </h2>
<s:a href="usuario.home.action" cssClass="btn btn-success">Home
<span class="glyphicon glyphicon-home"></span></s:a>
</div><!-- FECHA WELL -->
www.cotiinformatica.com.br 24
Apostila Struts2 Aula
struts2_crud 04
<div class="panel-heading">
<div class="panel-title">Consulta</div>
</div><!-- FECHA PANEL HEADING -->
<div class="panel-body">
<table class="table table-hover">
<tr>
<td>Nome</td>
<td>Email</td>
<td>Perfil</td>
</tr>
<s:iterator value="lista">
<tr>
<td><s:property value="nome" /></td>
<td><s:property value="email" /></td>
<td><s:property value="perfil" /></td>
</tr>
</s:iterator>
</table>
</body>
</html>
www.cotiinformatica.com.br 25
Apostila Struts2 Aula
struts2_crud 04
www.cotiinformatica.com.br 26
Apostila Struts2 Aula
struts2_crud 04
usu/logado.jsp
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="must-revalidate">
<%
response.setHeader( "Cache-Control", "no-cache");
response.setHeader( "Cache-Control", "no-store");
response.setDateHeader( "Expires", -1);
response.setHeader( "Pragma", "no-cache");
%>
<body>
<div class="container">
<div class="well">
<h3>Página de Usuário Struts2 </h3>
<s:a href="usuario.logout.action" cssClass="btn
btn-danger">Logout <span class="glyphicon glyphicon-log-
out"></span> </s:a>
</div>
<!-- FECHA WELL -->
<%
try {
if (session.getAttribute( "usuario") != null) {
Usuario resp = (Usuario) session.getAttribute( "usuario");
//Imprime o Nome, ScriptLet ...
out.print(resp.getNome());
}
www.cotiinformatica.com.br 27
Apostila Struts2 Aula
struts2_crud 04
} catch (Exception ex) {
response.sendRedirect( "../index.jsp");
}
%>
, ${msg}
</div>
<!-- FECHA CONTAINER -->
</body>
</html>
www.cotiinformatica.com.br 28
Apostila Struts2 Aula
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
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;
public Cliente() {
public Integer getIdCliente() {
return idCliente;
}
www.cotiinformatica.com.br 2
Apostila Struts2 Aula
mysql_hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate
Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-
3.0.dtd">
<hibernate-configuration>
<session-factory>
<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</pro
perty>
<property
name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</
property>
<property
name="hibernate.connection.url">jdbc:mysql://localhost:3306/stru
ts2?createDatabaseIfNotExist=true</property>
<property
name="hibernate.connection.username">root</property>
<property
name="hibernate.connection.password">1234</property>
<property name="hibernate.show_sql">true</property>
www.cotiinformatica.com.br 3
Apostila Struts2 Aula
<mapping class="entity.Cliente"/>
</session-factory>
</hibernate-configuration>
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.
www.cotiinformatica.com.br 4
Apostila Struts2 Aula
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
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;
www.cotiinformatica.com.br 6
Apostila Struts2 Aula
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;
private Cliente cliente;
private String id;
private List<Cliente> clientes;
public ClienteAction() {
cliente = new Cliente();
www.cotiinformatica.com.br 7
Apostila Struts2 Aula
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
public String listarClientes() {
return SUCCESS;
}
}
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="clienteaction" extends="struts-default">
<action name="cliente.cadastrar"
class="control.ClienteAction" method="cadastrarCliente">
<result name="success">/sistema.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="cliente.deletar"
class="control.ClienteAction" method="deletarCliente">
<result name="success">/consulta.jsp</result>
<result name="error">/error.jsp</result>
</action>
www.cotiinformatica.com.br 9
Apostila Struts2 Aula
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_2_5.xsd"
version="2.5">
<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>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
www.cotiinformatica.com.br 10
Apostila Struts2 Aula
</head>
<body>
<h2 class="jumbotron">Projeto STRUTS 2.0</h2>
<div class="container">
<a href="sistema.jsp" class="btn btn-success">
<span class="glyphicon glyphicon-floppy-disk"></span>
Cadastrar </a>
<div class="conteudo">
<p>
Struts2 Voce tem FrameWork Potente em relacao a
Defesa a Segurança ....
</p>
www.cotiinformatica.com.br 11
Apostila Struts2 Aula
sistema.jsp
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-
8859-1">
<title>Cadastro</title>
www.cotiinformatica.com.br 12
Apostila Struts2 Aula
</head>
<body>
<h2 class="jumbotron">Projeto STRUTS 2.0</h2>
<div class="container">
<a href="index.jsp" class="btn btn-primary"> <span
class="glyphicon glyphicon-home"></span> Home
</a>
<button class="btn btn-success" data-
toggle="modal" data-target="#janela"> Cadastrar Cliente <span
class="glyphicon glyphicon-user"></span>
</button>
<a href="cliente.listar.action" class="btn btn-
warning">
<span class="glyphicon glyphicon-search"></span> Consultar
Cliente
</a><br /> <br />
<div class="modal-header">
<h3>Cadastro de Usuário</h3>
</div>
<div class="modal-body">
<div class="form-group">
<label>Sexo:</label>
<input type="radio" name="cliente.sexo" value="m"
www.cotiinformatica.com.br 13
Apostila Struts2 Aula
</s:form>
</div><!-- FECHA DIV MODAL-BODY -->
</div><!-- FECHA MDOAL CONTENT -->
</div><!-- FECHA MODAL-DIALOG -->
</div><!-- FECHA MODAL FADE -->
</div><!-- FECHA CONTAINER -->
</body>
</html>
www.cotiinformatica.com.br 14
Apostila Struts2 Aula
Cadastrando...
www.cotiinformatica.com.br 15
Apostila Struts2 Aula
<s:head/></head>
<div class="container">
<h4>${msg}</h4>
www.cotiinformatica.com.br 16
Apostila Struts2 Aula
</body>
</html>
www.cotiinformatica.com.br 17
Apostila Struts2 Aula
Apagando carol...
www.cotiinformatica.com.br 18
Apostila Struts2 Aula
<style type="text/css">
body {
background-image: url("img/404-10.jpg");
background-repeat: no-repeat;
background-attachment: fixed
;
background-size: cover;
}
</style>
</head>
<body>
<div class="container">
<br/>
<a href="index.jsp" class="btn btn-primary">
<span class="glyphicon glyphicon-home"></span> Home
</a>
<h4>${msg}</h4>
</div><!-- FECHA CONTAINER -->
</body>
</html>
www.cotiinformatica.com.br 19
Apostila Struts2 Aula
www.cotiinformatica.com.br 20
Apostila Struts2 Aula
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
public class Cliente {
private Integer idCliente;
private String nome;
private String email;
public Cliente() {
// TODO Auto-generated constructor stub
}
@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
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 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
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
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration
2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
www.cotiinformatica.com.br 4
Apostila Struts2 Aula
<action name="home"
class="action.ClienteAction"
method="init">
<result name="success">/sistema.jsp</result>
</action>
<action name="cliente.enviar"
class="action.ClienteAction"
method="enviar">
<result name="success">/resposta.jsp</result>
<result name="error">/sistema.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
<display-name>struts2_select_bootstrap </display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-
class>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>
www.cotiinformatica.com.br 5
Apostila Struts2 Aula
<body>
<div class="container">
<div class="well">
<h2><center>Sistema Struts2</center></h2>
<a href="home.action" class="btn btn-primary">
<span class="glyphicon glyphicon-log-in"></span>
Entrar no Sistema</a>
</div>
</div>
</body>
</html>
www.cotiinformatica.com.br 6
Apostila Struts2 Aula
sistema.jsp
<!DOCTYPE html>
<html>
<head>
<body>
<div class="container">
<div class="col-sm-offset-1 col-sm-10">
<div class="jumbotron">
<ul class="nav nav-tabs">
<li class="active"><a
href="#">Escolher Cliente</a></li>
</ul><p />
www.cotiinformatica.com.br 7
Apostila Struts2 Aula
</html>
www.cotiinformatica.com.br 8
Apostila Struts2 Aula
resposta.jsp
<%@ page language="java" contentType="text/html; charset=ISO-
8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<body>
www.cotiinformatica.com.br 9