Não estou conseguindo chamar tabela do banco através do MVC. Alguém pode me ajudar?

ERRO
HTTP Status 500 - Internal Server Error
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
root cause
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.

GlassFish Server Open Source Edition 4.1.1

JSP

<%
	int limite = 13;
	String numPagina = request.getParameter("numpagina");
	
	if (numPagina == null) {
		numPagina = "1";
	}
	
	int offset = (Integer.parseInt(numPagina) * limite) - limite;
	
	// out.println("limite = " + limite);
	// out.println("numPagina = " + numPagina);
	// out.println("offset = " + offset + "</br></br>");
	/* String url = "jdbc:mysql://localhost:3306/dbgama";
	String driver = "com.mysql.jdbc.Driver";
	String user = "root";
	String password = "123456";
	Connection connection;
	
	try {
		Class.forName(driver);
		connection = DriverManager.getConnection(url, user, password);
	} catch (SQLException e) {
		throw new RuntimeException(e);
	} catch (ClassNotFoundException e) {
		throw new RuntimeException(e);
	}
	*/
	
	//String sql = "select * from usuarios LIMIT 13 OFFSET " + offset;
	/// PreparedStatement ps = connection.prepareStatement(sql);
	// ResultSet resultSet = ps.executeQuery();
	UsuarioDAO usuarioDao = new UsuarioDAO();
	List listaUsuarios = (List) request.getAttribute("sessaolistausuariospaginada");
	
	out.println("<table border='1'>");
	out.println("<tr><td colspan ='6'><a href='novousuario.jsp'><b>Novo Registro</b></a></td></tr>");
	out.println("<tr class='listaUsuariostable'>");
	out.println("<td>Usuario<td>Senha<td>Nivel<td>Nome Completo<td>Alterar<td>Excluir<td>");
	out.println("</tr>");
	
	int contador = 0;
	
	// ArrayList<Usuarios> lista = usuarioDao.listaUsuariospaginada(offset);
	// for (Usuarios usuarios:listaUsuarios){
	for (Iterator iterator = listaUsuarios.iterator(); iterator.hasNext();) {
		Usuarios usuarios = (Usuarios) iterator.next();
		
		// out.println("Usuarios:" + resultSet.getString("usuario") + ",Senha:" + resultSet.getString("senha")
		//      + ",Nivel:" + resultSet.getString("nivel") + ",Nome Completo:" + resultSet.getString("nomecompleto") + "</BR>");
		
		if (contador % 2 == 0) {
			out.println("<tr style='background:#feffd9'>");
		} else {
			out.println("<tr>");
		}
		
		String usuario1 = usuarios.getUsuario();
		String senha = usuarios.getSenha();
		String nivel = String.valueOf(usuarios.getNivel());
		String nomecompleto = usuarios.getNomeCompleto();
		
		out.println("<td>"+ usuario1 +"</td>");
		out.println("<td>"+ senha +"</td>");
		out.println("<td>"+ nivel +"</td>");
		out.println("<td>"+ nomecompleto +"</td>");
		out.println("  <td><div align='center'><a href='alteraUsuario.jsp?usuario="+usuario1+"&senha="+senha+"&nivel="+nivel+"&nomecompleto="+nomecompleto+"'><img src='imagenss/user_edit.png' alt='Altetar'/></a></div> </td>");
		out.println ("<td><div align='center'><a href='Excluir?usuario="+usuario1+"'><img src='imagenss/user_delete.png' alt='Excluir'/></a></div> </td>");
		out.println("</tr>"); 
		contador++;
	}
	
	//out.println("<a href=listausuariopaginada.jsp?numPagina=1 >1</a>");
	//out.println("<a href=listausuariopaginada.jsp?numPagina=2 >2</a>");
	//out.println("<a href=listausuariopaginada.jsp?numPagina=3 >3</a>");
	//out.println("<a href=listausuariopaginada.jsp?numPagina=4 >4</a>");
	//String sqlConta = "select count(*) AS contaRegistros from usuarios";
	///  PreparedStatement psConta = connectio.prepareStatement(sqlConta);
	// ResultSet resultSetConta = psConta.executeQuery();
	// resultSetConta.next();
	// int totalRegistros = Integer.parseInt(resultSetConta.getString("contaRegistros"));
	
	int totalRegistros = (Integer)(request.getAttribute("sessaoqtdTotalRegistros"));
	int totalPaginas = totalRegistros / limite;
	
	if (totalRegistros % limite != 0) {
		totalPaginas++;
	}
	
	// out.println("<tr class='listaUsuariostable'><td colspan ='6'> Quantidade de Registros:"+totalRegistros);
	// out.println("Total de Paginas a Serem Mostradas:"+totalPaginas);
	// out.println("</tr></tb>");
	
	out.println("<tr class='listaUsuariostable'><td colspan ='6'>");
	
	int pagAnterior;
	
	if (Integer.parseInt(numPagina) > 1) {
		pagAnterior = Integer.parseInt(numPagina) - 1;
		out.println("<a href=listausUariopaginado?numpagina=" + pagAnterior + ">Anterior</a>");
	}
	
	for (int i = 1; i <= totalPaginas; i++) {
		if (i == Integer.parseInt(numPagina)) {
			out.println("<b>" + i + "</b>");
		} else {
			out.println("<a href=listausUariopaginado?numpagina=" + i + ">" + i + "</a>");
		}
	}
	
	int proximapag;
	
	if ((totalRegistros - (Integer.parseInt(numPagina) * limite)) > 0) {
		proximapag = Integer.parseInt(numPagina) + 1;
		out.println("<a href=listausUariopaginado?numpagina=" + proximapag + ">Proxima</a>");
	}
	
	out.println("Total de Registro:" + totalRegistros + "Total de Pagina:" + totalPaginas + "</td></tr>");
	out.println("</table>");
%>  

<c:import url="rodape.jsp"/>

DAO

public List getlistar() throws SQLException {
	//public ArrayList<Usuarios> listar() throws SQLException{
	String sql = "select * from usuarios";
	PreparedStatement ps = null;
	ResultSet ResultSet = null;
	List<Usuarios> listaUsuarios = new ArrayList<>();
	
	try {
		ps = connection.prepareStatement(sql);
		ResultSet = ps.executeQuery();
		
		while (ResultSet.next()) {
			Usuarios usuarios = new Usuarios();
			usuarios.setSenha(ResultSet.getString("senha"));
			usuarios.setUsuario(ResultSet.getString("usuario"));
			usuarios.setNivel(ResultSet.getInt("nivel"));
			usuarios.setNomeCompleto(ResultSet.getString("nomecompleto"));
			listaUsuarios.add(usuarios);
		}
		
		return (ArrayList<Usuarios>) listaUsuarios;
	} catch (SQLException ex) {
		Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
	} finally {
		connection.close();
		ps.close();
		ResultSet.close();
	}
	
	return null;
}

SERVLET

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//int numPagina = Integer.parseInt(request.getParameter("numpagina"));
	int numPagina = 0;
	
	if (request.getParameter("numpagina")!=null)
		numPagina = Integer.parseInt(request.getParameter("numpagina"));
	
	UsuarioDAO usuarioDao = new UsuarioDAO();
	
	try {
		List listaUsuarios = usuarioDao.getlistaUsuariospaginada(numPagina);
		int qtdTotalRegistros = usuarioDao.totalRegistros();
		request.setAttribute("sessaolistausuariospaginada", listaUsuarios);
		request.setAttribute("sessaoqtdTotalRegistros", qtdTotalRegistros);
		RequestDispatcher rd = request.getRequestDispatcher("/listaUsuarioPaginadamvc.jsp");
		rd.forward(request, response);
	} catch (SQLException ex) {
		Logger.getLogger(listaUsuarios.class.getName()).log(Level.SEVERE, null, ex);
	}
}

Primeira coisa é identificar em qual linha ocorreu o erro: org.apache.jasper.JasperException: java.lang.NullPointerException (erro estranho, inclusive, pois em momento algum, vi usando jasper no seu código).

Há vários pontos ruins no código, mas vamos por parte, primeiro tente identificar onde ocorreu a exceção.

Acho que o erro e aqui na linha 55

List listaUsuarios = (List) request.getAttribute("sessaolistausuariospaginada");