Dúvidas gerais sobre JSP+Struts

5 respostas
A

Para explicar minhas dúvidas vou usar um exemplo bem simples:

struts-config.xml:
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
   <data-sources>
  </data-sources>
  <form-beans>
  <form-bean name="Acesso" type="form.Acesso"/>

  </form-beans>
  <global-forwards>
  </global-forwards>
  <action-mappings>
  <action name="Acesso" path="/logon" scope="request" type="action.ActionLogin">
  <forward name="index" path="/certo.jsp"/>
  <forward name="volta" path="/erro.jsp"/>
  </action>

  </action-mappings>
  <controller>
  </controller>   
</struts-config>

Página em JSP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
 
  
<html>   
<head>   
</head>   
<body>   
<p>Teste de Login</p>   
<br>   
<br>   
  
<html:form action="logon.do" method="POST">   
Nome <html:text property="login" size="20" maxlength="10"/>   
Sobrenome <html:password property="senha" size="20" maxlength="10"/> 
<html:submit property="ok"/> 

</html:form>  
  
</body>   
</html>

Minha classe Acesso.java:

package form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

public class Acesso extends ActionForm {
    private String login="";
    private String senha="";


    public Acesso() {
    }
    
        public void reset(ActionMapping actionMapping, HttpServletRequest request) {
            this.login="";
            this.senha="";
        }

        public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest request) {
            ActionErrors errs = new ActionErrors();
            return errs;
        }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getLogin() {
        return login;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getSenha() {
        return senha;
    }
}

Meu action
ActionLogin.java:

package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import form.Acesso;

import manager.valida;
public class ActionLogin extends org.apache.struts.action.Action {
    
    Acesso ac = new Acesso();
    valida va = new valida();

  private static final String FORWARD_acesso = "index";
    
    private static final String FORWARD_volta= "volta";
    
	public ActionLogin() {
		
	}


    public ActionForward execute(ActionMapping ActionMapping, 
                                 ActionForm ActionForm, 
                                 HttpServletRequest HttpServletRequest, 
                                 HttpServletResponse HttpServletResponse) throws Exception {
        String login = ac.getLogin();
        String senha = ac.getSenha();
 
        

                 if(va.verificaSenha(login,senha)){
                                    return ActionMapping.findForward(FORWARD_acesso);
                                         
                                 }
                                 else{
                                 return 
                                 ActionMapping.findForward(FORWARD_volta);}


    }

}

E por último meu valida:
valida.java

package manager;
public class valida{

	public boolean 
		verificaSenha(String nome,String senha){
	        
	     if(nome.compareTo("pedro")==0){
	             return true;
	     }else if (senha.compareTo("1234")==0){
	             return true;
	     }
	     else{
	     return false;
	     }
            
	    }

	    }

1º Dúvida: Minha classe Acesso, onde fica meus gets e sets, não está pegando os valores do formulário. Pq o motivo??? Aparentemente está td certo.

2º Dúvida: Pq tem códigos de exemplo que eu vejo que tem html:html e tem uns que apenas usa taglib apenas dentro do form, como este exemplo??? O certo é usar taglib em tudo, como no body e no head(ficando e ), ou só no form mesmo??

5 Respostas

S

bom provavelmente seu erro esta no seu action ActionLogin.
onde você deveria usar seu form para recuperar os dados no seu
formulario, repare que você está instanciando um novo objeto
consequentemente esse objeto irá iniciar com seu valores default…

tente isso

Acesso ac = (Acesso) ActionForm;

 String login = ac.getLogin();  
 String senha = ac.getSenha();

acho que é isso,

A

Deu certo!! Estava achando que o erro era por eu nao estar usando taglib no meu jsp. Essa e uma outra duvida minha, e correto nao usar taglib html no jsp? Eu estou usando html comum e esta funcionando td perfeitamente.

S

não faz sentido, pois você resolve com tags do struts, ok !!

A

Mas eu tenho que usar taglib html em tudo ou posso usar só no form??

A

Tinha feito o que vc falou sobre como instanciar o objeto do meu ActionForm e deu certo. O estranho que agora ele parou de pegar. Não foi alterado nada no código. O que eu fiz foi criar um outro Aplication com um nome diferente, mas as mesmas classes do meu aplication anterior. Será que pode ser isso que atrapalhou todo meu sistema?? Mandei imprimir o que ele pega e ele me retorna vazio.

Criado 10 de outubro de 2007
Ultima resposta 11 de out. de 2007
Respostas 5
Participantes 2