Duvida com JSP!

6 respostas
luiz_ross
Gente, como eu faço pra pegar os dados digitados pelo usuário e mostra-los na mesma tela, logo apos eu clicar em mostrar? Aqui vai o meu código, o que ele tem de errado, pois não consigo nem com reza braba achar meu erro nesse código. Essa é pagina jsp (index.jsp)
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" 

errorPage="" %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="estilo1.css" rel="stylesheet" type="text/css">
<link href="estilo3.css" rel="stylesheet" type="text/css">
</head>

<body>
<%@ page import = "com.log.*" %>
<jsp:useBean id="login"  class="com.log.Login"/>
<jsp:setProperty name="login" property="usuario" param="usuario"/>
<jsp:setProperty name="login" property="senha" param="senha"/>

<div align="center">
  <p> </p>
  <p> </p>
  <form name="form1" method="get" action="index.jsp">
    <table width="40%" border="0" class="estilo1">
      <tr>
        <td><table width="100%" border="0" class="estilo1">
            <tr>
              <td><div align="center"><em><strong><font 

color="#007DC1">LOGIN</font></strong></em></div></td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td><table width="100%" border="0" class="estilo1">
            <tr>
              <td width="41%"><font 

color="#007DC1"><strong>Usuário:</strong></font></td>
              <td width="59%"><input name="usuario" type="text" class="estilo2" size="30" 

value"<jsp:getProperty name="login" property="usuario" />"></td>
            </tr>
            <tr>
              <td><font color="#007DC1"><strong>Senha:</strong></font></td>
              <td><input name="senha" type="password" class="estilo2" size="30" 

value"<jsp:getProperty name="login" property="senha" />"></td>
            </tr>
          </table></td>
      </tr>
    </table>
  </form>
  <p><font color="#007DC1"><strong><em>Esqueceu sua senha?</em></strong></font> 
    <a href="#">Clique aqui!!!</a> </p>
  <form name="form2" method="post" action="index.jsp">
    <input name="Submit" type="submit" class="estilo3" value="mostrar">
  </form>
  
  <p> 
</p>



  <p> </p>
  <p> </p>
</div>
</body>
</html>
e este é meu bean (Login.java)
package com.log;
/**
 * @author Luiz Henrique
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */
public class Login {
	String usuario;
	int    senha;
	/**
	 * Constructor for Login.
	 */
	public Login() {
		super();
	}

	/**
	 * Returns the senha.
	 * @return int
	 */
	public int getSenha() {
		return senha;
	}

	/**
	 * Returns the usuario.
	 * @return String
	 */
	public String getUsuario() {
		return usuario;
	}

	/**
	 * Sets the senha.
	 * @param senha The senha to set
	 */
	public void setSenha(int senha) {
		this.senha = senha;
	}

	/**
	 * Sets the usuario.
	 * @param usuario The usuario to set
	 */
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

}

6 Respostas

Bani

Seu problema é puramente HTML, o Java está correto.
O primeiro erro foi ter declarado um FORM diferente para o botão. Ele tem tem ficar dentro do mesmo em que estão os campos.
O segundo foi não ter colocado "=" após o value nas inputboxs.

Após corrigir seu HTML você vai notar que a senha está vindo sempre preenchida, isso porque o getProperty no value está inicializando ela sempre, por ser um campo numérico, com 0. Acho que você vai precisar de um if aí...

Aqui vai o código corrigido do JSP:

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*"

errorPage="" %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="estilo1.css" rel="stylesheet" type="text/css">
<link href="estilo3.css" rel="stylesheet" type="text/css">
</head>

<body>
<%@ page import = "com.log.*" %>
<jsp:useBean id="login"  class="com.log.Login"/>
<jsp:setProperty name="login" property="usuario" param="usuario"/>
<jsp:setProperty name="login" property="senha" param="senha"/>

<div align="center">
  <p> </p>
  <p> </p>
  <form name="form1" method="post" action="index.jsp">
    <table width="40%" border="0" class="estilo1">
      <tr>
        <td><table width="100%" border="0" class="estilo1">
            <tr>
              <td><div align="center"><em><strong><font

color="#007DC1">LOGIN</font></strong></em></div></td>
            </tr>
          </table></td>
      </tr>
      <tr>
        <td><table width="100%" border="0" class="estilo1">
            <tr>
              <td width="41%"><font

color="#007DC1"><strong>Usuário:</strong></font></td>
              <td width="59%"><input name="usuario" type="text" size="30" value="<jsp:getProperty name="login" property="usuario" />"></td>
            </tr>
            <tr>
              <td><font color="#007DC1"><strong>Senha:</strong></font></td>
              <td><input name="senha" type="password" size="30" value="<jsp:getProperty name="login" property="senha" />"></td>
            </tr>
          </table></td>
      </tr>
    </table>
  <p><font color="#007DC1"><strong><em>Esqueceu sua senha?</em></strong></font>
    <a href="#">Clique aqui!!!</a> </p>
    <input name="Submit" type="submit" class="estilo3" value="mostrar">
  </form>
 
  <p> 
</p>



  <p> </p>
  <p> </p>
</div>
</body>
</html>
luiz_ross

Bani como resolver esse problema, tentei resolver mudando o tipo de retorno da senha, que era inteiro passei para String no bean. Uma outra pergunta, qual seria a maneira mais correta de pegar dados do usuario,
desse jeito que eu fiz, usando setProperty e o getProperty e um bean ou declarando uma variavel que guardasse o valor que peguei utilizando variavel="<%=request.getParameter(“valordavariavel”)%>">, pergunto isso porque quero saber se esse jeito que eu fiz é a maneira correta pra começar a utilizar o padrão MVC

Bani

Eu mudei para String aqui e funcionou…
Na verdade para utilizar o padrão MVC supõe-se no mínimo que você vai ter uma classe de controller, uma classe de model, e o JSP para o view… Fazendo tudo simplesmente no JSP com certeza você não está utilizando-o.
Mas como o que você está fazendo é algo extremamente simples (só mantendo os dados no formulário após dar um submit), não justifica muito criar um monte de classes.
Quando você for realmente utilizar as informações do formulário para alguma coisa, o ideal seria mandá-las para um servlet, não para uma página JSP. Para utilizar as três camadas, você mandaria para um servlet “controller” que veria o que você está querendo e repassaria para o servlet que responsável por implementar a lógica de negócio que você precisa.

luiz_ross

Tipo, isso que eu fiz de querer fazer com que os dados digitados apareçam na mesma página foi só pra teste. O que eu quero fazer mesmo
é uma aplicação web utilizando banco de dados e rede. Sendo mais especifico, é um sistema de gerenciamento de pedidos que eu tenho que fazer, por isso eu perguntei se estou no caminho certo, pois esse sistema é o primeiro que eu peguei pra fazer profissionalmente, então quero fazer da melhor maneira possivel e aplicar as melhores práticas de design pra que fique facil dar suporte em cima dele depois.Ah, seria correto utilizar somente classes java ao invés de servlets(controllers) e servlets que implementem a lógica de negócio?num é preguiça mas é que achei um pocuo complicado trabalhar com servlets.

Bani

Sobre implementar a lógica de negócio em servlets eu realmente falei errado. São classes normais, não servlets, afinal elas não vão precisar trabalhar com a parte de request diretamente se o controller é quem recebe o request e vai fazer o redirect para o JSP depois.
Mas não querer utilizar servlets no geral pra fazer uma aplicação web eu acho meio estranho… não que não seja possível utilizar diretamente as classes de network do Java, mas com certeza vai dar muito mais trabalho do que utilizar um servlet.
Também fica difícil dizer se você está no caminho certo com uma simples página para digitar usuário e senha.
Mas o que conta muito é o bom senso. Se você tiver criado uma modelagem mínima das suas classes e olhado pra elas achar que está algo bem organizado, que cada classe está realmente fazendo o que deveria fazer, etc, você está no caminho certo.
Lembre-se que um projeto começa no planejamento, não escrevendo o código.

luiz_ross

Acho que me espressei mal, essa página foi só um teste, não tem nada a ver com o sistema que eu disse, outra coisa, eu estou modelando o sistema ainda, por enquanto nao saiu nada do papel. Foi por isso que perguntei sobre o padrão MVC, porque quero implementa-lo nesse sistema, só que antes de tentar implementa-lo direto nesse sistema, eu estou fazendo alguns testes pra ter certeza de que eu peguei o conceito desse padrão e de que posso implementá-lo sem maiores problemas nesse sistema que te disse. Eu sei que um bom projeto começa com uma boa modelagem e um bom planejamento como vc falou e é isso que eu estou tentando fazer, só que como eu sou iniciante em JSP/SERVLETs, não tem jeito de fugir da codificação, eu tenho a noção de que ter o conceito bem entendido, a codificação fica mais fácil, só que como eu tenho pouco tempo pra isso, os dois tem que andar juntos.

Criado 26 de janeiro de 2003
Ultima resposta 26 de jan. de 2003
Respostas 6
Participantes 2