Projeto: Forum

Instalação:
---------------
Com relação a instalação, o pacote foi deployado com tranquilidade, sem apresentar maiores problemas. Contudo, não haviam instruções
para criação do banco de dados (instância e usuário). Foi necessário abrir a classe Conexao para fazer a identificação.
Outra sugestão é de, primeiro, não dividir os scripts de banco de dados em vários, pois isso torna trabalhoso uma tarefa relativamente simples. Outra, bem mais importante é de nunca colocar arquivos assim dentro de pacotes como estes. Uma boa pratica seria, ou colocar na
pasta src, ou criar um outro diretório, como resources. 

Uso:
------
Nenhum comentário adicional aqui. Achei legal as páginas terem um Voltar a pagina inicial, e a edição/remoção estarem associadas a lista
de registros, assim o usuário não precisa ficar procurando.

Arquitetura:
---------------
Foi seguido o que o professor pediu, não fazer uso de frameworks prontos, contudo, o uso de uma servlet para cada caso de uso,
tem como consequência, um número excessivo de classes, onde cada uma tem o nome de um método (repare que as servlets tem nomes
que são verbos (alterar, autorizar, etc)), além de o arquivo web.xml ficar enorme. Novamente, isso não está errado, mas um pouco de reflection, poderia ajudar a ter uma servlet somente fazendo o papel de controller (o C do MVC).

Outra coisa importantíssima é a quantidade de código replicado (as chamadas despachaParaPagina), isso poderia estar em uma interface
e, melhor ainda, estar configurada em um arquivo de propriedades onde a servlet controller poderia, pela ação que foi executada, 
cuidas de fazer o dispatch, ou ainda existir uma classe Dispatcher que centralizasse esta responsabilidade.

O uso das classes business foi muito inteligente, pois na hora de se remover as servlets, a lógica fica portável. A única coisa que eu levantaria é, durante a criação da classe, se é recuperado a respectiva dao. Não vejo o motivo de ser necessário fazer isso, já que uma conexão é aberta para cada invocação de método. Uma coisa coisa que eu percebi, é que existe uma classe chamada Conexão, e lá, tem 
um erro clássico no método getConnection(). Este engole a exception, caso esta seja lançada, retornando null. A exception deveria subir para quem chamou, senão uma sequência de NullPointers podem acontecer.

A parte de modelo está bem simples e muito boa. Considerações são em relação ao método adicionaTopico da classe assunto. Por que não receber uma instância de Topico? O encapsulamento se perde da maneira que está implementado.

O uso de daos está bom, porém a implementação comete o mesmo erro da classe Conexao, pois não ecoa nenhum erro de banco de dados. Isso é algo que eu considero como crítico em um sistema de verdade. 

As páginas jsps fazem uso de scriptlets, algo que causa problemas no momento da manutenção do sistema. O uso de taglibs estava liberado (jstl), e, mesmo que não estivesse, na especificação 2.5 de servlets, ficou muito fácil a criação delas. As páginas seguem os
padrões de XHMTL. Uma sugestão seria o uso de css, ao invés da configuração de estilo nas páginas.