- 浏览: 1151889 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
一 上传
上传即将文件上传到服务器上,在客户端需要写相应的脚本,服务器端需要注册相应的 handle 接受客户端的请求。
原理:
Rap 的上传和下载是通过普通的 web 的方式进行上传和下载的 , 但是和传统的 wen 还不相同
1、 rap 本身就单线程在跑 , 和上传下载的线程不能进行混淆
所以采用的方式如下:
上传:通过传统的方式上传到指定目录 ,rap 不能直接操作上传的文件流 , 如果想获得上传的数据必须要先上传到指定文件 , 然后让 rap 去加载指定文件即可
下载: 先通过 rap 程序生成需要下载的文件到指定目录 , 然后通过 rap 加载成文件流的形式发送给客户端
1 在服务器端注册相应的 handler
// 注册上传处理事件
IServiceManager manager = RWT.getServiceManager ();
IServiceHandler uploadHandler = new UploadServiceHandler();
manager.registerServiceHandler( "uploadServiceHandler" , uploadHandler); //$NON-NLS-1$
2 在客户端的脚本调用
目前的做法是创建上传的 dialog, 在 dialog 里面添加 browser 控件,然后 browser 里书写上传的 javaScript 脚本,脚本请求的 url 格式可以通过以下类似的代码创建:
private String createUploadUrl(String uploadFileName) {
StringBuffer url = new StringBuffer();
url.append(RWT.getRequest ().getContextPath());
url.append(RWT.getRequest ().getServletPath());
url.append( "?" ); //$NON-NLS-1$
url.append(IServiceHandler . REQUEST_PARAM );
url.append( "=uploadServiceHandler" ); //$NON-NLS-1$
url.append( "&fileName=" ); //$NON-NLS-1$
url.append(uploadFileName);
return url.toString();
}
3 服务器端 handler 的写法
public class UploadServiceHandler implements IServiceHandler {
public void service() throws IOException, ServletException {
HttpServletRequest request = RWT.getRequest ();
request.setCharacterEncoding( "UTF-8" );
String fileName = request.getParameter( "fileName" );
FileOutputStream o = null ;
BufferedReader bufferReader = null ;
InputStream in = null ;
try {
in = request.getInputStream();
File f = null ;
try {
f = new File(FileUtil.getTempFilePathAndName (RWT.getRequest ()
.getSession().getAttribute( "userName" ).toString(),
fileName));
} catch (Exception e) {
throw new IOException(e);
}
o = new FileOutputStream(f);
bufferReader = new BufferedReader( new InputStreamReader(in));
String line = null ;
boolean beginWrite = false ;
boolean endWrite = false ;
while ((line = bufferReader.readLine()) != null ) {
if (line.indexOf(PriceDomainBean. class .getName()) != -1) {
if (!beginWrite) {
beginWrite = true ;
} else {
endWrite = true ;
}
}
if (beginWrite) {
o.write((line + "\r\n" ).getBytes());
}
if (endWrite) {
break ;
}
}
} catch (IOException e) {
throw e;
} finally {
if ( null != o) {
o.close();
}
in.close();
if ( null != bufferReader) {
bufferReader.close();
}
}
HttpServletResponse response = RWT.getResponse ();
response.setContentType( "text/html;charset=UTF-8" );
response.getWriter().write(
"<br><br><br><DIV align=center><h2> 上传成功 !</h2>" );
}
}
二 下载
下载和上传采用的方式基本相同,只不过是将服务器文件读取到本地,和上传是一个相反的过程。
1 在服务器端注册相应的 handler
// 注册下载处理事件
IServiceManager manager = RWT.getServiceManager ();
IServiceHandler downloadHandler = new DownloadServiceHandler();
manager.registerServiceHandler( "downloadServiceHandler" , downloadHandler);
2 在客户端节本的调用
在 bowser 控件中书写 js 请求脚本,脚本请求的 url 如下
private String createDownloadUrl(String fileName) {
StringBuffer url = new StringBuffer();
url.append (RWT.getRequest ().getContextPath());
url.append (RWT.getRequest ().getServletPath());
url.append ( "?" );
url.append (IServiceHandler. REQUEST_PARAM );
url.append ( "=downloadServiceHandler" );
url.append ( "&fileName='+encodeURI('" );
url.append (fileName);
url.append ( "')" );
return url.toString();
}
3 服务器端 handler 的写法
public class DownloadServiceHandler implements IServiceHandler {
public void service() throws IOException, ServletException {
String fileName = URLDecoder.decode (
RWT.getRequest ().getParameter( "fileName" ), "UTF-8" );
String filePathAndName = null ;
try {
filePathAndName = FileUtil
.getTempFilePathAndName (RWT.getRequest ().getSession()
.getAttribute( "userName" ).toString(), fileName);
} catch (Exception e) {
throw new IOException(e);
}
File file = new File(filePathAndName);
if (!file.exists()) {
return ;
}
HttpServletResponse response = RWT.getResponse ();
response.setHeader( "pragma" , "no-cache" );
response.setHeader( "cache-control" , "no-cache" );
response.setDateHeader( "Expires" , 0);
response.setCharacterEncoding( "UTF-8" );
response.setContentType( "text/html;charset=UTF-8" );
response.setHeader( "Content-Disposition" , "attachment;filename="
+ new String(fileName.getBytes( "gb2312" ), "ISO8859-1" ));
try {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(filePathAndName));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
byte [] temp = new byte [1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
in.close();
byte [] content = out.toByteArray();
response.setContentLength(content. length );
response.getOutputStream().write(content);
} catch (IOException ioe) {
throw new RuntimeException(ioe);
} finally {
try {
FileUtil.deleteTempFile (RWT.getRequest ().getSession()
.getAttribute( "userName" ).toString(), fileName);
} catch (Exception e) {
throw new IOException(e);
}
}
}
}
发表评论
-
RCP开发者的好去处之ICON系列(持续更新中... ...)
2012-03-31 10:13 1123为了找个合适的图片是不是头大的不像样子了?OK,我现在就 ... -
RAP 整合 Spring (基于 Spring-osgi )
2012-03-31 10:12 1386RAP 介绍请见: http://www.eclipse. ... -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
2012-03-25 14:50 1463引用 在rcp的路径添加了mysql驱动,并添加之cla ... -
解决JFace Dialog中ScrollComposite无法滚动
2012-03-26 10:26 1591今天写了一个Jface的dialog,作为配置界面,其中有 ... -
SWT实现弹出日历控件
2012-03-27 08:00 2583实现像网页上的那种用户单击一个Text框然后框下面出现一个日历 ... -
JFace进度条
2012-03-27 08:01 1114Java代码 someB ... -
getConfigurationElementsFor 无法获得扩展点的信息
2012-03-26 10:27 1092做项目的时候RCP程序在eclipse调试环境下面运行正常 ... -
测试rcp 和 rap 何时触发 组建.addListener(SWT.xxx, new Listener() )的方法
2012-02-24 14:22 1282Java代码 直接通过反射让组建监 ... -
RAP 界面显示不完全的问题
2012-02-24 14:22 1238rap运行第一刷新界面总是刷新不完整,组件错位,后台报Layo ... -
Uploading files with RAP 1.4
2012-02-17 11:37 1617One of the new things in RAP 1. ... -
【RAP】CAS PIA 快速浏览入口地址
2012-02-07 08:23 1238下面的链接是访问RAP应用的入口。有2中方式,图片上已经注明。 ... -
RAP 与 RCP的区别
2012-02-07 08:23 1324RAP 可以让开发人员使用 JAVA API 和按照 E ... -
将Eclipse RAP部署到Tomcat中
2012-02-07 08:23 1140在上次成功将我的RCP项目迁移到浏览器中运行后,开始研究 ... -
RAP(Rich AJAX Platform)的可部署文件下载
2012-02-07 08:24 1138这是我自己做的RAP的可部署文件,可以下载下来解压到Tom ... -
Eclipse rcp/rap 开发经验总结(15) -rap如何使用js
2012-02-03 08:11 14481. 把输入的字符串当 javascript 执行 ... -
Eclipse rcp/rap 开发经验总结(14) -rap 图片、数据缓存处理
2012-02-03 08:10 1514一、概述 在进行了 rap 的基本学习之后,您对 rap ... -
Eclipse rcp/rap 开发经验总结(13) -Rap/Rcp保存按钮处理方式
2012-02-03 08:10 1083一、概述 在做项目的过程中,处理编辑区的保存机制的时候。发 ... -
Eclipse rcp/rap 开发经验总结(12) -Rap 优化之组件的销毁
2012-02-03 08:10 871一、概述 经过几个月的rap 项目实战,总结了一些小 ... -
Eclipse rcp/rap 开发经验总结(11) -rcp/rap与spring ibatis集成
2012-02-03 08:10 13111. rcp/rap 与 spring 集成 Activa ... -
Eclipse rcp/rap 开发经验总结(10) -Rap不同系统间的差异和处理方式
2012-02-01 08:01 1398平常进行 rap 程序开发一般都是在 win ...
相关推荐
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-x86_64.tar.gz) 适用于Linux x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-win32-x86_64.zip) 适用于Windows x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-x86_64.dmg) 适用于macOS x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-aarch64.tar.gz) 适用于Linux aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-aarch64.dmg) 适用于macOS aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
8. **RCP和RAP框架**:Eclipse Rich Client Platform (RCP) 和 Rich Ajax Platform (RAP)允许开发人员构建自己的桌面应用程序和Web应用,2018-09版本可能包含相关更新和改进。 9. **持续集成**:Eclipse与Jenkins、...
Eclipse RCP (Rich Client Platform) 和 RAP (Rich Ajax Platform) 是两个重要的软件开发框架,主要用于构建桌面应用程序和Web应用程序。Eclipse IDE for RCP and RAP 是一个专为这两种平台开发者设计的强大集成开发...
1. 安装Eclipse IDE:首先,你需要下载并安装Eclipse IDE for RCP and RAP Developers版本,这个版本包含了开发RCP应用所需的所有工具。 2. 创建新项目:在Eclipse中,选择“File” -> “New” -> “Project”,然后...
1. 安装Eclipse IDE for RCP and RAP Developers版本,这是一个专门为RCP开发定制的集成开发环境。 2. 创建一个新的Eclipse RCP项目,选择适当的模板,如“Basic”或“Feature-Based”。 3. 配置项目的运行时环境,...
Eclipse IDE for RCP and RAP Developers (includes Incubating components) Version: 2020-06 (4.16.0) Build id: 20200615-1200
9. **插件(Plugins)**:Eclipse RCP的基础是插件模型,每个插件是一个可独立部署的单元,可以提供特定的功能。插件之间通过API进行通信,增强了系统的模块化。 10. **SWT和JFace**:Eclipse RCP使用SWT(Standard ...
要开始RCP开发,首先需要安装Eclipse IDE,然后安装Eclipse RCP和RAP开发工具(PDE)。这些工具提供了一整套用于创建、调试和部署RCP应用的工具集。 **4. 创建第一个RCP应用** 在Eclipse中,通过“新建 -> 项目 -> ...
这通常包括安装Eclipse RAP插件,如RCP和RAP Developer Tools。这些插件提供了项目模板、构建配置和调试工具,帮助我们更轻松地构建和测试RAP应用。 接下来,我们要准备Tomcat服务器。Tomcat是一个流行的开源...
《即时Eclipse 4 RCP开发指南》这本书详细介绍了如何使用Eclipse 4来创建富客户端应用程序(Rich Client Platform,简称RCP),它是一本实践操作指南,包含了超过10个实用的配方。Eclipse 4 RCP是Eclipse平台中用于...
Eclipse For RCP and RAP Developers开发包主要针对开发Eclipse插件,Eclipse RCP(富客户端应用程序),RAP(富客户端ajax应用程序)的程序员,还包含CVS、Mylyn和xml编辑器,EGit分布式版本控制等插件。...
- **安装Eclipse IDE**:首先,你需要安装支持RAP开发的Eclipse版本,如Eclipse for RCP and RAP Developers。 - **安装RAP SDK**:通过Eclipse的软件更新站点添加RAP的SDK。 - **创建新项目**:使用RAP模板创建...
RCP和RAP都是Eclipse基金会开发的框架,前者用于构建桌面应用程序,后者则用于构建Web应用程序。 1. **RCP与RAP的区别** RCP和RAP在结构上非常相似,主要区别在于运行环境和用户交互方式。RCP是桌面应用框架,依赖...
1. Eclipse IDE for RCP and RAP Developers:这是开发Eclipse RCP应用程序的基础。 2. MySQL Connector/J:这是MySQL的Java驱动,用于Java应用程序通过JDBC连接到MySQL数据库。 **步骤一:添加MySQL JDBC驱动** 在...
1. **环境搭建**:安装Eclipse IDE for RCP and RAP Developers,获取必要的RCP开发工具集。 2. **创建新项目**:通过New -> Project -> Plug-in Project,创建一个新的Plug-in项目。 3. **编写代码**:在项目的src...
要开始Eclipse RCP开发,你需要安装Eclipse IDE for RCP and RAP Developers。这个版本的Eclipse包含了创建、调试RCP应用所需的工具和库。通过新建“Plug-in Project”或“RCP Application”项目,可以启动一个新的...