Como criar um ArrayList de Produtos em uma classe Usuário e fazer com que o Servlet não as reset ?

Estou tentando criar um CRUD que é referente a criar uma Lista de Compras…

E estou com os seguintes problemas:
1) Como dizer do modo que fiz, que o Usuário possui uma Lista de produtos?
2) Como inicializar com essa lista de produtos vazia, ao cadastrar o usuário ?
3) Como faço para que o meu servlet não “reset” a minha lista de usuário ? Digo isto, pois ao dar POST no cadastro do usuário, ele me indica 1 usuário, porém se voltar a página e der novamente POST, ele indica 1 usuário, ou sejá ele está apagando a minha lista de usuário e suas informações, eu preciso manter para fazer as trocas de informações nas rotas…

MINHA ARQUITETURA DE PASTAS:
image

SERVLET CLASSE REGISTER

@WebServlet(name = "Register", urlPatterns = {"/Register"})
public class Register extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        // REQUEST
        final String username = request.getParameter("username");
        final String password = request.getParameter("password");
        
        // MSG RESPONSE
        String msgSaveUser = "";
        
        
        
        if(!username.equals("") && !username.equals(" ") && !password.equals("") && !password.equals(" ")){
            Produto newProduct = new Produto(null, 0);
            RepositorioProduto rp = new RepositorioProduto();
            rp.saveProduct(newProduct);
            
            Usuario newUser = new Usuario(username, password);
            RepositorioUsuario ru = new RepositorioUsuario();
            
            msgSaveUser = ru.saveUser(newUser);
           

        }
        
        
    }

}

CLASSE PRODUTO:

public class Produto {
private String name;
private int quantity;

public Produto(String name, int quantity){
    this.name = name;
    this.quantity = quantity;
}

public String getName(){
    return this.name;
}

public int getQuantity(){
    return this.quantity;
}

}

CLASSE USUÁRIO:

public class Usuario {
    private String username;
    private String password;
    
    public Usuario(String username, String password){
        this.username = username;
        this.password = password;
    }
    
    public String getUsername(){
        return this.username;
    }
    
    public String getPassword(){
        return this.password;
    }
}

INTERFACE REPOSITÓRIO USUÁRIO:

public interface IRepositorioUsuario {
        public String saveUser(Usuario user);
        public boolean checkExistUser(String username);
        public int getUserListSize();
        public List<Usuario> getUser(String username);
    }

INTERFACE REPOSITÓRIO PRODUTO:

public interface IRepositorioProduto {
    public String saveProduct(Produto product);
    public boolean checkExistProduct(String productName);
    public int getProductListSize();
    public List<Produto> getProduct(String productName);
}

CLASSE REPOSITÓRIO USUÁRIO:

public class RepositorioUsuario implements IRepositorioUsuario {
    private List<Usuario> userList = new ArrayList<Usuario>();

    @Override
    public String saveUser(Usuario user) {
        try {
            // VERIFICA SE EXISTE USUÁRIO ADICIONADO
            // SE, NÃO EXISTIR, ADICIONE O USUÁRIO
            // SE NÃO, VERIFIQUE O USUÁRIO A SER CADASTRADO, CASO JÁ EXISTA RETURN FALSE, CASO NÃO EXISTA ADICIONE O USUÁRIO
            if(this.getUserListSize() == 0){ 
                this.userList.add(user);
                return "USUÁRIO SALVO";
            } else { 
                if(this.checkExistUser(user.getUsername())){
                    return "USUÁRIO JÁ EXISTE NO BANCO DE DADOS";
                } else {
                    this.userList.add(user);
                    return "USUÁRIO SALVO";
                }    
            }
        } catch (Exception e){
            return e.toString();
        }
    }

    @Override
    public int getUserListSize() {
        return this.userList.size();
    }
    
    @Override
    public List<Usuario> getUser(String username) { return null; }
    
    @Override
    public boolean checkExistUser(String username) {
        for(Usuario user : this.userList){
            return (user.getUsername().equals(username)) ? true : false;
        }
        
        return false;
        
    }
}

CLASSE REPOSITÓRIO PRODUTO:

public class RepositorioProduto implements IRepositorioProduto {
    private List<Produto> productList = new ArrayList<Produto>();

    @Override
    public String saveProduct(Produto product) {
        try {
            // VERIFICA SE EXISTE PRODUTO ADICIONADO
            // SE, NÃO EXISTIR, ADICIONE O PRODUTO
            // SE NÃO, VERIFIQUE O PRODUTO A SER CADASTRADO, CASO JÁ EXISTA RETURN FALSE, CASO NÃO EXISTA ADICIONE O PRODUTO
            if(this.getProductListSize() == 0){ 
                this.productList.add(product);
                return "PRODUTO SALVO";
            } else { 
                if(this.checkExistProduct(product.getName())){
                    return "PRODUTO JÁ EXISTE NO BANCO DE DADOS";
                } else {
                    this.productList.add(product);
                    return "PRODUTO SALVO";
                }    
            }
        } catch (Exception e){
            return e.toString();
        }
    }

    @Override
    public boolean checkExistProduct(String productName) {
        for(Produto product : this.productList){
            return (product.getName().equals(productName)) ? true : false;
        }
        
        return false;
    }

    @Override
    public int getProductListSize() {
        return this.productList.size();
    }

    @Override
    public List<Produto> getProduct(String productName) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
}

Se cada instância da classe Usuarios representa um usuário, então ela deveria se chamar Usuario, no singular.

Após renomear sua classe, você pode criar uma lista de usuários dessa forma:

List<Usuario> usuarios = new ArrayList<>();

@staroski
Amigo, eu alterei a minha pergunta e o seu conteúdo…
Elaborei melhor meus códigos, você consegue me ajudar nestas informações?