Certa vez tive problemas para fazer as expressões de linguagem funcionarem no JSP. Colocava Nome: ${nome}, por exemplo e aparecia este mesmo código.
Para resolver este problema é necessário adicionar:
<%@page isELIgnored="false"%>
no cabeçalho do jsp
quinta-feira, 31 de janeiro de 2008
EL não funciona na JSP
Postado por
Francisco Calaça Xavier - BLOG
às
09:40
1 comentários
quarta-feira, 30 de janeiro de 2008
Introdução à Jpa (Java Persistence API)
Neste artigo criaremos um pequeno exemplo utilizando a jpa.
A JPA (Java Persistence API) faz o mapeamento objeto-relacional, ou seja, traduz o mundo objetos do java para o mundo relacional dos bancos de dados.
Trata-se apenas de uma especificação, ou seja, a implementação ficará por conta de terceiros como:
Em nosso exemplo utilizaremos o Hibernate. Para obtê-lo é necessário fazer o download de algumas bibliotecas do site http://hibernate.org:
Ao descompactar estes arquivos observa-se uma grande quantidade de .jar's. Após fazer alguns testes notei que os imprescindíveis são:
antlr-2.7.6.jar asm.jar cglib-2.1.3.jar commons-collections-2.1.1.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate-entitymanager.jar hibernate3.jar javassist.jar jboss-archive-browsing.jar jta.jar persistence.jarInicialmente criaremos a classe contato. Observe no código abaixo a existência de algumas anotações.
@EntityDefine uma entidade. Usamos esta anotação para dizer que a classe anotada é uma entidade, portanto, será persistida no banco de dados.
@IdDefine o campo que conterá o identificador da entidade. Será a chave primaria da tabela.
@GeneratedValue(strategy=SEQUENCE, generator = "geradorPessoa") @SequenceGenerator(name="geradorPessoa", sequenceName = "gerador_pessoa")Configurações para utilizar um Sequence do banco de dados.
Classe Contato
package org.jchico.jpa;
import static javax.persistence.GenerationType.SEQUENCE;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
@Entity
public class Contato {
@Id
@GeneratedValue(strategy=SEQUENCE, generator = "geradorPessoa")
@SequenceGenerator(name="geradorPessoa", sequenceName = "gerador_pessoa")
private int codigo;
private String nome;
private String telefone;
private String endereco;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}Agora criaremos a classe TesteContatoJpa. Esta classe será responsável por persistir os contatos. Note a necessidade da existência do EntityManager. Ele é o gerenciador de entidades. Este gerenciador é capaz de persistir, listar, remover, alterar, etc as entidades.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("exemplo");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
Para fazer consultas é necessário utilizar a JPAQL:
Query query = em.createQuery("select e from Contato e");
Classe TesteContatoJpa
package org.jchico.jpa;
import java.util.List;
import java.util.Scanner;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class TesteContatoJpa {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("exemplo");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
//cria um contato e ajusta seus valores
Contato contato = new Contato();
Scanner scan = new Scanner(System.in);
System.out.print("\nDigite o nome:");
contato.setNome(scan.nextLine());
System.out.print("\nDigite o endereço:");
contato.setEndereco(scan.nextLine());
System.out.print("\nDigite o telefone:");
contato.setTelefone(scan.nextLine());
//adiciona um contato no banco
tx.begin();
em.persist(contato);
tx.commit();
//listar os contatos
Query query = em.createQuery("select e from Contato e");
List<Contato> listaContatos = query.getResultList();
for(Contato c : listaContatos){
System.out.printf("%20s %20s %20s", c.getNome(), c.getEndereco(), c.getTelefone());
}
}
}Agora veja o persistence.xml abaixo. Este arquivo deverá ficar no diretório META-INF da sua aplicação. Neste arquivo realizamos as configurações necessárias para a JPA, como o driver do banco, a url, usuario e senha.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="exemplo">
<class>org.jchico.jpa.Contato</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/exemplo"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Espero que você tenha gostado desta informação.
Postado por
Francisco Calaça Xavier - BLOG
às
13:21
3
comentários
Marcadores: jpa
segunda-feira, 28 de janeiro de 2008
Debug Remoto no eclipse
Algumas vezes é necessário resolver problemas que ocorrem somente quando a aplicação está sendo executada em um servidor. Nestes casos pode ser feito um debug remoto que consistem em iniciar o container (no caso o Tomcat) no modo debug e conectar uma IDE (no caso o Eclipse) para realizar o debug.
Preparei um video que demonstra como fazer debug remoto no eclipse.
clique aqui para ver o video
e aprenda a fazer debug remoto com eclipse
Postado por
Francisco Calaça Xavier - BLOG
às
18:33
0
comentários
Marcadores: videos
retirar a navbar do blogger
Para retirar a navbar do blobber adicione a seguinte tag:
#navbar iframe{heigth: 0px; visibility: hidden; display: none;}
Antes da tag body
Postado por
Francisco Calaça Xavier - BLOG
às
18:04
0
comentários
Alguns Lembretes Importantes para trabalhar com JSF
Lembrete 1:
Criar um novo sistema web, em Project Facets marcar a opção JavaServer Faces
Lembrete 2:
Utilizar as seguintes taglibs
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
Lembretes para adicionar suporte ao MyFaces
Lembrete 1:
Acrescentar o seguinte filtro no arquivo WEB-INF/web.xml
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<init-param>
<param-name>maxFileSize</param-name>
<param-value>20m</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
</filter-mapping>
Lembrete 2:
Acrescentar o seguinte listener no arquivo WEB-INF/web.xml
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
Lembretes para adicionar suporte ao RichFaces
Lembrete 1:
Acrescentar o seguinte filtro no arquivo WEB-INF/web.xml
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
Lembretes para trabalhar com facelets
Lembrete 1:
Acrescentar os seguintes parametros no WEB-INF/web.xml
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<!-- Special Debug Output for Development -->
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<!-- Optional JSF-RI Parameters to Help Debug -->
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
</context-param>
Lembrete 2:
O arquivo de template:
<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:t="http://myfaces.apache.org/tomahawk">
<head>
</head>
<body leftmargin="0" bottommargin="0" topmargin="0" rightmargin="0">
<ui:insert name="corpo"/>
<ui:include src="Rodape.jspx"/>
</body>
</html>
Lembrete 3:
As páginas:
<?xml version="1.0" encoding="iso-8859-1"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition template="template.jspx">
<ui:define name="corpo">
<h:form id="formulario">
</h:form>
</ui:define>
</ui:composition>
</jsp:root>
Lembrete 4:
Para configurar facelets com RichFaces é necessário adicionar:
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
Postado por
Francisco Calaça Xavier - BLOG
às
16:52
0
comentários
Marcadores: jsf
quinta-feira, 3 de janeiro de 2008
Como configurar um servidor SubVersion
O Tutorial abaixo apresenta como configurar um Servidor SubVersion em um máquina com Linux Debian
Instalação
apt-get install subversion apt-get install subversion-tools apt-get install web-svnIniciar o serviço
para ligar o servidor: svnserver -d
Criar repositório
para criar um repositorio: svnadmin create /diretorio do repositorio
Configurar o repositório
crie o arquivo conf/passwd (no diretorio do repositório)
insira o seguinte:
[users] carlos=senha do carlos chico=senha do chico
No arquivo svnserver.conf descomente as seguintes linhas
[general] anon-access = read auth-access = write password-db = passwd realm = REPOSITORIO JavaCerrado.org
Postado por
Francisco Calaça Xavier - BLOG
às
08:48
0
comentários