一个GWT的RPC请求时常被忽略的原理

RPC请求的就是一个HttpServlet,

因此我们处理客户端的并发和权限请求时,

不要忽略采用服务端的Session原理去验证客户端请求的身份和权限,

如同jsp请求一样,通过Session则可验证请求对象的身份和权限,

从而达到对某个服务的并发处理,

而不需要过多的其他参数来验证.

要常保持清晰的思路:RPC请求就是对Servlet请求,处理问题时就可以当作请求jsp或普通Servlet那样来处理.

 

例如我们网站项目中的某个RPC服务方法:

  /**
  * 未登录抛出异常
  * 
  * @throws ApplicationException
  */
 private void isVehicleLogin() throws ApplicationException {
	//这里虽然客户端的请求并未传递任何验证身份的参数过来,
	//但是RPC请求该方法时,就是通过Http请求Servlet而来的.
	//因此可以通过服务端的Session对象判断该请求是不是跟Session里面的客户端请求是不是同一个.
	//注意: 这样处理并发的方式一定要跟普通调用方法区分开来,
	//普通调用方法时一定要靠方法的参数来区分调用者的身份,
	//而Http请求Servlet的的服务方法时,则可以通过服务端的Session对象判断请求者的身份.
	//一定要区分好Servlet的服务方法与普通对象的方法
  	UserCore loginUserCore =  getHttpSession().getAttribute("login_user_code");
 	 if (loginUserCore == null) {
   		throw new ApplicationException("未登陆,非法操作");
  	}
 }

 

如果是普通对象的方法:

  /**
  * 未登录抛出异常
  * 
  * @throws ApplicationException
  */
 private void isVehicleLogin(int userID) throws ApplicationException {
//如果是普通对象的方法,在区分调用者的身份时,只能通过方法参数的形式去区分
  UserCore loginUserCore =  findUserCodeFromDB(userID);
  if (loginUserCore == null) {
   throw new ApplicationException("未登陆,非法操作");
  }
 }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值