Ola pessoal , Vou mostrar como construir uma aplicação utilizando JSP, STRUS, no NetBeans 5.

5, tentarei fazer a mais “receita de bolo” possível para facilitar, vou demonstrar uma tipo de solução, como diz meu amigo “Bulinha” isso é igual Mingau 1001 maneiras de fazer :D Instalando o NetBeans - Primeiro de tudo baixe e instale o NetBeans 5.5 no site http://www.netbeans.org/ - Instale o NetBeans. Construindo uma nova Aplicação - Abra o NetBeans 5.5 - Com o NetBeans aberto vá em : Arquivo/Novo Projeto - Selecione em Categorias a pasta WEB e em Projetos a opção Aplicação Web

- Clique em Próximo - Em nome do projeto digite TesteAppWeb1 - Caso deseje altere a localização do projeto clicando em Procurar. - Em servidor selecione TomCat (5.5.17) Embutido. - Versão do Java EE selecione J2EE 1.4

- O resto pode deixar com está .

-clique em Próximo - Na tela seguinte selecione Struts 1.2.9 - Clique em Finalizar

Criando nossa index.jsp - A estrutura do projeto sera criada. Quando falo em estrutura estou me referenciando a:

- Dentro da pasta “Páginas Web” teremos duas paginas jsp’s uma como index.jsp e outra como welcomeStruts.jsp , que o NetBeans já cria automaticamente pra você. - A pagina index.jsp nos utilizaremos. Podemos excluir a pagina welcomeStruts.jsp que não utilizaremos. - Para excluir a pagina welcomeStruts.jsp Selecione a pagina com o mouse. Clique com o botão direito em cima dela. Escolha a opção “excluir” Confirme a Operação -Agora vamos construir nossa pagina index.jsp - De um duplo clique em cima dela - Selecione todo o Código e aperte del - Copie o código abaixo dentro da pagina <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%-The taglib directive below imports the JSTL library. If you uncomment it, you must also add the JSTL library to the project. The Add Library... action on Libraries node in Projects view can be used to add the JSTL 1.1 library. --%> <%-<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>

<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Minha Aplicacao WEB</title> </head> <body> <h3>Testando Login e Senha Para minha Aplicacao</h3> <br/> <form action="ServletValidaUsuario.do" method="post" > <table width="190"> <tr> <td width="1" height="21"></td> <td width="76" valign="top"><font size="2" face="Courier New">Login :</font><font face="Courier New">&nbsp; </font> </td> <td colspan="3" rowspan="2" valign="top"> <input type="text" name="login" value = "" size="13"></td> <td width="3">&nbsp;</td> </tr> <tr> <td height="2"></td> <td></td> <td></td> </tr> <tr> <td height="3"></td> <td></td> <td colspan="2" rowspan="2" valign="top"> <input type="password" name="senha" value = "" size="15"> </td> <td width="1"></td> <td></td> </tr> <tr> <td height="21"></td> <td valign="top"><font size="2" face="Courier New">Senha :</font><font face="Courier New">&nbsp; </font> </td> <td></td> <td>&nbsp;</td> </tr> <tr> <td height="21"></td> <td></td> <td width="24">&nbsp;</td> <td colspan="3" valign="top"> <input name="ok" type="button" alt="Digite o Login e Senha e pressione aqui." width="63" height="18" value = "Logar"/> </td> </tr> <tr> <td height="11"></td> <td></td> <td></td>

<td width="48"></td> <td></td> <td></td> </tr> </table> </form> </body> </html> -Clique em salvar. -Para testar sua aplicação Clique no ícone OBS: Caso não esteja aparecendo o ícone, vá no menu Executar e selecione a opção Executar /Projeto Principal ou clique em F6. - Repare que no nosso código do index.jsp temos como form action , <form action="ServletValidaUsuario.do" method="post" >, o nome de ServletValidaUsuario.do no qual sera mapeado no nosso struts-config.xml para referenciar a servlet que deverá ser acessada ao clicar no action do form. Mapeando nosso pagina index.jsp e servlet em struts-config.xml - agora nos vamos mapear a nossa pagina no struts-config.xml - na estrutura do projeto clique em “Páginas Web / WEB-INF / struts-config.xml” - clique duas vezes em struts-config.xml para abrir o seu código. - Em <action-mappings> apague a seguinte linha <action path="/Welcome" forward="/welcomeStruts.jsp"/> - este linha fazia o mapeamento do nosso welcomeStruts.jsp que foi apagada. -depois de feito isso nos vamos mapear nosso index.jsp que ficara assim : <action path="/ServletValidaUsuario" type="ServletAction.ServletValidaUsuario"> <forward name="success" path="/pages/principal.jsp"/> <forward name = "fail" path= "/index.jsp" /> </action> - esse trecho de código devera ficar dentro do <action-mappings> </action-mappings> - salve o projeto. Em <forward name="success" path="/pages/principal.jsp"/> e <forward name = "fail" path= / index.jsp" /> nos definimos para que caso o usuario e senha estejam corretos retornaremos “success” e mapeamos que ao retornar isso ele ira para “/pages/principal.jsp” o mesmo para o “fail”.

Em type="ServletAction.ServletValidaUsuario"> nos definimos onde nosso servlet estará pra que possa ser executada a validação do usuario. Logo vamos construir essa nossa estrutura. Construindo nosso Servlet -vamos à estrutura do projeto e abrimos a pasta “Pacotes de Código-Fonte” -selecione a pasta “Pacotes de Código-Fonte” - clique com o botão direito do mouse - selecione novo/pacote java. - em nome do pacote escreva ServletAction Obs: repare que é o mesmo nome que mapeamos no nosso struts-config.xml em type type="ServletAction.ServletValidaUsuario"> -clique em Finalizar

-após isso o NetBeans adcionará um pacote com o nome de ServletAction na nossa estrutura (“TesteAppWeb1/Pacotes de Código-Fonte”) -selecione o pacote ServletAction -botão direito em cima dele -selecione novo/servlet -O nosso nome do servlet será ServletValidaUsuario que também foi mapeado no nosso arquivo struts-config.xml

-clique em Próximo -desmarque a opção Adcionar informação ao decritor..... - clique em Finalizar. Agora o NetBeans adicionou um servlet dentro do pacote servletaction - selecione todo o código do servlet (ctrl + a) -delete o conteúdo -cole o código abaixo no conteúdo do arquivo. /* * ServletValidaUsuario.java * * */ package ServletAction; import Classe.Usuario; import ActionForm.ServletValidaUsuarioForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * * @author Marcus Menezes * @version */ public class ServletValidaUsuario extends Action { /** * Constructor of the object. */ private static final String FOWARD_SUCCESS = "success"; private static final String FOWARD_FAIL = "fail"; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

HttpSession session = request.getSession();

//recupera a sessão do usuário

String foward = FOWARD_SUCCESS; //retorno do mapping.findFoward String login = null; //login de acesso do usuário String senha = null; //senha do usuário //nosso action form ; //myForm vai ser nosso objeto com os atributos da tela index.jsp ServletValidaUsuarioForm myForm = (ServletValidaUsuarioForm) form; //pego os objetos da tela atraves do myForm login = myForm.getLogin(); senha = myForm.getSenha(); Usuario usuario = new Usuario(); //Exemplo de classe //caso o usuario e senha nao esteja corrteto if (!usuario.verificaUsuario(login, senha)) { foward = FOWARD_FAIL; request.setAttribute("msgErro","Não foi possível autenticar o " + "usuário através do login " + login + ". Por favor " + "verifique seu acesso ao sistema."); } return mapping.findForward(foward); } }

Criando nosso Action Form - Nosso action form vai pegar todas as informações da nossa jsp e trazer para nossa action. Para isso vamos mapea- la no nosso struts-config.xml - Abra o arquivo struts-config.xml Dentro de <form-beans> </form-beans> coloque: <form-bean name="ServletValildaUsuarioForm" type="ActionForm.ServletValidaUsuarioForm"/> -Altere a <action-mapping> e adcione name="ServletValildaUsuarioForm"> Feito isso seu arquivo struts-config.xml deve ficar assim : <?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="ServletValildaUsuarioForm" type="ActionForm.ServletValidaUsuarioForm"/> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> <forward name="welcome" path="/Welcome.do"/> </global-forwards> <action-mappings> <action path="/ServletValidaUsuario" type="ServletAction.ServletValidaUsuario" name="ServletValildaUsuarioForm"> <forward name="success" path="/principal.jsp"/> <forward name = "fail" path= "/index.jsp" /> </action> </action-mappings> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> <message-resources parameter="com/myapp/struts/ApplicationResource"/>

<!-- ========================= Tiles plugin ===============================--> <!-This plugin initialize Tiles definition factory. This later can takes some parameters explained here after. The plugin first read parameters from web.xml, thenoverload them with parameters defined here. All parameters are optional. The plugin should be declared in each struts-config file. - definitions-config: (optional) Specify configuration file names. There can be several comma separated file names (default: ?? ) - moduleAware: (optional - struts1.1) Specify if the Tiles definition factory is module aware. If true (default), there will be one factory for each Struts module. If false, there will be one common factory for all module. In this later case, it is still needed to declare one plugin per module.

The factory will be initialized with parameters found in the first initialized plugin (generally the one associated with the default module). true : One factory per module. (default) false : one single shared factory for all modules - definitions-parser-validate: (optional) Specify if xml parser should validate the Tiles configuration file. true : validate. DTD should be specified in file header (default) false : no validation Paths found in Tiles definitions are relative to the main context. --> <plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> </plug-in> <!-- ========================= Validator plugin ================================= --> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config> -Pronto agora já podemos fazer nossa ActionForm, então mãos a obra -Na estrutura do projeto em Pacotes de Código-Fonte - selecione Pacotes de Código-Fonte - botão direito - Novo/Pacote Java - Daremos o nome de ActionForm -Clique em Finalizar. -Agora olhe na estrutura ele criou um pacote chamado ActionForm. Vamos criar nossa servlet agora. -selecione o pacote ActionForm -Botao direito em cima do pacote -selecione Novo / Servlet

-vamos dar o nome de ServletValidaUsuarioForm -clique em finalizar. -De um duplo clique em cima da ServletValidaUsuarioForm para que seja exibido o código. -Selecione o código todo (ctrl + a) -Delete o código. -Inclua o seguinte código: /* * ServletValidaUsuarioForm.java * * */ package ActionForm; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; public class ServletValidaUsuarioForm extends ActionForm { private String login = ""; private String senha = ""; public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; }

} Atenção : vale ressaltar que este não é o melhor jeito de trabalhar com senha, isto é apenas um exemplo. Criando meu Modelo Agora vamos criar nossa classe do modelo, como não quero me estender muito não farei nenhuma conexão com o banco etc.. , como exemplo utilizei uma classe rápida que verificara o usuario e senha . Lógico que voce não fará assim, mas como é um exemplo acho que não tem problema. Lembre-se que no lugar dessa classe entraria o seu Model caso esteja usando o MVC. Então vamos lá, -clique com o botão direito em cima do Pacotes de Código-Fonte -selecione Novo/Pacote Java - de o nome de Classe -Clique com o botão direito em cima do pacote Classe -selecione novo/classe java... -de o nome de Usuario -de um duplo clique na classe Usuario -selecione o código todo, apague-o -cole o código a seguir : /* * Usuario.java * * Created on 13 de Junho de 2007, 12:21 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package Classe; /** * * @author zrcd */ public class Usuario {

/** Creates a new instance of Usuario */ public Usuario() { } public boolean verificaUsuario(String login , String senha){ if (login.equals("teste") && senha.equals("teste")){ return true; } return false; } } Obs : é sempre bom lembrar de salvar o projeto. Criando nossa pagina de resposta -Caso o usuário e senha estejam corretos(no nosso caso usuário = teste e senha = teste) ele vai retornar um forward com o nome de “success” como esta escrita no nosso servlet. Como mapeamos no struts-config.xml que se o forward for success ele nos abriria a pagina principal.jsp. Vamos criá-la

-Na nossa estrutura do projeto vá em “Paginas Web “ -clique com o botão direito em cima de “Paginas Web “ -Botão direito , novo/JSP -daremos o nome de principal.jsp -clique em Finalizar -salve o projeto Sua estrutura final deve ter ficado assim

Execute o projeto. E pronto . se tudo der certo quando você escrever no campo do nome o valor teste e no campo da senha o valor teste abrira a tela principal.jsp , caso contrario retornara a pagina index.jsp.

È isso pessoal, espero ter ajudado um pouco. Bons estudos ! Marcus Menezes mvgmenezes@gmail.com