Iniciando na web com sistema de login

5 respostas
H

Ola pessoal

Bom, to começando com web e resolvi fazer um sistema de login, algo bem simples pra começar.

A idéia é ler/gravar do disco um arraylist sempre que for fazer um login ou registrar alguem.

Mas o que era pra ser simples se tornou bem confuso e espero que alguem possa me dar uma luz, para assim poder seguir meus estudos.

O problema aparentemente é que o método "ArrayList getListaUser()" retorna null (não entendo o pq), o que posso fazer para arrumar este problema?

Gostaria de saber tbm o que acontece com a variavel "ArrayList listaUser = null;" da primeira pagina a baixo, existe uma instancia com uma variável pra cada jsp que der um "include" nesta pagina?

Obrigado desde ja! ;D

fuser.jsp
<%@page import="java.io.*"%>
<%@page import="java.util.ArrayList"%>

<%!class User implements Serializable {
		private String user;
		private String pass;
		private String ip;
		private String sid;

		public String getUser() {
			return user;
		}

		public String getPass() {
			return pass;
		}

		public String getIp() {
			return ip;
		}

		public String getSid() {
			return sid;
		}

		public void setUser(String u) {
			user = u;
		}

		public void setPass(String p) {
			pass = p;
		}

		public void setIp(String i) {
			ip = i;
		}

		public void setSid(String s) {
			sid = s;
		}

		public User(String u, String p) {
			user = u;
			pass = p;
			ip = null;
			sid = null;
		}

	}

	ArrayList<User> getListaUser() {
		ArrayList<User> listaUser = new ArrayList<User>();
		try {
			FileInputStream fis = new FileInputStream("pass");

			ObjectInputStream ois = new ObjectInputStream(fis);

			listaUser = (ArrayList) ois.readObject();

			ois.close();
		} catch (FileNotFoundException e) {
			System.out.println("Erro: " + e);
		} catch (IOException e) {
			System.out.println("Erro: " + e);
		} catch (ClassNotFoundException e) {
			System.out.println("Erro: " + e);
		}
		return listaUser;
	}

	void salvaListaUser(ArrayList<User> lista) {
		try {
			FileOutputStream fos = new FileOutputStream("pass");
			ObjectOutputStream oos = new ObjectOutputStream(fos);

			oos.writeObject(lista);

			oos.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}

	boolean login(String user, String pass) {
		boolean res = false;

		User u = new User(user, pass);
		res = getListaUser().contains(u);

		return res;
	}

	boolean loged(String sid, String ip) {
		boolean res = false;

		ArrayList<User> list = getListaUser();

		int t = list.size();

		for (int i = 0; i < t; i++) {
			if (list.get(i).getSid() == sid) {
				if (list.get(i).getIp() == ip) {
					res = true;
				}
			}
		}

		return res;
	}

	void registro(String user, String pass) {
		User u = new User(user, pass);
		ArrayList<User> lista = getListaUser();
		lista.add(u);

		salvaListaUser(lista);
	}

	void imprimeTudo() {
		User aux = null;
		ArrayList<User> auxLista = getListaUser();
		if (auxLista == null )
			System.out.println("erro, n encontrou auxLista");
		else {
		int s = auxLista.size();
			for (int i = 0; i < s; i++) {
				aux = auxLista.get(i);
				if ( aux != null ) {
					System.out.println(aux.getUser());
					System.out.println(" ");
					System.out.println(aux.getPass());
					System.out.println("<br>");
				}
			}
		}
	}%>
form1.jsp
Cadastro
<form method="POST" action = "formCad.jsp"> 

<P>Usuario: <INPUT type="text" name="user">

<P>Senha: <INPUT type="text" name="pass">

<input type="submit" value="Submit">

</form>
formCad.jsp
<%@ include file="fuser.jsp" %>

<%
	String u = null;
	String p = null;
	u = request.getParameter("user");
	p = request.getParameter("pass");
	if ( u != null ) {
		if ( p != null ) {
			registro(u,p);
			out.println("Registrado... " + u + " " + p);
		}
	}
	else {
		out.println("nao registrado");
	}
%>
formTudo.jsp
<%
	imprimeTudo();
%>

5 Respostas

lucasap2005

getListaUser() retorna null porque vc não tem nenhum dado nessa lista cadastrado no arquivo.
Faça uma verificação em seu método getListaUser() para que o mesmo não retorne null

H

Obrigado pela resposta… mas seguindo com o projeto, empaquei de novo.
Tenho este erro…

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.el.ExpressionFactoryImpl

Até onde consegui encontrar, fica no metodo getListaUser() sendo um IOException, mas n tenho certeza.

Depois de tentar procurar bastante o erro, ainda não entendi, ja que fiz a classe serializable e o ArrayList ja é por padrão, estou esquecendo de algo?

(e era pra sair com facilidade ~~)
Obrigado de novo pessoal :smiley:

Obs.: editei o codigo p/ n ter uma variável local.

lucasap2005

A primeira exception ocorre pq no metodo getListaUser() vc esta tentando ler um objeto que nao existe na seu arquivo.
A segunda exception ocorre pq vc colocou a classe Usuário como uma classe interna e a sua classe principal no caso nao é principal pq vc colocou td dentro do JSP nao é serializable. Como resolver? Coloque sua classe User em um arquivo separado User.java e implemente Serializable. Irá resolver assim…Espero ter ajudado…t+

H

Obrigado, tem ajudado sim.
Bom, tentando ainda resolver o problema eu gerei a classe separado, coloquei dentro da pasta WEB-INF\classes\func\User.class, na classe func eu coloquei o include… <%@page import=“func.User”%> e recebi esse erro:

The type func.User is not visible

eu acreditei q fosse algum erro no web.xml, pesquisei e acabei encontrando um exemplo onde mostrava q n precisava colocar nada. Agora fiquei na duvida…

Alguem sabe o pq desse erro e como conserta-lo?

Obrigado de novo!

lucasap2005

Sua classe User está publica?
Se não tiver, coloque-a como public

Criado 8 de junho de 2008
Ultima resposta 11 de jun. de 2008
Respostas 5
Participantes 2