将文档放到字符流中,发送到客户端时设置HTTP头信息,主要是MIME类型。你自己改相应的设置就可以了,以下是我用过的导出成Excel的。
Content-disposition:attachment;
Content-Type:application/vnd.ms-excel;charset=GB2312;
filename="xxxx.txt"
Content-disposition:attachment;
Content-Type:application/vnd.ms-excel;charset=GB2312;
filename="xxxx.txt"
解决方案 »
- web.xml中定义多个/* mapping
- 关于maxPostSize的问题
- <script>中的var用法
- 关于下载链接URL的加密实现
- 大侠们帮帮忙
- 在Myeclipse中启动tomcat后出现下面的问题,请问这是什么问题,该怎么解决
- 求教高手:每次进行数据库更新后自动回转到查询显示数据界面,数据并没有更新,必须点击刷新按钮才会更新。
- 怎样生成动态树状菜单?
- 调了两天,不知为何出错!!请大虾帮忙!!我做的一个登陆系统,注册与登陆做好了,但是在修改用户信息是出错,不知为何??
- 請問12-22有位兄弟說microsoft for sql2000的jdbc有5個連接的限制是不是真的
- jsp中,提交表单数据的三种方法?
- 有关数据库的问题
里面可以找到
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'
或
EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'现在sql客户端执行通过后在往页面写
import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;public class HelloServlet extends HttpServlet
{
public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.setHeader("Content-disposition", "attachment"); //保存附件
res.setHeader("Content-Type", "text/plain;charset=GB2312"); //附件内容 PrintWriter out = res.getWriter();
out.println("这里就是文本文件的内容。");
out.close();
}
}
* Created on 2004-11-24
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package avs;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
* Created on 2004-11-24
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*//**
* @author ROGER
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class DataBaseConnection
{
private static Connection con;
public DataBaseConnection()
{
con=null;
}
public static Connection getConnection()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
System.out.println("ClassNotFoundException ->"+e);
}
try
{
String url="jdbc:microsoft:sqlserver://192.168.199.100:1433;DatabaseName=mobile;user=sa;password=server" ;
//con = DriverManager.getConnection(url,user,password);
con = DriverManager.getConnection(url);
}
catch(SQLException e)
{
System.out.println("Connection DataBase Exception ->"+e);
con=null;
}
return con;
}
public void setAutoCommit(boolean autoCommit)
{
try
{
con.setAutoCommit(autoCommit);
}
catch (SQLException e)
{
System.out.println("setAutoCommit method exception ->"+e);
}
}
public void rollback()
{
try
{
con.rollback();
}
catch (SQLException e)
{
System.out.println("rollback method exception ->"+e);
}
}
public void commit()
{
try
{
con.commit();
}
catch (SQLException e)
{
System.out.println("commit method exception ->"+e);
}
}
}
/*
* Created on 2004-12-7
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package avs;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;/**
* @author roger
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class PrintData
{
/**
*
*/
private Connection con;
private PreparedStatement pre;
private ResultSet res;
private ResultSetMetaData meta;
private String[] column;
private String sql; //这是要查询的SQL语句
private PrintStream pr;
private String FileName; //这是结果保存时的文件名,这个文件保存在和JSP页面同一个目录下面
public PrintData()
{
con=DataBaseConnection.getConnection();
pre=null;
res=null;
meta=null;
sql=null;
FileName="result.txt";
try
{
pr=new PrintStream(new FileOutputStream(FileName));
}
catch(IOException e)
{
System.out.println("Create File Stream exception ->"+e);
}
}
public void setSQL(String sql)
{
this.sql=sql;
}
public void setFileName(String name)
{
FileName=name;
}
public void getData()
{
try
{
pre=con.prepareStatement(sql);
res=pre.executeQuery() ;
meta=res.getMetaData() ;
int col=meta.getColumnCount() ;
column=new String[col];
for (int i=0;i<col;i++)
{
column[i]=meta.getColumnName(i+1) ;
pr.print(meta.getColumnName(i+1)+"\t") ;
}
pr.print("\n") ;
while (res.next())
{
String str="";
for (int j=0;j<col;j++)
str=str+res.getString(j+1)+"\t";
/*
* 假设这个表里面所有的列都是char类型的,这样做是为了方便这个例子的
* 书写,如果不是的,那你要根据实际情况来调整每一列用哪个getXXX()的
* 方法,比如说如果第二列是int类型的数据,那你在这个for循环中当i=2的
* 时候,就要用getInt()这个方法来取得ResultSet中的值。
*/
str=str+"\n";
pr.print(str) ;//将数据写到文件中去,每次写一条记录
pr.flush() ;
}
pr.close(); //流最后要关闭
}
catch(Exception e)
{
System.out.println("SQLException ->" +e);
}
}
}
<jsp:useBean id="print" class="avs.PrintData" scope="page"/>
<%
print.setFileName("resutlset.txt"); //如果你想改成其它的名字,只要修改那个字符串参数就可以了
print.setSQL("select * from company "); //这一句一定不能少,不然的话是没有数据的
print.getData();//这句就完成了从数据库取数据到txt文件的过程
%>
现在完全给你解决了,是不是该给我加分了?哈哈
url="jdbc:microsoft:sqlserver://192.168.199.100:1433;DatabaseName=mobile;user=sa;password=server" ;print.setSQL("select * from company "); 这两句,改你的数据库的IP地址,数据库名,用户名,密码;
传入的SQL语句;
其余的东西都不需在改的。
i=4的 时候,就要用getInt()这个方法来取得ResultSet中的值,我的表中有3个栏位都是int的,但是这个bean我不会写了,能给我指点一下么,老这么麻烦你真不好意思,先给你加分了,帮了我这么大的忙!万分感谢啊
while (res.next())
{
String name=res.getString("name");
int age=res.getInt("age");
Double salary=res.getDouble("salary");
.......
}
就象这上面的一样,每一列你都写一个getXXX()方法,不用循环。只是要多写几个而己。