ArrayList NullPointerExcepti on, Estou tentando trazer uma lista de usuários para minha view e está dando NullPointerException

Clase Usuario

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.lojavirtual.modelo;
    import java.sql.Statement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import java.util.ArrayList;

/**
*

  • @author rafael
    */

public class UsuarioDao {

    private final String user = "root";
    private final String password = "Tamires90()";
    private final String url="jdbc:mysql://localhost:3306/LojaVirtual";   
    private Connection con;
    private Statement st;
    private PreparedStatement pst;

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

    public int conectar(){

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(url, user, password);
            st = con.createStatement();
            return 0;
            
        } catch(ClassNotFoundException e){
            System.out.println("Driver de conexão não encontrado "  + e.getMessage());
           return 1;

        } catch(SQLException ex){
            System.out.println("Base de dados não Encontrada " + ex.getMessage());
            return 2;
        }
    }

    public int desconectar(){
        try{
            con.close();
            return 0;
        } catch(SQLException ex){
            System.out.println("Falha ao desconectar" + ex.getMessage());
            return 1;
        }
    }
    
    

    public int inserir(String nome, String email, String telefone, String login, String senha){
        try{
            st.executeUpdate("INSERT INTO  usuario(nome, email, telefone, login, senha) VALUES ('"+nome+"','"+email+"','"+telefone+"','"+login+"','"+senha+"')");
        return 0;               
        } catch(SQLException e){
            System.out.println(e);
            return 1;
        }

    }
    
    
    

    public List pesquisar(){
        try{
            
            ResultSet rs = st.executeQuery("SELECT * FROM usuario ORDER BY nome");
        while(rs.next()){
            Usuario usuario = new Usuario();
            usuario.setNome(rs.getString("nome"));
            usuario.setEmail(rs.getString("email"));
            usuario.setTelefone(rs.getString("telefone"));
            lista.add(usuario);
        }
        return lista;
        } catch(SQLException ex){
            return lista;
        }

    }

}

Classe UsuarioDao
/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.lojavirtual.modelo;

import java.util.ArrayList;
import java.util.List;

/**
*

  • @author rafael
    */
    public class Usuario {

    private long id;
    private String nome;
    private String email;
    private String telefone;
    private String login;
    private String senha;

    public Usuario(){
    List Usuario = new ArrayList<>();
    }

    public long getId(){
    return id;
    }

    public void setId(long id){
    this.id = id;
    }

    public String getNome(){
    return nome;
    }

    public void setNome(String nome){
    this.nome = nome;
    }

    public String getEmail(){
    return email;
    }

    public void setEmail(String email){
    this.email = email;
    }

    public String getTelegone(){
    return telefone;
    }

    public void setTelefone(String telefone){
    this.telefone = telefone;
    }

    public String getLogin(){
    return login;
    }

    public void setLogin(String login){
    if(login.length() < 5){
    throw new IllegalArgumentException(“Login tem que ter pelo menos 5 caracteres”);

     } 
         this.login = login;
    

    }

    public String getSenha(){
    return senha;
    }

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

}

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.lojavirtual.controle;

import br.com.lojavirtual.modelo.Usuario;
import br.com.lojavirtual.modelo.UsuarioDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*

  • @author rafael
    */
    public class ControllerUsuario extends HttpServlet {

    /**

    • Processes requests for both HTTP GET and POST

    • methods.

    • @param request servlet request

    • @param response servlet response

    • @throws ServletException if a servlet-specific error occurs

    • @throws IOException if an I/O error occurs
      */
      protected void processRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      response.setContentType(“text/html;charset=UTF-8”);

      try (PrintWriter out = response.getWriter()) {

       Usuario usuario = new Usuario();
      
       UsuarioDao usuarioDao = new UsuarioDao();
      
       String flag = request.getParameter("flag");
      
       try {
           int conexao = usuarioDao.conectar();
           if (conexao == 0) {
               if (flag.equals("CadastrarUsuario")) {
      
                   String nome = request.getParameter("txtnome");
                   String telefone = request.getParameter("txttelefone");
                   String email = request.getParameter("txtemail");
                   String senha = request.getParameter("txtsenha");
                   String login = request.getParameter("txtlogin");
      
                   usuario.setNome(nome);
                   usuario.setEmail(email);
                   usuario.setTelefone(telefone);
                   usuario.setLogin(login);
                   usuario.setSenha(senha);
      
                   int cadastro = usuarioDao.inserir(usuario.getNome(), usuario.getEmail(), usuario.getTelegone(), usuario.getLogin(), usuario.getSenha());
                   
                   if (cadastro == 0) {
                       request.setAttribute("mensagem", "Usuário cadastrado com sucesso");
                       getServletContext().getRequestDispatcher("/cadastro.jsp").include(request, response);
                   } else {
                       request.setAttribute("mensagem","Cliente nao cadastrado");
                       getServletContext().getRequestDispatcher("/cadastro.jsp").include(request, response);
      
                   }
               
               }
           }
       } catch (IllegalArgumentException e) {
           out.write(e.getMessage());
           
       } finally {
           usuarioDao.desconectar();
       }
       
       List listaUsuario = usuarioDao.pesquisar();
       request.setAttribute("ListaUsuario", listaUsuario);
       RequestDispatcher rd = request.getRequestDispatcher("/usuarioPesquisa.jsp");
       rd.forward(request, response);
      

      }

    }

    //
    /**

    • Handles the HTTP GET method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      processRequest(request, response);
      }

    /**

    • Handles the HTTP POST method.
    • @param request servlet request
    • @param response servlet response
    • @throws ServletException if a servlet-specific error occurs
    • @throws IOException if an I/O error occurs
      */
      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      processRequest(request, response);
      }

    /**

    • Returns a short description of the servlet.
    • @return a String containing servlet description
      */
      @Override
      public String getServletInfo() {
      return “Short description”;
      }//

}

A view

<%@page import=“br.com.lojavirtual.modelo.Usuario”%>
<%@page import=“java.util.Iterator”%>
<%@page import=“br.com.lojavirtual.modelo.UsuarioDao”%>
<%@page import=“java.util.List”%>
<!doctype html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Tec Fontes</title>
    <meta name="description" content="">
    <!--<meta http-equiv="Refresh" content="0; URL=login.html">-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/png" href="imagens/ms-icon-144x144.png">

    <link rel="stylesheet" href="css/bootstrap.min.css">
    
    <link rel="stylesheet"  href="css/estilo.css">
    
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
    <link rel="stylesheet" href="css/main.css">

    <script src="js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script>
</head>

 <body>

    
    <nav class="navbar navbar-fixed-top navbar-inverse navbar-transparente">
        <div class="container">
            
            <!-- header-->
            <div class="navbar-header">
                
                <!--botao para celular-->
                <button type="button" class="navbar-toggle collapsed"
                        data-toggle="collapse" data-target="#barra-navegacao">
                    <span class="sr-only">Alternar navegação</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                
                <a href="index.html" class="navbar-brand">
                    <span class="img-logo"></span>
                </a>
            </div>
            
            <!--barra menu-->
            <div class="collapse navbar-collapse" id="barra-navegacao">
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="index.html">Central do sistema</a></li>
                    <li><a href="cadastro.jsp.html">Cadastro</a></li>
                    <li><a href="#">Compras </a></li>
                    <li class="divisor" role="separator"></li>
                    <li><a href="Ajuda.html">Versão</a></li>
                </ul>
            </div><!--/barra menu-->
        </div><!--/container-->
    </nav>
    
    <div class="row">
        <div class="col-sm-6">
            <br><br>
            <h2>Usuários</h2>
        </div>
        
        <form action="ControllerUSuario" method="post">
        <div class="col-sm-6 text-right h2">
            <br><br>
            <button type="submit" class="btn-lg btn-primary" href="index.html">
                <i class="fa fa-plus"></i>Voltar</button>
                <button type="submit" class="btn-lg btn-danger" href="ControllerUsuario">
                    <i class="fa fa-refresh"></i>Atualizar</button>
        </div>
    </div>
    
    
    <hr>
    
    <table class="table table-hover">
        <thead>
            <tr>
                <th>Id</th>
                <th width="30%">Nome</th>
                <th>Telefone</th>
                <th>Opções</th>
                
            </tr>
       </thead>
       <tbody>
           <%
               List lista = (List) request.getAttribute("ListaUsuario");
               for(Iterator iterator = lista.iterator(); iterator.hasNext();){
                   Usuario usuarios = (Usuario) iterator.next();%>
            <tr>
                <th><%= usuarios.getNome()%></th>
                <th><%= usuarios.getEmail()%></th>
                <th><%= usuarios.getTelegone()%></th>
                
            </tr>
            <%
               }
            %> 
        </tbody>
    </table>
   </form>
            
            
        
    </body>

Ele está dando nullPointerExecption no array mas não sei oque faço, para resolver isso