zoukankan      html  css  js  c++  java
  • 请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

    遇到一个问题

    在一个地址链接(URL)里使用  url?param1=val1&param2=val2  的方式传递参数,结果在获取参数值时发现不是当初设定的值。

    具体案例

    以特殊字符井号(#)为例。

    部分参数值丢了

    JS里设置参数

    window.location="some_web_project/xxx.jsp?param_key=abc#xyz";

    Java中取参数值

    Sting paramVal = request.getParameter("param_key");

    你会发现在 Java 中取到的值,不是设定的  abc#xyz ,而是  abc 。井号后面的值没了,包括井号本身。

    为什么呢?

    网上查了下,URL中的井号(#)有其特殊的含义,表示位置(锚点)。

    那怎么办呢?参数里就是有特殊字符,怎么才能拿到数据呢?

    解决之道

    先给参数值编码,再传递即可。

    将上面的JS代码改为

    1 var param_val = encodeURIComponent("abc#xyz");
    2 window.location="some_web_project/xxx.jsp?param_key=" + param_val;

    小结

    如果请求(Request)的参数(Parameter)里包含特殊字符,记得将参数值编码  encodeURIComponent(SPECIAL_VALUE) 

  • 相关阅读:
    poj 3636
    poj 1065 Wooden Sticks
    2017北京国庆刷题Day6 afternoon
    2017北京国庆刷题Day5 afternoon
    2017北京国庆刷题Day3 afternoon
    2017北京国庆刷题Day3 morning
    2017北京国庆刷题Day2 afternoon
    2017北京国庆刷题Day2 morning
    poj2420 A Star not a Tree?
    NOIP2016 愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/memory4young/p/special-character-in-parameter-with-url.html
Copyright © 2011-2022 走看看