`
ajax
  • 浏览: 251816 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Restlet实战(十四)如何在Restlet得到Servlet request和Session

    博客分类:
  • REST
阅读更多

如果你现在已经有一个web系统,而为了一些需求,你集成了restlet来提供Restful web service,那么如何在restlet里面获取放到HttpServletRequest和Session里面的值呢?

 

可以利用ServletCall类来达到目的,我们可以在Resource的init方法里面加入一些代码:

 

@Override
public void init(Context context, Request request, Response response) {
	super.init(context, request, response);

	if(request instanceof HttpRequest){
		HttpServletRequest hsr = ServletCall.getRequest(request);
		
		Enumeration params = hsr.getParameterNames();
		
		HttpSession session = hsr.getSession();
		if(session != null){
			String sessFlag = (String)sess.getAttribute("sessFlag");
		}
		
		String address = hsr.getParameter("address");
	}
}

 

 

同时给出ServletCall的getRequest方法的源代码,以便于加深理解:

 

public static HttpServletRequest getRequest(Request request) {
	HttpServletRequest result = null;

	if (request instanceof HttpRequest) {
		final HttpCall httpCall = ((HttpRequest) request).getHttpCall();

		if (httpCall instanceof ServletCall) {
			result = ((ServletCall) httpCall).getRequest();
		}
	}

	return result;
}

 

最后,我想说的是,使用Restlet和Servlet交互,只是假设你已经有一个web系统,或者说,你已经在这个系统上投资很多,否则,完全可以基于Restlet构建一个新的系统。看看Restlet的开发者Rhett Sutphin 在论坛对一个提问者的解答关于集成Servlet问题中提到的:

 

>
> My Questions:
> 1. What is the best way to integrate my servlet with the RESTLETs?
>
> 2. Is there a way for me to pass java objects from the restlet to the
> servlet? This way in the servlet I can extract java objects and not 
> rely on
> re-assembling the JSON or XML contained in the Response 
> Representation?

For a new application (and assuming I understand what you're trying to 
do), I'd suggest using content negotation in Restlet and not using 
Servlet/JSP at all.

If you really don't want to do that, or if you already have a large 
investment in JSP-based views, I'd extract the business logic into a 
separate layer and make it available to both your servlets and your 
restlets.

 

分享到:
评论
1 楼 qq690388648 2016-04-15  
不错,说的很好!

相关推荐

Global site tag (gtag.js) - Google Analytics