- Você criou a URI
/relatorio-produtos? - Usou o método HTTP GET apenas?
- O serviço está sem restrições de acesso?
- O serviço devolve o JSON com a estrutura correta?
- É possível filtrar o retorno através de parâmetro
data? - Quando usa o parâmetro serão apresentados produtos lançados após essa data?
- Criou as funcionalidades dentro das classes
RelatorioProdutosControllereProdutoDao?
- Colocou a funcionalidade dentro de uma classe
PedidosServicoController? - Disponibilizou uma nova URL
/pedidos? - Acessou o serviço externo para consumir o JSON?
- Criou uma página
pedidos.jsporganizada na estrutura de pastas já existente? - Na página mostrou os dados sobre os pedidos (ID, Valor, Data Pedido, Titulos)?
- Usou o template já existente?
- Adicionou a URL no menu de navegação?
- Restringiu o acesso, tanto da URL quanto ao link no JSP?
- Adicionou as chaves no
messages.properties(PT, EN)?
- Chamou o controller de
UsuarioControllere organizou as classes nos pacotes existentes? - Apenas usuários com a permissões
ADMINpodem cadastrar e ver usuários cadastrados? - A URL para listar os usuários se chama
/usuários? - Criou o formulário com os dados do usuário (nome, email, senha, senha repetida)
- Implementou as validações através do Spring MVC?
- Validou todos os dados do formulário (obrigatoriadade, min 5 chars para senha)?
- Verificou se as duas senhas são iguais?
- Validou se não há o mesmo usuário cadastrado no banco com o mesmo e-mail?
- Mostrou os erros de validação?
- Após cadastro com sucesso redirecionou para listagem dos usuários?
- Listou os usuários cadastrados mostrando nome e email dentro de uma tabela?
- Usou as
messages.properties(PT, EN) para colocar o texto do menu de navegação?
- Alterou a tabela para incluir as colunas
Rolese o botão de edição? - Criou um formulário para alterar as permissões?
- Usou checkbox para apresentar as permissões?
- Mostrou o nome do usuário no título do formulário?
- Apenas usuários com a permissão
ADMINpodem alterar as permissões? - Implementou a funcionalidade dentro do
UsuarioControllereUsuarioDao?
Aplicação foi testado com JRE8 e JRE9 no Apache Tomcat 7, 8, 9
O projeto usa MySQL e deve existir já o banco casadocodigo (sem senha). O JPA foi configurado para dropar e gerar as tables automaticamente ao iniciar (na classe JPAConfiguration). Caso queira gerar as tabelas manualmente, abaixo desse README tem os comandos SQL.
Para compilar immporte o projeto no Eclipse (Import as Maven Projeto) ou compile na linha de comando usando Maven:
mvn clean package
O projeto sobe automaticamente ativando o profile "dev". Isso foi configurado através da classe ServletSpringMVC no método onStartup(..).
servletContext.setInitParameter("spring.profiles.active", "dev");
Para não usar o profile "dev" basta comentar o InitParameter, no entanto é preciso um paramentro de inicialização no Tomcat (dentro das "Run Configurations...")
"-Dspring.profiles.active=dev"
Ao rodar no Eclipse pelo Tomcat acesse:
http://localhost:8080/casadocodigo
Execute a "URL Mágica" para cadastrar produtos e um usuario padrão (Login: admin@casadocodigo.com.br, Senha: 123456)
Se preferir gerar o banco, seguem os comandos SQL para o banco MySQL:
drop table if exists Produto;
drop table if exists Produto_precos;
drop table if exists Usuario_Role;
drop table if exists Role;
drop table if exists Usuario;
create table Produto (id integer not null auto_increment, dataLancamento datetime, descricao varchar(255), paginas integer not null, sumarioPath varchar(255), titulo varchar(255), primary key (id));
create table Produto_precos (Produto_id integer not null, tipo integer, valor decimal(19,2));
create table Role (nome varchar(255) not null, primary key (nome));
create table Usuario (email varchar(255) not null, nome varchar(255), senha varchar(255), primary key (email));
create table Usuario_Role (email varchar(255) not null, role_nome varchar(255) not null);
alter table Produto_precos add constraint FK_hl4xdmygc7v2x607r4rbs6x3a foreign key (Produto_id) references Produto (id);
alter table Usuario_Role add constraint FK_5nbp4m2sk65w2mq9rfn680cx2 foreign key (role_nome) references Role (nome);
alter table Usuario_Role add constraint FK_4w45e3buitnd4f3ok8jdlrqkh foreign key (email) references Usuario (email);