Iniciando na web com sistema de login

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

[code]<%@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>");
			}
		}
	}
}%>

[/code]

form1.jsp

[code]Cadastro

Usuario:

Senha: [/code]

formCad.jsp

[code]<%@ 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”);
}
%>
[/code]

formTudo.jsp

<% imprimeTudo(); %>

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

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.

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+

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!

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