Sempre o mesmo erro 404 com JSF?

08/11/2011

0

Pessoal por favor me ajudem!

Estou louco pra aprender JSF, mas está osso configurar o web.xml, já segui a apostila da AlgaWorks e nada, tutorias na net, tenho até um bom livro Programação Java para Web, mas não saio to puto início..

Postarei o código aqui testem a vejam se vcs conseguem:

Obs: Postei o código todo para que fique de aprendizado pra galera!

eclipse indigo 3.7
mysql query-browser
tomcat 7.0
hibernate
majorra 2.1.2
jstl 1.1.2
standard 1.1.2
primefaces 2.2.1
hibernate

TABELA

CREATE TABLE `livro` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`autor` varchar(255) DEFAULT NULL,
`avaliacao` int(11) NOT NULL,
`editora` varchar(255) DEFAULT NULL,
`isbn` varchar(255) DEFAULT NULL,
`paginas` int(11) NOT NULL,
`titulo` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;


Model

@Entity
public class Livro implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	private long id;
	private String titulo;
	private String autor;
	private int paginas;
	private String editora;
	private String isbn;
	private int avaliacao;
	
	public Livro () { }

	public Livro(long id, String titulo, String autor, int paginas,
			String editora, String isbn, int avaliacao) {
		this.id = id;
		this.titulo = titulo;
		this.autor = autor;
		this.paginas = paginas;
		this.editora = editora;
		this.isbn = isbn;
		this.avaliacao = avaliacao;
	}
      // gets and sets omitidos


Interface LivroDao

public interface LivroDao {
	
	public void save (Livro livro);
	
	public Livro getLivro (long id);
	
	public List<Livro> list();
	
	public void remove (Livro livro);
	
	public void update (Livro livro);
	
}


LivroDaoImpl
public class LivroDaoImp implements LivroDao {

	@Override
	public void save(Livro livro) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		session.save(livro);
		t.commit();

	}

	@Override
	public Livro getLivro(long id) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		return (Livro) session.load(Livro.class, id);
	}

	@Override
	public List<Livro> list() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		List lista = session.createQuery(from livro).list();
		t.commit();
		return lista;
	}

	@Override
	public void remove(Livro livro) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		session.delete(livro);
		t.commit();
	}

	@Override
	public void update(Livro livro) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		session.update(livro);
		t.commit();
	}

}


HibernateUtil

public class HibernateUtil {
	private static SessionFactory sessionFactory;
	
	private HibernateUtil () { }
	
	public static SessionFactory getSessionFactory () {
		if (sessionFactory == null) {
			try {
				AnnotationConfiguration ac = new AnnotationConfiguration();
				ac.addAnnotatedClass(Livro.class);
				sessionFactory = ac.configure().buildSessionFactory();
				
			} catch (Throwable e) {
				System.err.println(Initial Sessionfactory creation failed  + e);
				throw new ExceptionInInitializerError(e);
			}
			return sessionFactory;
		} else {
			return sessionFactory;
		}
	}
	
}


Controller

@ManagedBean
@SessionScoped
public class LivroController {
	private Livro livro;
	private DataModel listaLivros;
	
	public DataModel getListarLivros () {
		List<Livro> lista = new LivroDaoImp().list();
		listaLivros = new ListDataModel(lista);
		return listaLivros;
	}

	public Livro getLivro() {
		return livro;
	}

	public void setLivro(Livro livro) {
		this.livro = livro;
	}
	
	public String prepararAdicionarLivro() {
		livro = new Livro();
		return gerenciarLivro;
	}
	
	public String prepararAlterarLivro() {
		livro = (Livro) listaLivros.getRowData();
		return gerenciarLivro;
	}
	
	public String excluirLivro() {
		Livro livroTemp = (Livro) listaLivros.getRowData();
		LivroDao dao = new LivroDaoImp();
		dao.remove(livroTemp);
		return index;
	}
	
	public String adicionarLivro() {
		LivroDao dao = new LivroDaoImp();
		dao.save(livro);
		return index;
	}
	
	public String alteraLivro() {
		LivroDao dao = new LivroDaoImp();
		dao.update(livro);
		return index;
	}
	
}


View
index.html

<?xml version=1.0 encoding=UTF-8 ?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
      xmlns:h=http://java.sun.com/jsf/html
      xmlns:f=http://java.sun.com/jsf/core>
    <h:head>
        <title>Gerenciador de Livros</title>
    </h:head>
    <h:body>
        <h1>Gerenciador de Livros</h1>
        <h:dataTable var=livro value=#{livroController.listarLivros}>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Título/>
                </f:facet>
                <h:outputText value=#{livro.titulo} />
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Autor/>
                </f:facet>
                <h:outputText value=#{livro.autor}/>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Páginas/>
                </f:facet>
                <h:outputText value=#{livro.paginas}/>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Editora/>
                </f:facet>
                <h:outputText value=#{livro.editora}/>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Isbn/>
                </f:facet>
                <h:outputText value=#{livro.isbn}/>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Avaliação/>
                </f:facet>
                <h:outputText value=#{livro.avaliacao}/>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Alterar/>
                </f:facet>
                <h:form>
                    <h:commandButton action=#{livroController.prepararAlterarLivro} value=Alterar/>
                    </h:form>
            </h:column>
            <h:column>
                <f:facet name=header>
                    <h:outputText value=Excluir/>
                </f:facet>
                <h:form>
                    <h:commandButton action=#{livroController.excluirLivro} value=Excluir/>
                    </h:form>
            </h:column>
        </h:dataTable>
        <br/>
        <h:form>
            <h:commandLink value=Novo Livro action=#{livroController.prepararAdicionarLivro}/>
        </h:form>
    </h:body>
</html>


gerenciadorLivro.xhtml

<?xml version=1.0 encoding=UTF-8 ?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core>
<h:head>
<title>Gerenciador de Livros</title>
</h:head>
<h:body>
<h1>Gerenciador de Livros</h1>
<h:form>
Título <h:inputText value=#{livroController.livro.titulo}/><br/>
Autor: <h:inputText value=#{livroController.livro.autor}/><br/>
Paginas: <h:inputText value=#{livroController.livro.paginas}/><br/>
Editora: <h:inputText value=#{livroController.livro.editora}/><br/>
ISBN: <h:inputText value=#{livroController.livro.isbn}/><br/>
Avaliação: <h:selectOneMenu value=#{livroController.livro.avaliacao}>
<f:selectItem itemLabel=1 itemValue=1/>
<f:selectItem itemLabel=2 itemValue=2/>
<f:selectItem itemLabel=3 itemValue=3/>
<f:selectItem itemLabel=4 itemValue=4/>
<f:selectItem itemLabel=5 itemValue=5/>
</h:selectOneMenu><br/>
<h:commandButton action=#{livroController.adicionarLivro} value=Inserir Novo Livro/>
<h:commandButton action=#{livroController.alterarLivro} value=Alterar Livro/>
<br/>
<h:commandLink action=index value=Voltar/>
</h:form>
</h:body>
</html>


Web.xml

<?xml version=1.0 encoding=UTF-8?>
<web-app version=2.5 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_2_5.xsd>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Rafael Jesus

Rafael Jesus

Responder

Posts

08/11/2011

Rafael Jesus

pessoal por favor me ajudem!

estou louco pra aprender jsf, mas está osso configurar o web.xml, já segui a apostila da algaworks e nada, tutorias na net, tenho até um bom livro programação java para web, mas não saio to puto início..

postarei o código aqui testem a vejam se vcs conseguem:

obs: postei o código todo para que fique de aprendizado pra galera!

eclipse indigo 3.7
mysql query-browser
tomcat 7.0
hibernate
majorra 2.1.2
jstl 1.1.2
standard 1.1.2
primefaces 2.2.1
hibernate

tabela


create table `livro` (
`id` bigint(20) not null auto_increment,
`autor` varchar(255) default null,
`avaliacao` int(11) not null,
`editora` varchar(255) default null,
`isbn` varchar(255) default null,
`paginas` int(11) not null,
`titulo` varchar(255) default null,
primary key (`id`)
) engine=innodb auto_increment=4 default charset=latin1;


model


@entity
public class livro implements serializable {
private static final long serialversionuid = 1l;

@id
@generatedvalue
private long id;
private string titulo;
private string autor;
private int paginas;
private string editora;
private string isbn;
private int avaliacao;

public livro () { }

public livro(long id, string titulo, string autor, int paginas,
string editora, string isbn, int avaliacao) {
this.id = id;
this.titulo = titulo;
this.autor = autor;
this.paginas = paginas;
this.editora = editora;
this.isbn = isbn;
this.avaliacao = avaliacao;
}
// gets and sets omitidos


interface livrodao


public interface livrodao {

public void save (livro livro);

public livro getlivro (long id);

public list<livro> list();

public void remove (livro livro);

public void update (livro livro);

}


livrodaoimpl

public class livrodaoimp implements livrodao {

@override
public void save(livro livro) {
session session = hibernateutil.getsessionfactory().opensession();
transaction t = session.begintransaction();
session.save(livro);
t.commit();

}

@override
public livro getlivro(long id) {
session session = hibernateutil.getsessionfactory().opensession();
return (livro) session.load(livro.class, id);
}

@override
public list<livro> list() {
session session = hibernateutil.getsessionfactory().opensession();
transaction t = session.begintransaction();
list lista = session.createquery(from livro).list();
t.commit();
return lista;
}

@override
public void remove(livro livro) {
session session = hibernateutil.getsessionfactory().opensession();
transaction t = session.begintransaction();
session.delete(livro);
t.commit();
}

@override
public void update(livro livro) {
session session = hibernateutil.getsessionfactory().opensession();
transaction t = session.begintransaction();
session.update(livro);
t.commit();
}

}


hibernateutil


public class hibernateutil {
private static sessionfactory sessionfactory;

private hibernateutil () { }

public static sessionfactory getsessionfactory () {
if (sessionfactory == null) {
try {
annotationconfiguration ac = new annotationconfiguration();
ac.addannotatedclass(livro.class);
sessionfactory = ac.configure().buildsessionfactory();

} catch (throwable e) {
system.err.println(initial sessionfactory creation failed + e);
throw new exceptionininitializererror(e);
}
return sessionfactory;
} else {
return sessionfactory;
}
}

}


controller


@managedbean
@sessionscoped
public class livrocontroller {
private livro livro;
private datamodel listalivros;

public datamodel getlistarlivros () {
list<livro> lista = new livrodaoimp().list();
listalivros = new listdatamodel(lista);
return listalivros;
}

public livro getlivro() {
return livro;
}

public void setlivro(livro livro) {
this.livro = livro;
}

public string prepararadicionarlivro() {
livro = new livro();
return gerenciarlivro;
}

public string prepararalterarlivro() {
livro = (livro) listalivros.getrowdata();
return gerenciarlivro;
}

public string excluirlivro() {
livro livrotemp = (livro) listalivros.getrowdata();
livrodao dao = new livrodaoimp();
dao.remove(livrotemp);
return index;
}

public string adicionarlivro() {
livrodao dao = new livrodaoimp();
dao.save(livro);
return index;
}

public string alteralivro() {
livrodao dao = new livrodaoimp();
dao.update(livro);
return index;
}

}

aqui é index.xhtml
view
index.html


<?xml version=1.0 encoding=utf-8 ?>
<!doctype html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core>
<h:head>
<title>gerenciador de livros</title>
</h:head>
<h:body>
<h1>gerenciador de livros</h1>
<h:datatable var=livro value=#{livrocontroller.listarlivros}>
<h:column>
<f:facet name=header>
<h:outputtext value=título/>
</f:facet>
<h:outputtext value=#{livro.titulo} />
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=autor/>
</f:facet>
<h:outputtext value=#{livro.autor}/>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=páginas/>
</f:facet>
<h:outputtext value=#{livro.paginas}/>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=editora/>
</f:facet>
<h:outputtext value=#{livro.editora}/>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=isbn/>
</f:facet>
<h:outputtext value=#{livro.isbn}/>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=avaliação/>
</f:facet>
<h:outputtext value=#{livro.avaliacao}/>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=alterar/>
</f:facet>
<h:form>
<h:commandbutton action=#{livrocontroller.prepararalterarlivro} value=alterar/>
</h:form>
</h:column>
<h:column>
<f:facet name=header>
<h:outputtext value=excluir/>
</f:facet>
<h:form>
<h:commandbutton action=#{livrocontroller.excluirlivro} value=excluir/>
</h:form>
</h:column>
</h:datatable>
<br/>
<h:form>
<h:commandlink value=novo livro action=#{livrocontroller.prepararadicionarlivro}/>
</h:form>
</h:body>
</html>


gerenciadorlivro.xhtml


<?xml version=1.0 encoding=utf-8 ?>
<!doctype html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml
xmlns:h=http://java.sun.com/jsf/html
xmlns:f=http://java.sun.com/jsf/core>
<h:head>
<title>gerenciador de livros</title>
</h:head>
<h:body>
<h1>gerenciador de livros</h1>
<h:form>
título <h:inputtext value=#{livrocontroller.livro.titulo}/><br/>
autor: <h:inputtext value=#{livrocontroller.livro.autor}/><br/>
paginas: <h:inputtext value=#{livrocontroller.livro.paginas}/><br/>
editora: <h:inputtext value=#{livrocontroller.livro.editora}/><br/>
isbn: <h:inputtext value=#{livrocontroller.livro.isbn}/><br/>
avaliação: <h:selectonemenu value=#{livrocontroller.livro.avaliacao}>
<f:selectitem itemlabel=1 itemvalue=1/>
<f:selectitem itemlabel=2 itemvalue=2/>
<f:selectitem itemlabel=3 itemvalue=3/>
<f:selectitem itemlabel=4 itemvalue=4/>
<f:selectitem itemlabel=5 itemvalue=5/>
</h:selectonemenu><br/>
<h:commandbutton action=#{livrocontroller.adicionarlivro} value=inserir novo livro/>
<h:commandbutton action=#{livrocontroller.alterarlivro} value=alterar livro/>
<br/>
<h:commandlink action=index value=voltar/>
</h:form>
</h:body>
</html>


web.xml


<?xml version=1.0 encoding=utf-8?>
<web-app version=2.5 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_2_5.xsd>
<context-param>
<param-name>javax.faces.project_stage</param-name>
<param-value>development</param-value>
</context-param>
<servlet>
<servlet-name>faces servlet</servlet-name>
<servlet-class>javax.faces.webapp.facesservlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>faces servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Responder

08/11/2011

Rafael Jesus

Se quizer retirar essa ultima citação para não ficar poluido pode tirar, só queria dizer que era index.xhtml e não index.html
Responder

09/11/2011

Dyego Carmo

Está dando 404 , no console do app server aparece algo ?
Responder

09/11/2011

Rafael Jesus

Grande Diogão ta em todas..rs

Cara não aparece nada no console, absolutamente nada, o pior é que já faz um tempo que eu tenho programar com jsf e não estou conseguindo, por esse bendito erro...vc tem alguma sugestão?

Eu já estou começando a importar projeto pronto pelo Maven, pra ver o que rola, eu vi que o Web.xml do projeto que importei pelo Maven, está muito parecido com esse ai...

Sem querer mudar o assunto do tópico, man eu estava vendo um video introdução seu sobre maven, mas não sei como faço para subir a app no servidor, como eu faço???

Obrigado..
Responder

10/11/2011

Rafael Jesus

Bem na verdade aparece no console, o default de sempre quando se sobe uma aplicação, não tem nenhum erro, até pq 404 é de página não encontrada
Responder

10/11/2011

Robson Teixeira

No Seu Projeto a pagina index.html existe??? e outra todas as requisições passam pelo Faces Servlet????? se naum passar talvez ai seja o seu prob.

att
robson
Responder

18/11/2011

Dyego Carmo

Opa !

Conseguiu resolver o problema ?

Se sim , poderia fechar o chamado ?


Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar