From 4bf9f739d8f17481cef9f9e1de9256130ca8fa5f Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Wed, 20 Jan 2016 15:29:12 +0800 Subject: [PATCH] --- net.html | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/net.html b/net.html index 7ce7f0e67..982eb8703 100644 --- a/net.html +++ b/net.html @@ -74,19 +74,18 @@ if (!request.getHeader("User-Agent", "").contains("RedKale-Agent")) { //只用移动APP的接口可以判断User-Agent是否正确 response.addHeader("retcode", "10001"); response.addHeader("retmessage", "User-Agent error"); - response.setStatus(201); - response.finish("{'success':false, 'message':'User-Agent error, must be RedKale-Agent'}"); + response.finish(201, "{'success':false, 'message':'User-Agent error, must be RedKale-Agent'}"); return false; } //可以加上一些统计操作 if (fine) response.setRecycleListener((req, resp) -> { //记录处理时间太长的请求操作 long e = System.currentTimeMillis() - request.getCreatetime(); - if (e > 500) logger.fine("耗时居然用了 " + e + " 毫秒. 请求为: " + request); + if (e > 500) logger.fine("耗时居然用了 " + e + " 毫秒. 请求为: " + req); }); return true; } - //方法标记为@AuthIgnore 的将不会调用authenticate方法 + //标记为@AuthIgnore 的方法将不会调用authenticate方法 //一般用于判断用户的登录态, 返回false表示鉴权失败 //moduleid值来自 @WebServlet.moduleid() 用于定义模块ID; actionid值自来@WebAction.actionid() 用于定义操作ID; 需要系统化的鉴权需要定义这两个值 @Override @@ -100,8 +99,8 @@ return user != null; //存在用户表示登录态正常 } } -
继承BasedHttpServlet的子类可以使用其自带的鉴权、请求分支、缓存等功能, 一个典型的操作用户的HttpServlet: -
+ +继承BasedHttpServlet的子类可以使用其自带的鉴权、请求分支、缓存等功能, 一个典型的操作用户HttpServlet:
@WebServlet({"/user/*"}) //拦截所有 /user/ 开头的请求
public class UserServlet extends BaseSerlvet {
@@ -131,7 +130,8 @@
//获取指定用户ID的用户信息, 请求如: /user/username/43565443
@AuthIgnore
// 默认缓存时间是15秒,BasedHttpServlet会将每个进入该方法的请求的响应结果缓存15秒,缓存命中时不会再进入该方法,过期会清空。
- // @HttpCacheable 必须配合 @AuthIgnore 使用, 因为跟当前用户有关的请求一般不适合所有用户请求。
+ // @HttpCacheable 必须配合 @AuthIgnore 使用, 因为跟当前用户有关的请求一般不适合所有用户请求。
+ // 翻页查询想缓存就需要将翻页信息带进url: /user/query/page:2/size:50 。
@HttpCacheable(timeout = 30) //有效期30秒
@WebAction(url = "/user/userinfo/")
public void userinfo(HttpRequest req, HttpResponse resp) throws IOException {
@@ -139,6 +139,12 @@
resp.finishJson(user); //输出用户信息
}
}如上,所有/user/前缀的请求都会进入UserServlet,若没匹配的则返回505错误,为了方便以后编写前方静动分离服务器转发规则,比较好的习惯是将项目中所有动态Servlet加一个固定前缀,在 application.xml 里设置path即可。
+<server protocol="HTTP" port="6060" root="root">
+ <services autoload="true" />
+ <servlets path="/pipes" autoload="true"/>
+</server>如上, 配置了/pipes 前缀后,客户端发送Servlet请求需带上前缀,请求当前用户信息的url就变成:/pipes/user/myinfo 。
. HttpRequest 对象
public class HttpRequest {