java - getParameter 对于 post 和 get 操作的行为是什么?

标签 java servlets http-post http-get request.querystring

我有一个带有 URL 查询字符串的 java servlet,其中包含如下指令

http://hostname/servet?param1=value1&param2=value2

我也像这样构造 doPost/doGet

public void doPost(HttpServletRequest req, HttpServletResponse res) {
        try {
            doGet(req, res);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public void doGet(HttpServletRequest req, HttpServletResponse res) {
        try {
            String sParam1 = req.getParameter("param1")
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我可以通过 getParameter() 访问每个 queryString 参数以进行 GET 操作。但是当我尝试通过 getParameter() 访问相同的 queryString 进行 POST 操作时,返回值为 NULL。

所以,我想确认 getParameter 对于 POST 和 GET 操作的这种行为。也就是说 getParameter 不返回 POST 操作的 queryString 参数?在 POST 操作的情况下,我是否需要手动剖析查询字符串来处理它们?

最佳答案

对于 GET 方法,参数作为 URL(查询字符串)的一部分发送,对于 POST 方法,参数作为正文的一部分发送,这就是为什么在 POST 情况下您不会获取参数,因为它们是在正文中搜索的,而不是在 URL 中搜索的。

do I need to manually dissect a query string to process them in cases of a POST action ?

是的,如果您要发送查询字符串但使用 POST 方法,则必须自己解析查询字符串,除非您遵守标准并在正文而不是 URL 中发送参数。

关于java - getParameter 对于 post 和 get 操作的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800736/

相关文章:

servlets - Glassfish 4.0.1 上的 Jersey 2.4 : How to inject context HttpServletRequest into ContainerRequestFilter?

java - 如何控制执行servlet后浏览器地址栏中生成的地址?

java - JAXB 内容未实例化

java - 从抽象 Activity 传递 View

java - 使用 Optional wrapper 对多个条件进行 OR

java - 处理文件名已存在以及获取的目录路径无效时的异常情况

flutter - 在 Flutter 中使用 Http Post 上传正文

java - 如何将数据发布到其他服务器中的表单

javascript - jQuery 提交刷新页面

java - 在测试中的 Spring 环境中使用 @EnabledIf 和 spring.profiles.active 属性