java开源的olap引擎——mondrian

java开源的olap引擎——mondrian,第1张

Mondrian,是Pentaho的一部分,为一个用Java开发的OLAP服务器,实现了MDX语言、XML解析和JOLAP规范,可以不写SQL就能分析存储于SQL 数据库的庞大数据集,可以封装JDBC数据源并把数据以多维的方式展现出来。

Pentaho,是一个以工作流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。

祥见 http://baike.baidu.com/view/1545333.html

既然是OLAP服务器,我想你应该从OLAP服务器的实现原理看起,这样才能领会更多的东西。从Mondrian的介绍来看,应该是JOLAP规范的实现部分吧。

很简单。

可以手写IO读写(有点麻烦)。

怕麻烦的话使用FileUpload组件 在servlet里doPost嵌入一下代码

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException{

response.setContentType("text/htmlcharset=gb2312")

PrintWriter out=response.getWriter()

//设置保存上传文件的目录

String uploadDir =getServletContext().getRealPath("/up")

System.out.println(uploadDir)

if (uploadDir == null)

{

out.println("无法访问存储目录!")

return

}

//根据路径创建一个文件

File fUploadDir = new File(uploadDir)

if(!fUploadDir.exists()){

if(!fUploadDir.mkdir())//如果UP目录不存在 创建一个 不能创建输出...

{

out.println("无法创建存储目录!")

return

}

}

if (!DiskFileUpload.isMultipartContent(request))

{

out.println("只能处理multipart/form-data类型的数据!")

return

}

DiskFileUpload fu = new DiskFileUpload()

//最多上传200M数据

fu.setSizeMax(1024 * 1024 * 200)

//超过1M的字段数据采用临时文件缓存

fu.setSizeThreshold(1024 * 1024)

//采用默认的临时文件存储位置

//fu.setRepositoryPath(...)

//设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码

fu.setHeaderEncoding("gb2312")

//得到所有表单字段对象的集合

List fileItems = null

try

{

fileItems = fu.parseRequest(request)//解析request对象中上传的文件

}

catch (FileUploadException e)

{

out.println("解析数据时出现如下问题:")

e.printStackTrace(out)

return

}

//处理每个表单字段

Iterator i = fileItems.iterator()

while (i.hasNext())

{

FileItem fi = (FileItem) i.next()

if (fi.isFormField()){

String content = fi.getString("GB2312")

String fieldName = fi.getFieldName()

request.setAttribute(fieldName,content)

}else{

try

{

String pathSrc = fi.getName()

if(pathSrc.trim().equals("")){

continue

}

int start = pathSrc.lastIndexOf('\\')

String fileName = pathSrc.substring(start + 1)

File pathDest = new File(uploadDir, fileName)

fi.write(pathDest)

String fieldName = fi.getFieldName()

request.setAttribute(fieldName, fileName)

}catch (Exception e){

out.println("存储文件时出现如下问题:")

e.printStackTrace(out)

return

}

finally //总是立即删除保存表单字段内容的临时文件

{

fi.delete()

}

}

}

注意 JSP页面的form要加enctype="multipart/form-data" 属性, 提交的时候要向服务器说明一下 此页面包含文件。

如果 还是麻烦,干脆使用Struts 的上传组件 他对FileUpload又做了封装,使用起来更傻瓜化,很容易掌握。

-----------------------------

以上回答,如有不明白可以联系我。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/320782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存