Aula 09 Objetivo Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Banco de Dados 1. Crie um novo projeto Web com a seguinte estrutura Páginas JSP Servlet Classes Java
2. Crie e implemente a classe Contato com seus atributos e os métodos de cesso (get s e set s). 3. Crie e implemente a classe Evento que contem um atributos do tipo Contato além dos seus métodos de acesso. Exemplo: Atributo do tipo Contato 4. Crie e implemente a classe Agenda que contem uma coleção de Evento, alem do método para adicionar um novo evento e um método get que retorna uma coleção de Evento. 5. Crie e implemente a classe AgendaDAO public class AgendaDAO { private static final String INSERT = "insert into evento (data, horario, local, descricao, nome_contato, email_contato, telefone_contato) values (?,?,?,?,?,?,?)"; public void criaragenda(evento evento) throws ClassNotFoundException, SQLException { Connection conexao = ConectaBanco.getConexao(); PreparedStatement pstmt = conexao.preparestatement(insert); pstmt.setdate(1, new java.sql.date(evento.getdata().gettime())); pstmt.setstring(2, evento.gethorario()); pstmt.setstring(3, evento.getlocal()); pstmt.setstring(4, evento.getdescricao()); pstmt.setstring(5, evento.getcontato().getnome()); pstmt.setstring(6, evento.getcontato().getemail()); pstmt.setstring(7, evento.getcontato().gettelefone()); pstmt.execute(); pstmt.close();
6. Crie e implemente a pagina índex.jsp 7. Crie e implemente a pagina sucessoagenda.jsp 8. Crie e implemente a pagina sucessoevento.jsp
9. Crie e implemente a pagina erro.jsp 10. Crie e implemente a Servlet ControleAgente public class ControleAgenda extends HttpServlet { @Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { try { if (request.getparameter("criarevento")!= null) { //cria um Evento Evento evento = new Evento(); //cria um Contato Contato contato = new Contato(); //recupera as informações do evento String txtdata = request.getparameter("txtdata"); String horario = request.getparameter("txthorario"); String local = request.getparameter("txtlocal"); String Descricao = request.getparameter("txtdescricao"); //recupera informações do contato String nome = request.getparameter("txtnome"); String email = request.getparameter("txtemail"); String telefone = request.getparameter("txttelefone"); /* * cria uma variavel do tipo Date * um objeto anomino de SimpleDateFormat para formatar * e converte uma String */ Date data = new SimpleDateFormat("yyyy/MM/dd").parse(txtData);
//seta os atributos de um evento evento.setdata(data); evento.sethorario(horario); evento.setlocal(local); evento.setdescricao(descricao); //seta os atributos de um contato contato.setnome(nome); contato.setemail(email); contato.settelefone(telefone); //atribui um contato ao evento evento.setcontato(contato); //verifica se já existe uma agenda na sessao if (request.getsession().getattribute("agenda") == null) { //cria uma sessão HttpSession sessao = request.getsession(); //seta uma instancia de Agenda na sessão sessao.setattribute("agenda", new Agenda()); //recupera a agenda da sessao Agenda agenda = (Agenda) request.getsession().getattribute("agenda"); //add um evento na agenda aberta agenda.addevento(evento); //exibe mensagem de sucesso response.sendredirect("sucessoevento.jsp"); else if (request.getparameter("criaragenda")!= null) { //recupera a agenda da sessao Agenda agenda = (Agenda) request.getsession().getattribute("agenda"); //cria um AgentaDAO AgendaDAO agdao = new AgendaDAO(); //passa todos os evendo cria na agenda para o método criaagenda for (Evento evento : agenda.geteventos()) { agdao.criaragenda(evento); //exibe mensagem de sucesso response.sendredirect("sucessoagenda.jsp"); catch (Exception ex) { request.setattribute("erro", ex); request.getrequestdispatcher("/erro.jsp").forward(request, response);
11. Execute e teste a aplicação. Coleção: Objetos que podem armazenar um ou mais outros objetos. Sessão: é um tempo que o usuário permanece ativo no sistema. A cada página visitada, o tempo de sessão é zerado. Quando o tempo ultrapassa um limite demarcado no arquivo web.xml, o cliente perde sua sessão. Exercício: Implemente o método consultar agenda da classe AgendaDAO.