Login e Sessão MVC e DAO?

5 respostas
M

Olá galera.
Se possível gostaria de um auxilio, estou desenvolvendo uma aplicação utilizando os padrões DAO e MVC

Preciso implementar o login e guardar os dados do usuario numa sessão e estou com muitas duvidas…

Meu FormJSP:

<html >
<head>

<title>Untitled Document</title>
<style type="text/css">
<!--
.style2 {font-size: 18px}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="get" action="Controller">
  <p>&nbsp;</p>
  <table width="300" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td colspan="3"><div align="center"><span class="style2">Autenticação de Usuário</span></div></td>
    </tr>
    <tr>
      <td width="51">&nbsp;</td>
      <td width="198">&nbsp;</td>
      <td width="51">&nbsp;</td>
    </tr>
    <tr>
      <td>Login:</td>
      <td colspan="2"><label>
        <input type="text" name="txtLogin" id="txtLogin" />
      </label></td>
    </tr>
    <tr>
      <td>Tipo:</td>
      <td colspan="2"><label>
        <select name="selectTipo" id="selectTipo">
          <option value="0">Candidato</option>
          <option value="1">Empresa</option>
        </select>
      </label></td>
    </tr>
    <tr>
      <td>Senha:</td>
      <td colspan="2"><label>
        <input type="password" name="txtSenha" id="txtSenha" />
      </label></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td colspan="2"><input name="btnLogin" type="submit" id="btnLogin" value="Login" /></td>
    </tr>
  </table>
  <label></label>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</form>
</body>
</html>

Meu Servlet - Controller:

import java.io.IOException;
import java.util.HashMap;


import com.projeto.sistemaVagas.comandos.ComandoLoginForm;

@SuppressWarnings("serial")
public class Controller extends HttpServlet {
	
	private HashMap<String, ComandoAbstrato> comandos;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		executaControlador(req, resp);
	}
	


	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		executaControlador(req, resp);

	}
	
	@SuppressWarnings("unchecked")
	private void executaControlador(HttpServletRequest req,
			HttpServletResponse resp) {
		
	
		
		iniciarComandos();
		
		// recuperando ovalor do parametro "do"
		String parametroDo = req.getParameter("do");
		
		
		try {
			
			// recuperando um objeto de comando a ser executado
			ComandoAbstrato comando = comandos.get(parametroDo);
			

			// se o comando (objeto) de "do" for nulo, lança um erro
			if (comando == null)
				throw new Exception();
			
			//if (comandoId == null)
			//	throw new Exception();
			
			// executando uma regra de negócio
			Object resultado = comando.execute(req.getParameterMap());
			
			req.setAttribute("resultado", resultado);
			
			// definindo a pagina de saída
			RequestDispatcher dispatcher = req.getRequestDispatcher(comando.getPaginaSucesso());
			dispatcher.forward(req, resp);
			
		} catch (Exception e) {
			// imprimindo o erro no console
			e.printStackTrace();
		
		}
	}

	private void iniciarComandos() {
		
		// instanciando o hashmap (tabela) de comandos
		comandos = new HashMap<String, ComandoAbstrato>();	
			
	
		// EXIBE JANELA DE LOGIN
		ComandoAbstrato comandoLoginForm = new ComandoLoginForm();
		comandoLoginForm.setPaginaSucesso("/paginas/janelaLoginForm.jsp");
		
		
		
		
	
		
	}
}

Comando que exibe a Janela Login

public class ComandoLoginForm extends ComandoAbstrato{

	public Object execute(Map<String, String[]> parametros) throws Exception {
		System.out.println("ComandoLoginForm");
		
		return null;
	}
}

Preciso verificar se o usuario esta logado cada vez que ele acesse o Servlet( Controller) caso não esteja redirecionar para a pagina de login

5 Respostas

D

Pesquise no Google, referenciando o GUJ, sobre Filter.

danilopelegrino

Exemplo com JSP e Servlet + AuthFilter:

Servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");

        Users user = new Users();
        UserControl ctl = new UserControl();

        user.setLogin(request.getParameter("user"));
        user.setPassWord(request.getParameter("password"));

        if(ctl.verifUser(user)) {
            request.getSession().setAttribute("isLogged", new Boolean(true));
            response.sendRedirect("principal.jsp");
        } else {
            response.sendRedirect("errorLogin.jsp");
        }
        
    }

AuthFilter:

public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
	throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        Object logged = req.getSession().getAttribute("isLogged");
        String url = req.getRequestURL().toString();

        if(logged == null && !url.contains("errorLogin.jsp") && !url.contains("index.jsp") && !url.contains("VerifUserServlet") && !url.contains("images")) {
            res.sendRedirect("index.jsp");
            return;
        }
        
        chain.doFilter(request, response);
	}

obs: Este exemplo mostra como manter um user logado até que a sessao expire. Basta você adaptar a logica de controle de acesso.

M

Perfeito cara, era isso mesmo que eu estava precisando.

danilopelegrino

Magina cara estamos ai :stuck_out_tongue:

Abraço

pedromuyala

Bastante conteúdo sobre MVC poderá ser encontrado aqui!
Tanto teoria quanto implementação! E um pouco de Camadas, Pattern Observer, MVP e Exception’s.

Nesse link vai encontrar um exemplo pronto de login (controle e modelo, páginas 14 e 15) para WEB.
Espero ter ajudado! :wink:

Criado 3 de novembro de 2009
Ultima resposta 24 de abr. de 2010
Respostas 5
Participantes 4