Refatoração de código

Olá, estou com dúvida em como refatorar este código para um Switch case. Eu fiz todos apenas com else if, mas agora, preciso melhorá-lo.

Código a ser refatorado:

if (acao == null || acao.isEmpty()) {
			resp.sendRedirect("/cadastroweb");
		} else if (acao.equals(CADASTRO)) {
			req.getRequestDispatcher("cadastro.jsp").forward(req, resp);
		} else if (acao.equals(CONSULTA)) {
			try {
				List<Usuario> usuarios = new UsuarioServico().listar();
				req.setAttribute("usuarios", usuarios);
				req.getRequestDispatcher("consulta.jsp").forward(req, resp);
			} catch (Exception e) {
				throw new ServletException(e);
			}
		} else if (acao.equals(EXCLUSAO)) {
			try {
				List<Usuario> usuarios = new UsuarioServico().listar();
				req.setAttribute("usuarios", usuarios);
				req.getRequestDispatcher("exclusao.jsp").forward(req, resp);
			} catch (Exception e) {
				throw new ServletException(e);
			}
		} else if (acao.equals(EXCLUIR)) {

			String id = req.getParameter("id");

			Usuario usuario = new Usuario();
			usuario.setId(Integer.valueOf(id));

			try {
				new UsuarioServico().excluir(usuario);
				
				req.setAttribute("mensagem", "Usuário excluído com sucesso!");
				req.getRequestDispatcher("/sucesso.jsp").forward(req, resp);	
				
			} catch (Exception e) {
				throw new ServletException(e);
			}
		} else if (acao.equals(ALTERACAO)) {
			try {
				List<Usuario> usuarios = new UsuarioServico().listar();
				req.setAttribute("usuarios", usuarios);
				req.getRequestDispatcher("alteracao.jsp").forward(req, resp);
			} catch (Exception e) {
				throw new ServletException(e);
			}
		}else if (acao.equals(CARREGAR_ALTERACAO)) {
			req.getRequestDispatcher("alterar.jsp").forward(req, resp);
		}
	}

Pq vc não usa os padrões FrontController e Command para implementar isso? Ficaria bem bacana. Veja esse link: https://www.devmedia.com.br/padroes-de-projetos-introducao-aos-padroes-front-controller-e-command/30644