Resultado de pesquisa em arquivo txt

Java

09/09/2015

Ola , pessoal meu nome é Fabiana , sou nova e aventureira na área TI.

Li muitas coisas e comecei a fazer uma pagina em jsp e na verdade o que eu queira

que quando eu na pagina quando eu fisesse uma pesquisa no meu banco postgreSQL ele retornasse somente o resultado em um arquivo txt e possivel?


Segue um exemplo este select traz a data e hora do sistema nao quero que ele mostre na pagina quero que ele gere um arquivo txt , o que mais eu preciso fazer para gerar este bendito arquivo ... rs

obrigado

<%@ page language="java" %>

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>

<%

Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.0.0.10:5432/tecnet", "postgres", "teste" );
cn.setAutoCommit( true );

Statement st = cn.createStatement();
ResultSet rs = st.executeQuery( "SELECT now() AS dtatual" );
while( rs.next() )
{
out.println( "Agora = " + rs.getString( "dtatual" ) );
}
rs.close();
st.close();
cn.close();

%>
Fabiana

Fabiana

Curtidas 0

Melhor post

Jothaz

Jothaz

09/09/2015

Sempre que postar um código use a Tag Code "</>" do primeiro ícone a esquerda.

No caso usando JSP você só vai conseguir gerar um .txt em uma pasta do servidor, não é possível gerar na máquina cliente.

PrintWriter out = new PrintWriter( new FileWriter(getServletContext().getRealPath("sua_pasta") + "/arquivo.txt"));  
out.println("--->Aqui vai o conteúdo<---");  
out.close(); 


getReaPath informa qual o caminho completo para se chegar no diretório "sua_pasta"
GOSTEI 1

Mais Respostas

Fabiana

Fabiana

09/09/2015

Oi , me desculpe não sabia , prometo da próxima vez que postar algo coloco as tags


Agradeço pela resposta, e qual parte do meu código eu coloco estas linhas

Ja sou grata pela ajuda dada

obrigada bjs
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Existem várias formas de fazer o que você quer.

Exemplo 01:

<%  
Date dataAtual = new Date();   
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");  
String dataStr = "Agora = " + sdf.format(dataAtual);  

PrintWriter out = new PrintWriter( new FileWriter(getServletContext().getRealPath("pasta_destino_txt") + "/arquivo.txt"));  
out.println(dataStr);  
out.close(); 
%>  


Exemplo 02:

<%
Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.0.0.10:5432/tecnet", "postgres", "teste" );
cn.setAutoCommit( true );

Statement st = cn.createStatement(); 
ResultSet rs = st.executeQuery( "SELECT now() AS dtatual" );

rs.next()
string resultado = "Agora = " + rs.getString(1);
rs.close();
st.close();
cn.close();

PrintWriter out = new PrintWriter( new FileWriter(getServletContext().getRealPath("pasta_destino_txt") + "/arquivo.txt"));  
out.println(resultado);  
out.close(); 
%>


Usando seu código original:

<%
Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.0.0.10:5432/tecnet", "postgres", "teste" );
cn.setAutoCommit( true );

Statement st = cn.createStatement(); 
ResultSet rs = st.executeQuery( "SELECT now() AS dtatual" );

string resultado = "";

while( rs.next() )
{
	resultado = "Agora = " + rs.getString( "dtatual" );
}
rs.close();
st.close();
cn.close();

PrintWriter out = new PrintWriter( new FileWriter(getServletContext().getRealPath("pasta_destino_txt") + "/arquivo.txt"));  
out.println(resultado);  
out.close(); 

%>


Em todos os casos você terá de criar um pasta como o nome "pasta_destino_txt" (ou qualquer outro nome e claro mudar no código) onde será gravado o arquivo "arquivo.txt" ().

Não testei os códgios então podem ocorrer erros, mas acredito que já ajude a dar uma ideia de como proceder.
GOSTEI 0
Fabiana

Fabiana

09/09/2015

Oi Jothaz, bom dia

Desculpe, como disse sou nova rsrs nisto rs. e isto e uma licao mais nao sei oq esta acontecendo

segue erro

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 29 in the jsp file: /fabiana.jsp
String literal is not properly closed by a double-quote
26: cn.close();
27:
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().getRealPath("c:\") + "/arquivo.txt"));
30: out.println("resultado");
31: out.close();
32:


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:570)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.20 logs.
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Como não tenho como testar sempre passa um erro.

Troque a linha:
PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt"))); 


Com este novo comando vai ser criado um .txt na raiz da pasta, nem precisa criar uma pasta especifica.
GOSTEI 0
Fabiana

Fabiana

09/09/2015

Oi meu codigo agora ficou assim

Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.0.0.10:5432/teste", "postgres", "teste" );
cn.setAutoCommit( true );

Statement st = cn.createStatement();
ResultSet rs = st.executeQuery("select now() AS dtatual  ");
while (rs.next()) 
{
   out.println("dtatual ");
   out.println(rs.getString("dtatual"));

	
}



rs.close();
st.close();
cn.close();

PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt"))); 

out.println(resultado);  
out.close(); 



Porem ainda continua dando estes erros


Segue

type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 29 in the jsp file: /fabiana.jsp
PrintWriter cannot be resolved to a type
26: st.close();
27: cn.close();
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();


An error occurred at line: 29 in the jsp file: /fabiana.jsp
Duplicate local variable out
26: st.close();
27: cn.close();
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();


An error occurred at line: 29 in the jsp file: /fabiana.jsp
PrintWriter cannot be resolved to a type
26: st.close();
27: cn.close();
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();


An error occurred at line: 29 in the jsp file: /fabiana.jsp
FileWriter cannot be resolved to a type
26: st.close();
27: cn.close();
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();


An error occurred at line: 29 in the jsp file: /fabiana.jsp
application cannot be resolved or is not a field
26: st.close();
27: cn.close();
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();


An error occurred at line: 31 in the jsp file: /fabiana.jsp
resultado cannot be resolved to a variable
28:
29: PrintWriter out = new PrintWriter( new FileWriter(getServletContext().application.getRealPath("/arquivo.txt")));
30:
31: out.println(resultado);
32: out.close();
33:
34:


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:570)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.20 logs.
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Olha como disse vai ter de fazer testes, poi eu não tenho como testar, só posso lhe passar a ideia de como deve ser feito.

Tenta assim:

<%@ page import="java.io.*" 




Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.0.0.10:5432/teste", "postgres", "teste" );
cn.setAutoCommit( true );
 
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery("select now() AS dtatual  ");

string resultado = "";
 
while( rs.next() )
{
    resultado = rs.getString( "dtatual" );
}
 
rs.close();
st.close();
cn.close();
 
  String dir = getServletContext().getRealPath("/");
  String arquivo = dir + "/arquivo.txt";
  File file = new File(arquivo);
  Writer writer = new BufferedWriter(new FileWriter(file));
  writer.write(resultado);
  writer.flush();
  writer.close();
%>  
GOSTEI 0
Fabiana

Fabiana

09/09/2015

Oi Jothaz, peco desculpas por estar incomodando, de coração mesmo.. como disse isto e um trabalho, e pra nota kkikikiki

Prometo nao incomoda-lo mais .

Este Try eu coloco em que parte do codigo?
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Alterei o post e coloquei de uma forma mais simples, pois achei que o Try iria complicar.

Tente com o novo conteúdo que postei.
GOSTEI 0
Fabiana

Fabiana

09/09/2015

Ola Jothaz,

Queria primeiramente agradecer do fundo do meu coração pela paciência que vc tem tido comigo. Sei que nao tenho muito em que lhe ajudar mais se precisar de mim pode pedir ;

So queria dizer que ainda continua com erro mais vou ver aqui oq eu faco pois nao quero mais importunar vc

bjs e obrigada
GOSTEI 0
Jothaz

Jothaz

09/09/2015

O código que postei acho que é o mais simples de usar.

Não é incomodo nenhum, num fórum quando alguém se dispõe a ajudar é para solucionar o problema e não é motivo para se sentir importunado.

Post o erro que esta ocorrendo, assim eu ou outra pessoa poderemos ajudá-la.
GOSTEI 0
Fabiana

Fabiana

09/09/2015

segue erro

type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 17 in the jsp file: /outro.jsp
string cannot be resolved to a type
14: Statement st = cn.createStatement();
15: ResultSet rs = st.executeQuery("select now() AS dtatual ");
16:
17: string resultado = "";
18:
19: while( rs.next() )
20: {


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:570)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.20 logs.


Segue codigo


<%@ page import="java.io.*" %>
<%@ page language="java" %>

<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %> 
 
 
<%
Class.forName( "org.postgresql.Driver" );
Connection cn = DriverManager.getConnection( "jdbc:postgresql://10.10.0.10:5432/teste", "postgres", "teste" );
cn.setAutoCommit( true );
  
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery("select now() AS dtatual  ");
 
string resultado = "";
  
while( rs.next() )
{
    resultado = rs.getString( "dtatual" );
}
  
rs.close();
st.close();
cn.close();
  
  String dir = getServletContext().getRealPath("/");
  String arquivo = dir + "/arquivo.txt";
  File file = new File(arquivo);
  Writer writer = new BufferedWriter(new FileWriter(file));
  writer.write(resultado);
  writer.flush();
  writer.close();
%>  
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Altere a linha 17 para isto:
String resultado = null;
GOSTEI 0
Fabiana

Fabiana

09/09/2015

Oi Jothaz meu Deus funcionou...


o arquivo foi salvo.

O ultimo favor.....


O arquivo salvou na pagina onde encontra-se o projeto , seria possível quando eu salvasse ele fosse salve na maquina onde browser esta aberto. e que eu pudesse salvar com nome que eu quisesse;


obrigado
GOSTEI 0
Jothaz

Jothaz

09/09/2015

Uma das primeiras observações que fiz, no primeiro pst, foi que via Web (JSP ou qualquer outa linguagem) não é possível gravar arquivos na máquina clientes por questões de segurança. Então o que você quer não é possível.

Você pode gravar cookies, mas ai o processo é outro é a única forma que conheço.

O que você pode fazer é gravar no server e fazer o download para a máquina do cliente.

Para alterar o nome é só alterar nesta linha:

String arquivo = dir + "/arquivo.txt";


Altere "/arquivo.txt" pelo nome que você quer, mas mantenha a "/".

Seria possível descrever o que você quer?
Qual o objetivo a ser alcançado?
GOSTEI 0
POSTAR