5
respostas

Cadastrar Usuários

boa noite!

Como faço para cadastrar usuários e os perfis de cada usuário? eu gostaria de cadastrar na tabela usuario, role e usuario_role, com as JSPs igual ao cadastro de produto, como eu deveria fazer?

Obrigada!

5 respostas

Oi Lilian, vc vai precisar criar a jsp necessária com os campos relativos ao usuário. No caso o login, senha e as roles disponíveis num select(combobox) para que o preenchedor possa escolher. Tenta fazer o código e posta as dúvidas para a gente.

Alberto, boa noite! obrigada pelo retorno!

Segue a JSP e o controller, sobre o DAO eu fiz uma classe parecida com a classe de DAO do produto, isso está correto?

tentei realizar o cadastro e ele só ocorre na tabela de usuário...

JSP de cadastro de usuários:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<tags:pageTemplate titulo="Cuidando da Atenção">

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

  <!-- attach CSS styles -->
<c:url value="/resources/css" var="cssPath" />    
<link rel="stylesheet" href="${cssPath }/bootstrap.min.css" >
<link rel="stylesheet" href="${cssPath }/bootstrap-theme.min.css" >
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">


<style type="text/css">
body{
    padding-top: 60px;
    }
</style>


</head>
<body>


  <div class="container">

  <h1>Cadastro de Usuários</h1>

     <form:form action="${s:mvcUrl('UC#gravar').build() }" method="POST" commandName="usuario">

        <div class="form-group">
            <label>E-mail</label> 
            <form:input path="email" cssClass="form-control" />           
            <form:errors path="email" />
        </div>
        <div class="form-group">
            <label>Nome</label>            
            <form:input path="nome" cssClass="form-control" />
            <form:errors path="nome" />
        </div>
         <div class="form-group">
            <label>Senha</label>            
            <form:input path="senha" cssClass="form-control" />
            <form:errors path="senha" />
        </div>  
       <div class="form-group">
        <label>Perfil</label>
            <select name='roles' >
        <option value='ADMIN'>ADMIN</option>
        <option value='INSTITUICAO'>INSTITUICAO</option>
        <option value='PROFESSOR'>PROFESSOR</option>
        <option value='ALUNO'>ALUNO</option>
        </select>  
        </div> 

          <button type="submit" class="btn btn-primary">
            Cadastrar
        </button>
    </form:form>
    </div>
 </body>
</html>
</tags:pageTemplate>

usuarioController


package br.com.projeto.cuidandodaatencao.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import br.com.projeto.cuidandodaatencao.dao.UsuariosDAO;
import br.com.projeto.cuidandodaatencao.model.Usuario;



@RequestMapping("/usuarios") //mapeamento da classe
@Controller
public class UsuarioController {

    @Autowired /* spring ejetar o DAO */
    private UsuariosDAO usuariosDAO; 


    @RequestMapping("CadastroUsuario")    
     public ModelAndView form(Usuario usuario){
            ModelAndView modelAndView = new ModelAndView("projeto/CadastroUsuarios");

        return modelAndView;
    }


    @RequestMapping(method=RequestMethod.POST)
    public ModelAndView gravar(Usuario usuario,BindingResult result,
            RedirectAttributes redirectAttributes) {

        usuariosDAO.gravar(usuario);      



        if (result.hasErrors()){
            return form(usuario);
       }

        return new ModelAndView("redirect:usuarios");

        }


     @RequestMapping(method=RequestMethod.GET)
      public ModelAndView listar() {
        List<Usuario> usuario = usuariosDAO.listar();
        ModelAndView modelAndView = new ModelAndView("projeto/ListaDeUsuarios");
        modelAndView.addObject("usuario", usuario);

            return modelAndView;
        }


       @RequestMapping("alteraUsuario")
       public ModelAndView alterar(Usuario usuario) {
       usuariosDAO.alterar(usuario);
       ModelAndView modelAndView = new ModelAndView("projeto/ListaDeUsuarios");
       modelAndView.addObject("usuario", usuario);

       return modelAndView;
        }


       @RequestMapping("removerUsuario")
       public ModelAndView remover(Usuario usuario) {
       usuariosDAO.remover(usuario);
       ModelAndView modelAndView = new ModelAndView("projeto/ListaDeUsuarios");
       modelAndView.addObject("usuario", usuario);

       return modelAndView;
        }


       @RequestMapping("exibeUsuario")    
         public ModelAndView formExibeUsuario(Usuario usuario){
                ModelAndView modelAndView = new ModelAndView("projeto/exibeUsuarios");

            return modelAndView;
        }

     }

DAO

package br.com.projeto.cuidandodaatencao.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import br.com.projeto.cuidandodaatencao.model.Usuario;

@Repository /* guardar os dados no banco de dados*/
@Transactional  /* vai cuidar da transação para o banco de dados */

public class UsuariosDAO{

    @PersistenceContext
    private EntityManager manager;

       public void gravar(Usuario usuario) {
            manager.persist(usuario);
        }

    // metodo para listar as informações contidas no banco de dados dos professores
            public List<Usuario> listar() {
                return manager.createQuery("select usuario from Usuario usuario", Usuario.class).getResultList();
            }


            public void remover(Usuario usuario){    
                manager.createQuery("delete from Usuario usuario where email =" + usuario.getEmail()).executeUpdate();

            }

            public void alterar(Usuario usuario) {
                manager.merge(usuario);
            }

}

Obrigada!!

Opa, aquele select com as roles, vc precisa mapear ele para algum par de getter e setter do seu modelo.. que nem fazemos os preços dos livros na aula. Só que o perfil não é uma enum, então vc vai precisar pegar essas informações passadas, carregar do banco e associar com o usuário.

Desculpa, não entendi, pode ser um pouco mais claro?

Obrigada!

Posso tentar.. Você tem uma classe que chama Perfil ou Role no seu projeto. Então, em função da opção escolhida no select, vc precisa carregar essa Role do banco e adicionar na lista de Roles do usuário.