浏览 5285 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-03-06
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-03-06
也就是说:
现在需要对操作业务权限进行判断,而这些判断在传统的bs结构中一般都是在控制层action中控制的,但在json中只能在service中进行判断,该怎么获得到这个session呢? |
|
返回顶楼 | |
发表时间:2006-03-07
我是这样做的。
自己写一个servlet继承JSONRPCServlet。 然后把session放到threadlocal里。 public class AjaxMainServlet extends JSONRPCServlet { /** * */ private static final long serialVersionUID = -5642301748949443897L; public AjaxMainServlet(); { super();; // TODO Auto-generated constructor stub } public void service(HttpServletRequest request, HttpServletResponse response); throws IOException, ClassCastException { (new WebStateMachine(););.setRequest(request);; super.service(request, response);; } } 把web.xml里的JSONRPCServlet 修改为你自己的servlet 然后就可以在自己的程序里通过threadloacl来访问session了。 |
|
返回顶楼 | |
发表时间:2006-03-07
很是感谢,但是我有一点还是不很明白?WebStateMach这个类是?谢谢 !
|
|
返回顶楼 | |
发表时间:2006-03-07
噢,随手粘贴上来的。
这个WebStateMach你就理解为是个singleton的类,里面把HttpServletRequest 放在一个ThreadLocal变量里了。 因为客户端直接使用singleton来获取全局实例会影响可测试性,所以封装了一下。让WebStateMach变为可插入的。 |
|
返回顶楼 | |
发表时间:2006-03-07
edge_hh 写道 噢,随手粘贴上来的。
这个WebStateMach你就理解为是个singleton的类,里面把HttpServletRequest 放在一个ThreadLocal变量里了。 因为客户端直接使用singleton来获取全局实例会影响可测试性,所以封装了一下。让WebStateMach变为可插入的。 最新版的json-rpc-java1.0rc2中,直接在方法签名中加入 HttpServletRequest 类型参数就可以了,比如如下类 public class Test { public static String echoRequest(String str, HttpServletRequest request); { return request.getRequestURI(); + " " + str; } } 在 js 中直接调用 jsonrpc.test.echoRequest("test"); 即可; 方法签名中的HttpServletRequest 参数类型顺序不重要,它可以是第一个参数,也可以是最后一个参数,jsonrpc会智能判断。详细看 http://oss.metaparadigm.com/jsonrpc-1.0/manual.html#local-arg-resolvers |
|
返回顶楼 | |
发表时间:2006-03-08
ok,呵呵。
谢谢醒来。 |
|
返回顶楼 | |