Dúvida em como restringir o tipo de arquivo para download e upload

Boa tarde senhores, estou desenvolvendo uma aplicação com VRaptor 3.4.1 + Hibernate 4.1 e Tomcat6, e tenho uma necessidade de executar o upload de uma planilha, fazer algumas transformações com os dados, persistí-los no banco e depois gerar uma planilha com estes dados transformados, esta planilha é muito grande, e é muito custoso processá-la em memória, por isso estou controlando muito os frameworks que utilizo.

O problema que me encontro com upload é o seguinte, não encontrei um meio de restringir o tipo de arquivo para ser feito o upload (no meu caso xls e xlsx) sem utilizar um framework específico para isso.
E com o download do arquivo no formato xlsx, o gerenciador de download do browser sempre transforma em .zip (já incluí os respectivos mime types no web.xml do Tomcat), é necessário incluir a mesma configuração no web.xml da aplicação?
Utilizava jsf em outro projeto e outra empresa e sei que com o primefaces, por exemplo, era possível fazer esse tipo de configuração.

Toda sugestão me é muito bem vinda.

Grato.

qto ao download vc pode retornar dizendo o tipo. Exemplo:

return new FileDownload(planilha, "application/vnd.ms-excel.12", "minhaPlanilha.xlsx");

ou apontar o caminho do arquivo diretamente.

qto ao upload, vc consegue barrar usando algum plugin javascript como o http://uploadify.com (é isso que o jsf faz por de baixo dos panos)