You are on page 1of 5

Criando Projeto Web com JSF sem IDE Eclipse

Introduo
O objetivo deste documento ensin-lo a criar um projeto usando JavaServer Faces sem o uso do IDE Eclipse,
objetivando compreender completamente o funcionamento da tecnologia, como compilao das classes,
dependncias entre bibliotecas de classes utilizadas, etc. O primeiro passo criar a estrutura de diretrios abaixo em
qualquer lugar do HD. Diretrios em negrito. O projeto a ser criado far o seguinte: uma pgina inicial obtm do
usurio dois nmeros inteiros que constituem um intervalo (inicial e final). Ao clicar no boto Enviar, o aplicativo
calcular o somatrios de todos os inteiros contidos no intervalo informado. Se o intervalo informado estiver
invlido, uma mensagem de validao ser mostrada. Se algum campo for deixado em branco, uma mensagem de
validao tambm ser mostrada.
JSFsemEclipse
META-INF
MANIFEST.MF
WEB-INF
classes
beans
beanIntervalo.java
beanIntervalo.class
controles
Controle.java
Controle.class
compila.bat
util
Messages_pt.properties
lib
common-annotations.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
jsf-api.jar
jsf-impl.jar
jsf-tlds.jar
jstl.jar
standard.jar
faces-config.xml
web.xml
index.jsp
leintervalo.jsp
somatorio.jsp

Listagem dos Fontes do Projeto


beanIntervalo.java
package beans;
public class beanIntervalo {
private int numini;
private int numfim;
private int soma;
public void setNumini(int numini) {
this.numini = numini;
}
public int getNumini() {
return numini;
}

Pgina 1 de 5
E-mail professor: sandrotc.professor@gmail.com Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc

public void setNumfim(int numfim) {


this.numfim = numfim;
}
public int getNumfim() {
return numfim;
}
public void setSoma(int soma) {
this.soma = soma;
}
public int getSoma() {
return soma;
}
public void calculasoma() {
for (int i = this.numini; i <= this.numfim; i++)
this.soma += i;
}
}

Controle.java
package controles;
import beans.beanIntervalo;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
public class Controle {
private beanIntervalo beanintervalo;
public beanIntervalo getBeanintervalo() {
return beanintervalo;
}
public void setBeanintervalo(beanIntervalo beanintervalo) {
this.beanintervalo = beanintervalo;
}
public Controle(){
beanintervalo = new beanIntervalo();
}
public String validaintervalo() {
boolean sucesso = true;
FacesContext context = FacesContext.getCurrentInstance();
if ((beanintervalo.getNumini() > 0) && (beanintervalo.getNumfim() > 0)) {
if (beanintervalo.getNumini() <= beanintervalo.getNumfim()) {
beanintervalo.calculasoma();
sucesso = true;
}
else {
String msg = "Intervalo incorreto.";
FacesMessage message = new FacesMessage(msg);
context.addMessage("formulario", message);
sucesso = false;
}
}
return (sucesso ? "sucesso" : "falha");
}
}

Pgina 2 de 5
E-mail professor: sandrotc.professor@gmail.com Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc

compila.bat
@echo off
javac -classpath "..\..\WebContent\WEB-INF\lib\jsf-api.jar";"..\..\WebContent\WEB-INF\classes" %1

Messages_pt.properties
Este arquivo pode ser obtido a partir de jsf-impl.jar que fica no diretrio lib. Abra
este arquivo jar e procure no diretrio javax.faces o arquivo Messages.properties.
Extraia este arquivo do jar e renomeie-o para Messages_pt.properties e faa as
seguintes alteraes no mesmo:
A linha 38 deste arquivo possui a linha seguinte:
javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required.
Altere a linha para que a mensagem de erro seja ajustada para o portugus, assim:
javax.faces.component.UIInput.REQUIRED={0}:
obrigatrio.

Erro

de

validao:

este

campo

Para que este novo arquivo de mensagens ajustadas para o portugus seja incorporado
aplicao substituindo o arquivo Messages.properties de jsf-impl.jar, veja que a tag
application foi inserida no arquivo faces-config.xml listado a seguir.

faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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-facesconfig_1_2.xsd">
<managed-bean>
<managed-bean-name>controle</managed-bean-name>
<managed-bean-class>controles.Controle</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/leintervalo.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/somatorio.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>falha</from-outcome>
<to-view-id>/leintervalo.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<application>
<message-bundle>util.Messages</message-bundle>
</application>
</faces-config>

Pgina 3 de 5
E-mail professor: sandrotc.professor@gmail.com Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc

web.xml

Este arquivo no necessita nenhuma alterao para que a aplicao funcione, isto , nenhuma alterao especfica
para algum projeto precisa ser feita.
<?xml version="1.0"?>
<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.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>

index.jsp
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body>
<jsp:forward page="/leintervalo.jsf" />
</body>
</html>

leintervalo.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>Leitura do intervalo</title>
</head>
<body>
<f:view>
<h:form id="formulario">
Nmero inicial: <h:inputText id="numini"
value="#{controle.beanintervalo.numini}"
required="true" />

Pgina 4 de 5
E-mail professor: sandrotc.professor@gmail.com Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc

Nmero final: <h:inputText id="numfim"


value="#{controle.beanintervalo.numfim}"
required="true" />
<h:commandButton action="#{controle.validaintervalo}"
value="Enviar" id="submit"></h:commandButton>
<br />
<h:messages />
</h:form>
</f:view>
</body>
</html>

somatorio.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
<title>Somatrio dos nmeros do intervalo</title>
</head>
<body>
<f:view>
Somatrio = <h:outputText value="#{controle.beanintervalo.soma}"
style="FONT-WEIGHT: bold;"/>
</f:view>
</body>
</html>

Criando o Arquivo WAR do Projeto


No prompt-de-comando do Windows, entre no diretrio JSFsemEclipse e execute o comando:
jar cfv JSFsemEclipse.war *

Fazendo o Deploy da Aplicao no Servidor


Ative o Tomcat 6.0, abra o navegador e execute o comando na barra de endereos do
browser:
http://localhost:8080/manager/deploy?path=/JSFsemEclipse&war=file:/E:\Tomcat6/JSFsemEc
lipse/JSFsemEclipse.war
Para remover a aplicao do servidor, execute o comando seguinte:
http://localhost:8080/manager/undeploy?path=/JSFsemEclipse

Pgina 5 de 5
E-mail professor: sandrotc.professor@gmail.com Arquivo: ADS-DW Criando projeto JSF sem Eclipse.doc

You might also like