From 9aa528eb83faaa6728b3f9d1091037e79e127e13 Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Wed, 20 Jan 2016 15:49:49 +0800 Subject: [PATCH] --- net.html | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/net.html b/net.html index 982eb8703..f3536cbc7 100644 --- a/net.html +++ b/net.html @@ -31,7 +31,7 @@
RedKale自实现的HTTP服务接口并不遵循Java EE规范JSR 340(Servlet 3.1),RedKale提倡的是HTTP+JSON的服务接口方式因此没有实现JSP规范,HTTP+JSON服务接口几乎适合所有类型的客户端(PC应用程序、PC Web、微信H5、移动APP、移动Web)开发。其与JSR 340(Servlet 3.1)的主要区别如下:
1、内置参数的JSON反序列化和响应结果的序列化接口。
2、对数值型的参数和header值提供简易接口。
- 3、不支持JSP,提倡的是HTTP+JSON的服务接口方式。
+ 3、不支持JSP,提倡的是HTTP+JSON接口方式。
4、无HttpSession对象,session可通过配置CacheSource实现。
5、内置文件上传接口,且可自实现断点续传。
6、对响应结果内容可以进行短期缓存从而减少数据源操作的压力。
@@ -101,7 +101,7 @@
}
继承BasedHttpServlet的子类可以使用其自带的鉴权、请求分支、缓存等功能, 一个典型的操作用户HttpServlet:
-@WebServlet({"/user/*"}) //拦截所有 /user/ 开头的请求
+ @WebServlet({"/user/*"}) //拦截所有 /user/ 开头的请求
public class UserServlet extends BaseSerlvet {
@Resource
@@ -138,6 +138,24 @@
UserInfo user = service.findUserInfo(Integer.parseInt(req.getRequstURILastPath()));
resp.finishJson(user); //输出用户信息
}
+
+ //更新个人头像
+ @WebAction(url = "/user/updateface")
+ public void updateface(HttpRequest req, HttpResponse resp) throws IOException {
+ UserInfo user = service.current(req.getSessionid(false));
+ for (MultiPart part : req.multiParts()) { //遍历上传文件列表
+ byte[] byts = part.getContentBytes(5 * 1024 * 1024L); //图片大小不能超过5M,超过5M返回null
+ if (byts == null) {
+ resp.finishJson(new RetResult(102, "上传的文件过大"));
+ } else {
+ BufferedImage img = ImageIO.read(new ByteArrayInputStream(byts));
+ //... 此处处理并存储头像图片
+ resp.finishJson(RetResult.SUCCESS); //输出成功信息
+ }
+ return; //头像图片仅会传一个, 只需要读取一个即可返回
+ }
+ resp.finishJson(new RetResult(103, "没有上传图片"));
+ }
}
如上,所有/user/前缀的请求都会进入UserServlet,若没匹配的则返回505错误,为了方便以后编写前方静动分离服务器转发规则,比较好的习惯是将项目中所有动态Servlet加一个固定前缀,在 application.xml 里设置path即可。
<server protocol="HTTP" port="6060" root="root">