[RESOLVIDO] Salvar nome de usuário na sessão

Olá pessoal, boa tarde.
Estou construindo um pequeno sistema para fazer upload de arquivos pdf’s e apresentar os mesmos. Construí um formulário de login que esta funcionando normalmente, autenticando os usuários de forma correta. No entanto, eu preciso salvar o nome de usuário digitado nesse formulário de login para poder fazer a exibição do arquivo pdf correto e estou com problemas justamente nisso. Já pesquisei em fóruns como salvar o nome de usuário na sessão mas até agora nada funcionou. Agradeço desde já a quem puder me ajudar.
Aqui esta meu formulário de login:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
	<%-- <meta charset="ISO-8859-1"> --%>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Login</title>
	<link href="css/style.css" rel="stylesheet">
	
</head>
<body>
	<c:import url="cabecalho.jsp"/>
	
	<h3>Autenticação de usuário</h3>
	<form action="mvc?logica=AutenticacaoLogic" method="post">
		<table>
			<tr>
				<th>Login</th>
				<td><input  name="login" type="text"/></td>
			</tr>
			<tr>
				<th>Senha: </th>
				<td><input  name="senha" type="password"/></td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="Entrar">
				</td>
			</tr>
		</table>
	</form>
	
	<c:import url="rodape.jsp"/>
</body>

Aqui esta minha tela de busca do arquivo para exibir:

<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>

Insert title here

Envio de arquivo

<% String id = "1"; %>

Ano 2019 2018 Documento Contracheque Informe
Mês Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro

Aqui esta minha classe de autenticação:

package br.com.coren_ba.logica;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.coren_ba.conexao.*;
import br.com.coren_ba.modelo.Funcionario;

public class AutenticacaoLogic implements Logica{

@Override
public String executa (HttpServletRequest req, HttpServletResponse res) throws Exception {
	// TODO Auto-generated method stub
	res.setContentType("text/html");
	String usuario = req.getParameter("login");
	String senha = req.getParameter("senha");
	
	Funcionario funcionario = new Funcionario();
	funcionario.setUsuario(usuario);

	Conexao_AD conecta = new Conexao_AD();
	boolean conectado = conecta.conexao(usuario,senha);
	
	if(conectado == true) {
		QueryRH_AD pesquisarh = new QueryRH_AD();
		if(pesquisarh.autentica(usuario, senha) == true) {
			return "/WEB-INF/jsp/AutenticadoRH.jsp";
		}else {
			QueryTI_AD pesquisati = new QueryTI_AD();
			if(pesquisati.autentica(usuario, senha) == true) {
				return "/WEB-INF/jsp/AutenticadoTI.jsp";
			}else {
				return "/WEB-INF/jsp/Autenticado.jsp";
			}
		}
		
	}else {
		return "/WEB-INF/jsp/Invalido.jsp";
	}
	
}

}

E aqui esta minha classe de exibição dos arquivos:

package br.com.coren_ba.servlet;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.coren_ba.modelo.Funcionario;

@WebServlet("/ApresentaServlet")
public class ApresentaServlet extends HttpServlet {
byte[] arquivo = null;
//File file = new File(“C:\teste.pdf”);
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ano = request.getParameter(“ano”) ;
String mes = request.getParameter(“mes”);
String documento = request.getParameter(“documento”);
String path;
File file;

    Funcionario funcionario = (Funcionario)request.getAttribute("funcionario");
    String nome = funcionario.getUsuario();
    System.out.println(nome);
    
    if(documento.equals("Contracheque")) {
    	path = "C:\\Users\\matheus.souza\\Documents\\Aplicações\\Contracheques\\Arquivos\\Contracheques\\"+ ano +"\\" + mes + "\\";
    	file = new File (path);
    } else {
    	path = "C:\\Users\\matheus.souza\\Documents\\Aplicações\\Contracheques\\Arquivos\\Informes\\"+ ano + "\\";
    	file = new File (path);
    }
    
	try {
		arquivo = fileToByte(file);
	} catch (Exception e) {
		e.printStackTrace();
	}
	response.setContentType("application/pdf");
	response.setContentLength(arquivo.length);
	ServletOutputStream ouputStream = response.getOutputStream();
	ouputStream.write(arquivo, 0, arquivo.length);
	ouputStream.flush();
	ouputStream.close();
}
public static InputStream byteToInputStream(byte[] bytes) throws Exception {
	ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
	return bais;
}
public static byte[] fileToByte(File imagem) throws Exception {
	FileInputStream fis = new FileInputStream(imagem);
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	byte[] buffer = new byte[8192];
	int bytesRead = 0;
	while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
		baos.write(buffer, 0, bytesRead);
	}
	return baos.toByteArray();
}

}

Olá!

Se você quer incluir/consultar objetos na sessão, pode fazer da seguinte forma:

request.getSession().setAttribute("NOME_ATRIBUTO_SESSAO", "OBJETO"); //incluir objeto na sessão

Object attribute = request.getSession().getAttribute("NOME_ATRIBUTO_SESSAO");  //resgatar  objeto da sessão.

Espero ter ajudado.

1 curtida

Obrigado! Funcionou perfeitamente.