日期:2014-05-19  浏览次数:20667 次

struts 如何把从数据库查出来的数据保存在本地
我现在已经完成了保存文件的功能,可以把从数据库查出来的数据显示在页面上,也可以弹出个保存的对话框来把数据保存成文本文件
问题是:我在其他电脑上按保存按钮,保存的对话框是在服务器上打开的,而不是在本地打开的,文本文件也保存在了服务器上,如何让那个对话框在本地打开,把文本文件保存在本地?

------解决方案--------------------
如果是浏览器的话应该是属于客户端的,如果你说的是客户端打开了服务器端的浏览器那可就奇怪了
恕我寡闻了,从未听说过这种现象
不清楚你所说的对话框是不是指浏览器,是的话用confirm应该能解决

先把这个解决了,保存路径也许自然就解决了
------解决方案--------------------
private void exportData(
HttpServletResponse response, List resultList) throws
Exception {
OutputStream bos = response.getOutputStream();
if(filetype!=null&filetype.trim().equals("xls"))
{
response.setContentType("application/x-msexcel;charset=gb2312");
response.addHeader("Content-Disposition",
"attachment;filename=" + filename);
StringUtil.unloadToExcel(bos,resultList,null,"\\|");
}
else
{

response.setContentType("text/html;charset=iso8859-1");
response.addHeader("Content-Disposition",
"attachment;filename=" + DEFAULT_FILENAME);

for (Iterator it = resultList.iterator(); it.hasNext(); ) {
String obj = (String) it.next();
bos.write(obj.getBytes());
bos.write('\r');
bos.write('\n');
}
}


bos.close();
response.setStatus(response.SC_OK);
response.flushBuffer();
}

------解决方案--------------------
这样是做不到的,根据浏览器安全的限制,想想,如果任何一个网站都能随便向你的本地机读、写数据,那还了得--以前的IE5就是一个非常典型的例子

这种问题得求助其他的工具,并且浏览器和用户得信任这些插件
------解决方案--------------------
swt是调用JNI的,所以想要在用户机上打开对话框,那么就需要用户机上安装第三方软件了
有个软件叫SmartSWT
可以实现你要的功能

SmartSWT简介

为了提高传统WEB应用的界面表现能力,RIA技术应时而生,各种RIA平台通过各种手段来提高丰富的图形界面。如Bindows,它使用动态HTML技术模拟Windows控件,还有Flex,直接使用Flash做为WEB应用的表现层,以弥补DHTML技术的不足。

而SmartSWT则是基于SWT的RIA发布平台。它可以将普通的SWT的应用直接发布成为一个可通过客户端浏览器访问的WEB应用,这样就使通过SWT直接开发 富UI的WEB应用成为了现实。不仅如此,基于SWT扩展的许多扩展包也大都可以直接使用,如JFace、GEF等。

SmartSWT和SmartClient不一样,它并不是将SWT应用程序下载到客户端来运行,而是和B/S模式的WEB应用一样,整个应用程序是运行在服务端的,只是运行过程中将图形界面实时显示于客户端的浏览器中,并将客户端的操作事件自动实时返回服务端,触发服务端原SWT应用的事件处理代码进行处理。服务端的SWT应用所进行的数据库操作和文件操作都是相对于服务器端进行的,而不像C/S应用那样,需要客户端自己将数据按自定义的通讯协议传回服务端再进行处理。

SmartSWT底层的通讯是加密而且高效的,在内网的客户端打开服务端的SWT应用,和原来直接在本机使用相比相差不多。相当于将您机器的CPU降一档后运行应用程序的感觉。

SmartSWT目前测试版本是3.1,表示支持SWT3.1的兼容应用程序。

下图是一个SWT应用(SWT Control Example)在SmartSWT平台部署后,客户端通过IE浏览器访问的效果:

安装运行

SmartSWT的测试版仅支持Windows系统,根据其用户手册的说明,它的服务端正式版将支持Linux、Unix等系统。SmartSWT安装运行非常简单,从www.smartswt.com下载SmartSWT31压缩包并解压,在解压目录下有三个子目录SmartSWTClient、SmartSWTServer和WEB。

1. 打开SmartSWTClient目录,运行Setup.exe安装客户端,该程序将在客户端安装一个定制的小型JAVA虚拟机。

2. 打开SmartSWTServer目录,运行Startup.bat,将运行SmartSWT服务端,SmartSWT使用自带的JAVA虚拟机,所以您不用预先准备它。

3. 如果您的客户端和服务端都在同一台机器,则直接进入WEB子目录,用IE打开index.htm文件,大约15秒钟左右即可在IE浏览器中启动SmartSWT桌面,您这时可以通过Start菜单,启动内置的DEMO程序体验一番。

开发SmartSWT应用

开发SmartSWT应用基本上和开发普通的SWT应用相同。您可以使用Eclipse的SWT可视化插件来帮助创建一个SWT应用程序,比较好的有Designer及Eclipse的VisualEditor等。

用于部署到SmartSWT服务器的SWT应用在开发时有些小的限制,幸好这些通常都只是举手之劳:

1. Display的获取必须统一使用Display display = Display.getDefault()方法,不能使用new Deisplay()创建,SmartSWT目前尚不支持多Display的应用,对大多数应用来说这不是问题;

2. 创建的Shell最好必须调用shell.setSize()对其尺寸进行初始化,否则在SmartSWT将默认呈最小化状态;

3. 尽量不要使用非公开的API,因为有少量非公开API,可能SmartSWT并没有实现它;

4. 尽量不要使用其它JNI技术和ActiveX控件,不要使用SWING和AWT等非基于SWT的控件;

5. 避免初始化时一次创建几十上百个控件,这样会造成启动时间较长,应在需要显示时创建控件。

部署SmartSWT应用

SmartSWT的部署一样很简单,只需将调试通过的SWT程序的类文件,按包名目录结构原封不动拷贝至SmartSWTServer的swtapps目录,然后在SmartSWTServer.xml文件中按以下格式注册一下,最后重启SmartSWT