当你在jsp页面通过JS方式调用restful web services服务提供的某个方法时,往往需要在方法中获取request,response等对象,例如,假如你希望在方法中判断用户输入的验证码与 你保存到session中的值是否一致,那么你就必须要获取request对象。那jersey是如何满足这一需求的呢?很简单,只要通过 @Context标注就可以实现,具体就是在你需要调用的方法中增加一如@Context HttpServletRequest request的参数,调用的时候不用传入这个参数,直接在方法中直接调用request对象即可。
下面是一个检验验证码的例子
pojo类的方法如下:
@GET
@Produces(MediaType.TEXT_PLAIN)
public String validate(@DefaultValue("") @QueryParam("authCode") String authCode,
@Context HttpServletRequest request){
String flag = "false";
String sessionAuthCode = ""+request.getSession().getAttribute("authCode");
if(sessionAuthCode != null && sessionAuthCode.equalsIgnoreCase(authCode)){
flag = "true";
}
return flag;
}
页面通过jquery进行访问:
jQuery.ajax({
type: "GET",
url: '<%=path%>/services/authCodeValidator',
data: "authCode="+authCode,
success: function(data) {
flag = data;
if(flag == "false"){
alert("验证码错误!");
return;
}
}
});