论坛首页 Web前端技术论坛

ajax的应用jsonrpc中如何获得一个session ?

浏览 5285 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-03-06  
ajax的应用jsonrpc框架中,在java文件里如何获得到一个session ?
   发表时间:2006-03-06  
也就是说:
现在需要对操作业务权限进行判断,而这些判断在传统的bs结构中一般都是在控制层action中控制的,但在json中只能在service中进行判断,该怎么获得到这个session呢?
0 请登录后投票
   发表时间: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了。
0 请登录后投票
   发表时间:2006-03-07  
很是感谢,但是我有一点还是不很明白?WebStateMach这个类是?谢谢 !
0 请登录后投票
   发表时间:2006-03-07  
噢,随手粘贴上来的。
这个WebStateMach你就理解为是个singleton的类,里面把HttpServletRequest 放在一个ThreadLocal变量里了。

因为客户端直接使用singleton来获取全局实例会影响可测试性,所以封装了一下。让WebStateMach变为可插入的。
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2006-03-08  
ok,呵呵。
谢谢醒来。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics