在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息。
最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到post的请求数据呢,方法很多,下面只给出一种方式。

在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完 整的请求路径和请求所有参数列表,

POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过 getRequestURL+getParameterMap()来得到请求完整路径。

package com.xxx
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class GetParams extends HttpServlet {private static final long serialVersionUID = 1L;public GetParams() {super();}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {PrintWriter writer = response.getWriter();writer.println("GET " + request.getRequestURL() + " "+ request.getQueryString());Map<String, String[]> params = request.getParameterMap();String queryString = "";for (String key : params.keySet()) {String[] values = params.get(key);for (int i = 0; i < values.length; i++) {String value = values[i];queryString += key + "=" + value + "&";}}// 去掉最后一个空格queryString = queryString.substring(0, queryString.length() - 1);writer.println("GET " + request.getRequestURL() + " " + queryString);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {PrintWriter writer = response.getWriter();Map<String, String[]> params = request.getParameterMap();String queryString = "";for (String key : params.keySet()) {String[] values = params.get(key);for (int i = 0; i < values.length; i++) {String value = values[i];queryString += key + "=" + value + "&";}}// 去掉最后一个空格queryString = queryString.substring(0, queryString.length() - 1);writer.println("POST " + request.getRequestURL() + " " + queryString);}
}                    

根据上面的代码,稍微改动一下,实现如下:

  /*** 获取POST数据,不支持数组形式数据,一般使用场景是对方使用POST方式传递数据过来* TODO 待完善* @author phpdragon* @date 2014-12-24 下午3:45:22* @return* @description :* @return Map<String,String>* @throws*/@SuppressWarnings("unchecked")private static Map<String, String> getPostData() {Map<String, String> param = new HashMap<String, String>();HttpServletRequest request = ServletActionContext.getRequest();Map<String, String[]> params = request.getParameterMap();for (String key : params.keySet()) {String[] values = params.get(key);for (int i = 0; i < values.length; i++) {param.put(key, values[i]);}}return param;}

虽然有所不足,但对于手上的项目中API接口场景已经满足需求了。

在SSH框架中,如何得到POST请求的URL和参数列表相关推荐

  1. SSH框架中配置log4j的方法

    /*2011年8月29日 09:52:54 by Rush*/ SSH框架中使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需 ...

  2. Python网络爬虫过程中,构建网络请求的时候,参数`stream=True`的使用

    点击上方"Python共享之家",进行关注 回复"资源"即可获赠Python学习资料 今 日 鸡 汤 海内存知己,天涯若比邻. 大家好,我是皮皮. 一.前言 前 ...

  3. 从request中获取上一个请求的url

    在HTTP的request对象中,可以取到HTTP头HEADER,其中有一个是"Referer",通过它,我们可以知道上上个请求的URL,这在某些场合中相当有用. 如在一个列表页中 ...

  4. java如何得到GET和POST请求URL和参数列表(转)

    在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getPa ...

  5. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载...

    (一) 接需求  :   需求相关   (贴图 ) 生成三核对文件 1.新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站.电压等级查询定值单. 2.定值单信息以表格形式展示,根据选择 ...

  6. Flask框架中的四种请求勾子

    在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接:在请求开始时,根据需求进行权限校验:在请求结束时,指定数据的交互格式: 为了让每个视图函数避免编写重 ...

  7. SSH框架中 Spring设置定时器 Quartz

    一,首先下载quartz-1.6.0.jar架包,到lib目录下 二,写你自己定时器业务方法 package com.lbnet.lzx.timing;import org.quartz.JobExe ...

  8. SSH框架中不为人知的细节(一)

    为什么80%的码农都做不了架构师?>>>    一. ModelDriven的运行机制 大家都知道前台表单数据向后台传递的时候,调用的Action会实现ModelDriven接口.伪 ...

  9. SSH框架中怎么使用Hibernate查询一个对象

    2019独角兽企业重金招聘Python工程师标准>>> 使用uniqueResult()查询一个对象,如果有很多对象就使用list()方法 Dao.impl层写这些代码 @Overr ...

最新文章

  1. 直播回顾|结构光3D相机光机核心技术及3D成像性能分析
  2. redis 集群 及 管理初步
  3. Scala Iterator(迭代器)详解
  4. 怎么打开北信源加密u盘_全国首个!北信源?安存推出区块链生态环境监管平台...
  5. 微服务API模拟框架frock介绍
  6. python算法与数据结构-二叉树的代码实现(46)
  7. 如何进行MaxCompute 用户认证?
  8. 如何使用Wondershare Recoverit for Mac从崩溃的 Mac 恢复数据?
  9. quartz2d 实现太极图
  10. 更强大的技术团队和更雄厚的预算,海外高频巨头抢占中国市场,不少本土团队淘汰出局
  11. 2022.4.7网页一直在加载中,无提示
  12. 一个炫酷的前端导航网站
  13. graphpad如何换柱状图与折线图能否混合一起_Graphpad Prism 绘制柱状图与散点图共存图...
  14. 逻辑与计算机设计基础实验报告,逻辑与计算机设计基础--课实验的报告.doc
  15. 软件测试工作的感想怎么写,软件测试工作中的一些感悟
  16. 江苏省基础云计算机服务平台,江苏省一师一优课、一课一名师活动-江苏省基础教育云计算服务平台.doc...
  17. 地址解析(仅供参考与学习)<Java>
  18. 服务器打不开微信怎么办,手机wifi只能用微信,打不开网页怎么处理?
  19. 程序员算法趣味题:落单的男女
  20. 镜像方式如何部署项目

热门文章

  1. [Leetcode] 第289题 生命游戏
  2. python之递归函数和内建函数
  3. Excel VBA(宏):添加宏
  4. [转]Android中handler机制的原理
  5. 数据库原理----学习目标
  6. MFC中访问界面控件的两种方法
  7. Qt-事件循环概念及循环函数详解
  8. 怎么让datagridview中的某一行不可编辑
  9. c++的头文件与源文件
  10. 已知序列求蝶形运算_(数字信号处理选择题.doc