Voce programa a mais de um mes? Se sim, e provavel que ja precisou retirar acentos de um String. Para isso, existe a forma feia, chata e antipatica de fazer (que por sinal e a que mais vejo) e a forma bonita e elegante (que raramente vejo). Forma feia, chata e antipaticapublic String removeAcentos (String string){ string = string.replaceAll("[AAAAA]","A"); string = string.replaceAll("[aaaaa]","a"); string = string.replaceAll("[EEEE]","E"); string = string.replaceAll("[eeee]","e"); string = string.replaceAll("IIII","I"); string = string.replaceAll("iiii","i"); string = string.replaceAll("[OOOOO]","O"); string = string.replaceAll("[ooooo]","o"); string = string.replaceAll("[UUUU]","U"); string = string.replaceAll("[uuuu]","u"); string = string.replaceAll("C","C"); string = string.replaceAll("c","c"); string = string.replaceAll("[yy]","y"); string = string.replaceAll("Y","Y"); string = string.replaceAll("n","n"); string = string.replaceAll("N","N"); return string; } Forma bonita e elegantepublic static String removeAcentos(String string) { if (string != null){ string = Normalizer.normalize(string, Normalizer.Form.NFD); string = string.replaceAll("[^\\p{ASCII}]", ""); } return string;}PS. Na verdade existem varias formas de fazer isso. O que MVC?O padrao MVC, de modo geral, divide uma aplicacao em tres camadas: modelo, visao e controle. A visao e responsavel por apresentar a interface ao usuario. O modelo, pela representacao dos objetos do negocio e fornecimento de acesso aos dados do negocio. E o controle define o comportamento da aplicacao interpretando as acoes de modo a realizar as devidas chamadas ao modelo. De modo simplificado, e dito que o controle fornece uma ligacao entre visualizacao e modelo.Esse padrao contribui para uma melhor separacao de tarefas em uma equipe de desenvolvedores. Pois, tendo a aplicacao separada por camadas, e mais facil direcionar pessoas com habilidades diferentes para se concentrarem em partes diferentes do codigo.Veja o diagrama abaixo que demostra a relacao entre modelo, visao e controle onde as linhas solidas indicam associacao direta e as tracejadas indicam associacao indireta.O que e JSF?O JavaServer Faces (JSF), e uma especificacao do framework MVC Java padrao que tem como principal objetivo simplificar a construcao de componentes de interface grafica para aplicacoes web.Desenvolvido pela Java Community Process (JCP), tem como uma de suas caracteristicas mais relevantes a presenca do modelo de componentes, semelhante ao que acontece no desenvolvimento Desktop. Essa orientacao tende a facilitar o reuso pois, alem dos varios componentes ja existentes, e possivel criar novos componentes.Outras caracteristicas marcantes sao a existencia de validadores e conversores de dados (facilitando a manipulacao de tais), navegabilidade entre paginas oferecida por arquivos de configuracao, suporte a internacionalizacao, entre outras.MVC no JSFNo JavaServer Faces, o controle fica por conta de um servlet chamado Faces Servlet, por arquivos de configuracao (ex.: faces-config.xml), pelos Backing Beans e pelos validadores e conversores. O Faces Servlet se designa a receber requisicoes, encaminha-las ao modelo e enviar as respectivas repostas. Os arquivos de configuracao sao responsaveis por definirem a navegacao entre paginas e o mapeamento de acoes. Ja os validadores e conversores permitem um maior controle sobre os dados que serao enviados. Importante ressaltar que, mesmo sendo referenciados nas paginas, os conversores e validadores fazem parte do processamento de eventos, logo tambem fazem parte do controlador e nao da visao.O modelo e constituido por classes de entidade e de negocio, que por sua vez, recebem dados da camada de visualizacao e executam regras pertinentes