3、构建bass服务及model
在bass下新建qb文件夹,在qb下新建waimai服务,和attachment服务,和SimpleFileStore.java类
waimai服务如图建6个action,其中saveBook_order要关联两张表,book_order、user
attachment服务
SimpleFileStore.java
package qb;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.util.List;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils;import com.alibaba.fastjson.JSONObject; import com.justep.baas.action.ActionContext;public class SimpleFileStore {public static JSONObject service(JSONObject params, ActionContext context) throws ServletException, IOException {HttpServletRequest request = (HttpServletRequest)context.get(ActionContext.REQUEST);HttpServletResponse response = (HttpServletResponse)context.get(ActionContext.RESPONSE);if(request.getMethod().equals("GET")){doGet(request, response);}else if(request.getMethod().equals("POST")){doPost(request, response);}return null;}static String docStorePath;static File docStoreDir;static{String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + ".." + File.separator + "..";docStorePath = baasPath +File.separator + "model"+File.separator + "UI2"+File.separator + "bookapp"+ File.separator + "data" + File.separator + "attachmentSimple";File file = new File(docStorePath);//兼容以前存储目录if(file.exists() && file.isDirectory()){docStoreDir = file;}}public static File getDocStoreDir(HttpServletRequest request) {String justepHome = System.getenv("JUSTEP_HOME");if(justepHome != null && docStoreDir == null ){docStorePath = justepHome + "/model/UI2/bookapp/data/attachmentSimple/";File file = new File(docStorePath);if(!file.exists()){file.mkdirs();}docStoreDir = file;}else if(docStoreDir == null){ServletContext context = request.getSession().getServletContext();String path = context.getRealPath("/");docStorePath = path + "../../model/UI2/bookapp/data/attachmentSimple/";File file = new File(docStorePath);if(!file.exists()){file.mkdirs();}docStoreDir = file;}return docStoreDir;}/**get为获取文件 浏览或者下载**/private static void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {getDocStoreDir(request);String operateType = request.getParameter("operateType");if("copy".equals(operateType)){copyFile(request,response);}else{getFile(request,response);}}private static void copyFile(HttpServletRequest request,HttpServletResponse response) throws IOException {String ownerID = request.getParameter("ownerID");String targetOwnerID = request.getParameter("targetOwnerID");String storeFileName = request.getParameter("storeFileName");File file = new File(docStorePath + File.separator +ownerID + File.separator + storeFileName);File targetFile = new File(docStorePath + File.separator + targetOwnerID + File.separator + storeFileName);FileUtils.copyFile(file, targetFile);}private static final int BUFFER_SIZE = 32768 * 8;private static void getFile(HttpServletRequest request,HttpServletResponse response) throws IOException {String ownerID = request.getParameter("ownerID");String realFileName = URLEncoder.encode(request.getParameter("realFileName"),"utf-8");String storeFileName = request.getParameter("storeFileName");String operateType = request.getParameter("operateType");/*String fileSize = request.getParameter("fileSize");*/File file = new File(docStorePath + File.separator +ownerID + File.separator + storeFileName);FileInputStream fis = new FileInputStream(file);/*response.setContentType(mimeType);*//*response.setHeader("Content-Length", String.valueOf(part.getSize()));*/response.setHeader("Cache-Control", "pre-check=0, post-check=0, max-age=0");String fileNameKey = "filename";/*UserAgent ua = com.justep.ui.util.NetUtils.getUserAgent(request);if(Browser.FIREFOX.equals(ua.getBrowser().getGroup())){fileNameKey = "filename*";}*/if("download".equals(operateType)){response.addHeader("Content-Disposition", "attachment; "+fileNameKey+"=\"" + realFileName + "\"");}else{response.addHeader("Content-Disposition", "inline; "+fileNameKey+"=\"" + realFileName + "\"");}OutputStream os = response.getOutputStream();byte[] buffer = new byte[BUFFER_SIZE];try {int read;while ((read = fis.read(buffer)) != -1) {os.write(buffer, 0, read);}} finally {fis.close();}}/**post为上传**/protected static void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {getDocStoreDir(request);String contentType = request.getContentType();try {if("application/octet-stream".equals(contentType)){storeOctStreamFile(request,response);}else if(contentType !=null && contentType.startsWith("multipart/")){storeFile(request,response);}else{throw new RuntimeException("not supported contentType");}} catch (Exception e) {e.printStackTrace();throw new IOException("storeFile异常");}response.getWriter().write("");}private static void storeOctStreamFile(HttpServletRequest request,HttpServletResponse response) throws IOException {InputStream in = null;FileOutputStream storeStream = null;try{String ownerID = request.getParameter("ownerID");String storeFileName = request.getParameter("storeFileName");in = request.getInputStream();String storePath = docStorePath + File.separator + ownerID;getOrCreateFile(storePath);File toStoreFile = new File(storePath + File.separator + storeFileName);storeStream = new FileOutputStream(toStoreFile);IOUtils.copy(in, storeStream);}finally{IOUtils.closeQuietly(in);IOUtils.closeQuietly(storeStream);}}private static File getOrCreateFile(String path) {File storeDir = new File(path);if(!(storeDir.exists() && storeDir.isDirectory())){storeDir.mkdirs();}return storeDir;}public static List<FileItem> parseMultipartRequest(HttpServletRequest request) throws FileUploadException{DiskFileItemFactory factory = new DiskFileItemFactory();ServletContext servletContext = request.getSession().getServletContext();File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");factory.setRepository(repository);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the request@SuppressWarnings("unchecked")List<FileItem> items = upload.parseRequest(request);return items;}private static void storeFile(HttpServletRequest request,HttpServletResponse response) throws Exception {HashMap<String,String> params = new HashMap<String,String>();List<FileItem> items = parseMultipartRequest(request);Iterator<FileItem> iter = items.iterator();FileItem fileItem = null;while (iter.hasNext()) {FileItem item = iter.next();if (item.isFormField()) {String name = item.getFieldName();String value = item.getString();params.put(name, value);} else {/*String fieldName = item.getFieldName();String fileName = item.getName();String contentType = item.getContentType();boolean isInMemory = item.isInMemory();long sizeInBytes = item.getSize();*/fileItem = item;}}if(fileItem != null){String storePath = docStorePath + File.separator + params.get("ownerID");File storeDir = new File(storePath);if(!(storeDir.exists() && storeDir.isDirectory())){storeDir.mkdirs();}File toStoreFile = new File(storePath + File.separator + params.get("storeFileName"));fileItem.write(toStoreFile);}} }
转载于:https://www.cnblogs.com/xiaoxiaohabi/p/6789238.html
3、构建bass服务及model相关推荐
- maven jersey mysql_jersey+maven构建restful服务
一.新建一个Maven Web项目 a) 新建一个简单的Maven项目 b) 将简单的Maven项目转成Web项目 (若没出现further configuration available--或里面的 ...
- (转)构建微服务:Spring boot 入门篇
转自: Spring Boot(一):入门篇 - 纯洁的微笑 - 博客园 : 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 S ...
- protobuf协议_gRPC 使用 protobuf 构建微服务
gRPC 使用 protobuf 构建微服务 发表于 2018-05-02 | 阅读次数: 2997 | 字数统计: 1,805 gRPC 使用 protobuf 通信构建微服务 本文目录: 微服务架 ...
- Spring微服务实战第2章 使用Spring Boot构建微服务
第2章 使用Spring Boot构建微服务 基于微服务的架构具有以下特点. 有约束的--微服务具有范围有限的单一职责集.微服务遵循UNIX的理念,即应用程序是服务的集合,每个服务只做一件事,并只做好 ...
- 使用Spring Boot构建微服务(文末福利)
本文主要内容 学习微服务的关键特征 了解微服务是如何适应云架构的 将业务领域分解成一组微服务 使用Spring Boot实现简单的微服务 掌握基于微服务架构构建应用程序的视角 学习什么时候不应该使用微 ...
- MySQL到Elasticsearch实时同步构建数据检索服务的选型与思考
前言 本文具体探讨 MySQL 数据实时同步到 Elasticsearch (以下简称 ES ) 技术方案和思考,同时使用一定篇幅介绍一些前置知识,从理论到实践,让读者更好的理解这块内容和相关问题.包 ...
- php构建soap_使用PHP构建Web服务
php构建soap 在你开始前 关于本教程 本教程适用于希望通过在PHP中创建Web服务来跳入Web服务潮流PHP程序员. 您将通过使用PHP构建SOAP服务器来构建Web服务. 您将创建的Web服务 ...
- 构建微服务时的三大常见错误
来自:分布式实验室 公众号,作者:解博 想在网上挨骂,最简单的方法就是写点关于微服务架构的东西.每个人对微服务都有自己的一套见解:无论我们是赞扬还是批评,总会有人跳出来强调"你错了&qu ...
- 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!...
写在前面 周末,跟阿里的一个朋友(去年晋升为P9了)聊了很久,聊的内容几乎全是技术,当然了,两个技术男聊得最多的话题当然就是技术了.从基础到架构,从算法到AI,无所不谈.中间又穿插着不少天马行空的想象 ...
最新文章
- r语言聚类分析_技术贴 | R语言pheatmap聚类分析和热图
- 【转】一步一步学Linq to sql(五):存储过程
- oracle ora-12546,window10上登录Oracle时提示ORA-12546:Permission denied
- python numpy库安装 mac_教程|如何在mac上为Python安装XGBoost!
- pgsql_sql查询效率优化
- 云原生的基石,一文读懂容器、Docker、Pod到底是什么!
- Java企业介绍,Hunson 介绍
- python批量提取word指定内容_python 批量提取word应聘登记表数据+情感分析
- Java类的声明详解
- PureMVC框架知识介绍
- PS制作logo图片
- Spring @Value(#{})和@Value(${})
- android系统 vender添加自定义的预编译的应用程序
- 【二维码】新浪开放平台和腾讯开放平台试水
- vue项目中swiper动态更新后无法轮播问题 附带案例代码
- 线性代数可以做些什么?(之一)
- 前端ajax实现分页思路详解
- 速知!二级建造师你满足报考要求吗?
- 2020 Ohayoo游戏开发者沙龙成都站将于10月22日正式启动
- cad app android,迷你CAD免费手机版