Forms 带有查询字符串的HTML表单POST方法

Forms 带有查询字符串的HTML表单POST方法,forms,query-string,struts-1,Forms,Query String,Struts 1,假设我的页面上有一个带有method=POST的表单。 现在这个表单有了一些基本的表单元素,比如textbox、checkbox等 它的操作URL为 我明白这实际上是一件自相矛盾的事情,但我的问题是,它在实践中会起作用吗 所以我的问题是, 因为form方法是POST,我的URL中也有一个querystring(?param=value) 它能正常工作吗?i、 e.我是否能够在接收页面(someAction.do)上检索param=值 假设我使用Java/JSP访问服务器端的值。那么,在服务器端获

假设我的页面上有一个带有method=POST的表单。 现在这个表单有了一些基本的表单元素,比如textbox、checkbox等 它的操作URL为

我明白这实际上是一件自相矛盾的事情,但我的问题是,它在实践中会起作用吗

所以我的问题是,

  • 因为form方法是POST,我的URL中也有一个querystring(?param=value) 它能正常工作吗?i、 e.我是否能够在接收页面(someAction.do)上检索param=值

  • 假设我使用Java/JSP访问服务器端的值。那么,在服务器端获取值的方法是什么呢?访问param=value的值与访问textbox/radio button/checkbox等表单元素的语法相同吗

  • 1) 是的,您将有权访问POST和GET变量,因为您的请求将同时包含这两个变量。因此,您可以相应地使用$\u GET[“param\u name”]和$\u POST[“param\u name”]

    2) 使用JSP,您可以使用以下代码实现这两种功能:

    如果您使用的是EL(JSP表达式语言),还可以通过以下方式获得它们:

    ${param.param_name}
    
    编辑:如果请求查询字符串和POST数据中都存在
    参数名
    ,则它们都将作为值数组返回,第一个是查询字符串

    在这种情况下,
    getParameter(“param_name”)
    将返回它们中的第一个(如上所述),但是可以使用
    getParameterValues(“param_name”)
    方法以以下方式读取这两个值:

    String[] values = request.getParameterValues("param_name"); 
    

    有关详细信息,.

    是。您可以在操作类中检索这些参数。 只需使用getter和setter创建同名属性(在您的示例中为param)

    示例代码

    private String param;
    
    {... getters and setters ...}
    

    执行此操作时,参数值(通过URL传递)将被保存到该特定属性的getter中。通过此操作,您可以使用该值执行任何操作。

    POST方法仅对用户隐藏提交的表单数据。除非使用特殊工具,否则用户无法查看已发送到服务器的数据

    通过
    GET
    方法,任何人都可以查看它拥有哪些数据。您可以轻松地从URL查看数据(例如,通过查看查询字符串中的键值对)

    换言之,这取决于你表现出(也许不重要)通过在表单操作中使用查询字符串将数据发送给用户。例如,在数据表筛选器中。要保持当前分页状态,可以使用
    domain.com/path.do?page=3
    作为
    操作
    。还可以在表单组件中隐藏其他数据,如
    输入
    文本区域
    ,等等


    这两种方法可以在服务器上以相同的方式捕获。例如,在Java中,通过使用
    request.getParameter(“page”)

    是的,您可以在任何页面上访问
    POST
    GET
    变量。要获取这些值,请使用
    print\r($\u-GET);
    print\r($\u-POST)与大多数脚本语言一样,JSP可以单独访问GET和POST变量,也可以作为单个数据集的一部分访问它们……每种方法都有不同的函数(如果我没记错的话,getParameter()方法将同时访问GET和POST参数。Google可以帮助您找到库,分别访问每组参数。)您理解这个问题,并且可以在上面进行解释。但我的问题是:对于查询字符串和表单中出现的键名,哪个值应优先?@ifelsemonkey两者都将返回:第一个是查询字符串中的键名,第二个是POST正文中的键名。还要注意
    getParameter()
    将只返回它们中的第一个(以查询字符串值为准),但您可以使用
    getParameterValues
    以以下方式读取它们:
    string[]lines=request.getParameterValues(“name”);
    了解更多信息。相应地编辑我的答案。