GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Servlet e arquivos TXT


#1

Olá, Estou tentando fazer um servlet que crie ou edite um arquivo no raspberry pi 3B (Raspbian). Mas estou tendo problemas, se eu chamo o método doPost sem as linhas para criar ou escrever um arquivo ele funciona e responde 200, mas se eu tento criar um arquivo no desktop ou editar, recebo a mensagem de falha na comunicação (essa mensagem provém de um if que fiz no aplicativo) . O problema está do lado do servidor Tomcat, alguém pode me ajudar?

@WebServlet("/pessoas")
public class NovaEmpresaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

String nome="";
String horaIni="";
String horaFim="";
String id="";


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	 nome = request.getParameter("nome");
	 horaIni = request.getParameter("horaIni");
	 horaFim = request.getParameter("horaFim");
	 // 
	//o comando abaixo funciona numa Java application normal, mas não no servlet. Sem ele o retorno é 200
	String sql = "Insere por obséquio" + nome+" "+horaIni+" "+horaFim;
	 try {
			OutputStream fos = new FileOutputStream("C:\\Users\\Ks\\Desktop\\logPorra.txt");
			Writer osw = new OutputStreamWriter(fos);
			BufferedWriter bw = new BufferedWriter(osw);
			bw.write(sql);
			bw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
}

#2

Browser não tem permissão para gravar arquivos diretamente na maquina cliente, so cookies. Salve o arquivo em uma pasta dentro do servidor e depois faca o download para a maquina do cliente.


#3

E esse seu post esta na categoria errada. Ta em infraestrutura->linux. Coloque em programação ->java.
E se você esta no linux mesmo esse seu código nunca iria funcionar mesmo que o browser pudesse criar arquivos no cliente, pois esse caminho “C:\Users\Ks\Desktop\logPorra.txt” nao existe no linux


#4

Não foi classificado errado. O problema de fato estava no linux. Claro que o “C:\…” Foi apenas um exemplo. Foi um questão de permissão que eu resolvi com chmod 777.


#5

Blz fera, da proxima vez coloque o código exatamente como ele está, não posso adivinhar que o “C:\…” é um exemplo.