如何获取并调整HTTP请求中的参数值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计739个文字,预计阅读时间需要3分钟。
导读:本文旨在为使用Jersey框架的开发者提供修改请求参数的参考。在获取参数值后,修改参数值,然后接口接收到空数据。出现此问题的原因是Jersey框架内部的安全机制所致。
具体步骤如下:
1. 使用Jersey框架获取请求参数。
2.修改参数值。
3.接口接收到的数据为空。
原因分析:
Jersey框架内部的安全机制会在处理请求时对参数进行验证,以确保安全性。因此,直接修改参数值可能会导致安全机制拦截,导致接口接收到空数据。
解决方案:
1. 在修改参数值之前,先对参数进行验证,确保其符合预期格式。
2.使用Jersey框架提供的API进行参数修改,而非直接修改参数值。
3.若修改参数值是必须的,可以考虑使用自定义过滤器(Filter)来处理请求,在过滤器中对参数进行修改。
示例代码:
java
// 获取请求参数String paramValue=request.getParameter(paramName);// 验证参数值if (isValid(paramValue)) { // 修改参数值 String newParamValue=modifyParamValue(paramValue);
// 使用Jersey API修改参数 request.setAttribute(paramName, newParamValue);} else { // 参数值不符合预期,抛出异常或返回错误信息}
// 接口处理public void handleRequest() { String paramValue=(String) request.getAttribute(paramName);
// 处理业务逻辑}
注意:在实际开发中,请根据具体需求选择合适的解决方案。
导读:创作本文目的是给使用jersey使用者修改request参数做一定参考的。filter 获值后,修改参数后,接口接受数据为空。出现的原因是jersey框架内的安全机制造成的。可以自己浏览 jersey的API文档。
分享我的工作经历:
request取值我用了三种方式,但是设值后,然并卵,jersey后台取值都不成功:(只要取参数调用了一次,getParamMap()再设值进去就取不到)
我需要过滤取值的正真原因是,因为前台用的angularjs封装调用API时URL,将 ‘%’ 和 ‘&’ 转换成了转义字符,‘bfb;’ ‘^amp;’
var str = json.toString().replace(/&/g, “^amp;”);
var str = str.replace(/%/g, “bfb;”);
,存数据库时,保存的值是 ‘bfb;’ ‘^amp;’,数据回显就不对。我也是郁闷了很久。后来公司的一个大牛看到这个问题。果断把底层的封装改了
var str = json.toString().replace(/&/g, “%26”);
var str = str.replace(/%/g, “%25”);
完美carry,原来压根就不需要修改参数。顿时大悟,大神就是大神。以后还有更多的东西要学。
下面付下取值方法:
当遇到问题时,要换个角度思考问题。可以向公司其他同事问问意见什么的。少走弯路。充分利用时间,提高效率。不加班。
本文共计739个文字,预计阅读时间需要3分钟。
导读:本文旨在为使用Jersey框架的开发者提供修改请求参数的参考。在获取参数值后,修改参数值,然后接口接收到空数据。出现此问题的原因是Jersey框架内部的安全机制所致。
具体步骤如下:
1. 使用Jersey框架获取请求参数。
2.修改参数值。
3.接口接收到的数据为空。
原因分析:
Jersey框架内部的安全机制会在处理请求时对参数进行验证,以确保安全性。因此,直接修改参数值可能会导致安全机制拦截,导致接口接收到空数据。
解决方案:
1. 在修改参数值之前,先对参数进行验证,确保其符合预期格式。
2.使用Jersey框架提供的API进行参数修改,而非直接修改参数值。
3.若修改参数值是必须的,可以考虑使用自定义过滤器(Filter)来处理请求,在过滤器中对参数进行修改。
示例代码:
java
// 获取请求参数String paramValue=request.getParameter(paramName);// 验证参数值if (isValid(paramValue)) { // 修改参数值 String newParamValue=modifyParamValue(paramValue);
// 使用Jersey API修改参数 request.setAttribute(paramName, newParamValue);} else { // 参数值不符合预期,抛出异常或返回错误信息}
// 接口处理public void handleRequest() { String paramValue=(String) request.getAttribute(paramName);
// 处理业务逻辑}
注意:在实际开发中,请根据具体需求选择合适的解决方案。
导读:创作本文目的是给使用jersey使用者修改request参数做一定参考的。filter 获值后,修改参数后,接口接受数据为空。出现的原因是jersey框架内的安全机制造成的。可以自己浏览 jersey的API文档。
分享我的工作经历:
request取值我用了三种方式,但是设值后,然并卵,jersey后台取值都不成功:(只要取参数调用了一次,getParamMap()再设值进去就取不到)
我需要过滤取值的正真原因是,因为前台用的angularjs封装调用API时URL,将 ‘%’ 和 ‘&’ 转换成了转义字符,‘bfb;’ ‘^amp;’
var str = json.toString().replace(/&/g, “^amp;”);
var str = str.replace(/%/g, “bfb;”);
,存数据库时,保存的值是 ‘bfb;’ ‘^amp;’,数据回显就不对。我也是郁闷了很久。后来公司的一个大牛看到这个问题。果断把底层的封装改了
var str = json.toString().replace(/&/g, “%26”);
var str = str.replace(/%/g, “%25”);
完美carry,原来压根就不需要修改参数。顿时大悟,大神就是大神。以后还有更多的东西要学。
下面付下取值方法:
当遇到问题时,要换个角度思考问题。可以向公司其他同事问问意见什么的。少走弯路。充分利用时间,提高效率。不加班。

