遇到一个问题

在一个地址链接(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代码改为

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

小结

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

encodeURIComponent(SPECIAL_VALUE) 

原文链接

请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式的更多相关文章

  1. WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值

    事故现场 报错"从客户端 中检测到有潜在危险的Request.Form值" //后台代码 namespace Test { [RoutePrefix("TestClass ...

  2. laravel 请求request 接收参数

    获取请求输入 获取所有输入值 你可以使用 all 方法以数组格式获取所有输入值: $input = $request->all(); 获取单个输入值 使用一些简单的方法,就可以从 Illumin ...

  3. 请求(Request)的参数(Param)里包含特殊字符(#等)的正确处理方式

    当调用restful接口,并且url中有参数传过去时,比如http://test.com?param=woshi#miaoyinga. 后台在使用@RequestParam("param&q ...

  4. Jquery的html方法里包含特殊字符的处理

    jqueryhtml()特殊字符 在使用jquery的html()方法时,有时候里面添加的html代码含有一些特殊字符,需要进行转义. 如下例子: inst_html = "<a st ...

  5. sql 字段别名里包含特殊字符

    select ename employee.name from emp; 在数据库查询时,如果列名的别名里特殊符号,报错. select ename 'employee.name' from emp; ...

  6. js 读取包含特殊字符的属性值

    在JS中对象的属性可以通过两种方式访问:object.property和object["property"]. 包含特殊字符的属性只能以此方式访问: object["pr ...

  7. java遍历http请求request的所有参数实现方法

    方法一: 通过程序遍历http请求的所有参数放到hashmap中,用的时候方便了. 如果参数值有中文,那么需要在程序中添加filter转码,或者在下面程序里,对paramValue转码 Map map ...

  8. http请求 url 传递参数(特殊字符)解决方法

    有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码       十六进制值 1. + URL 中+号表示空格 %2B ...

  9. 在OnActionExecuted 获取请求参数的值(包含类类型)

    1.在OnActionExecuting里 获取请求参数的值 比较简单 /// <summary> /// 获取首参数的值 /// </summary> /// <par ...

随机推荐

  1. C# DropDownList绑定添加新数据的几种方法

    第一种:在前台手动绑定(适用于固定不变的数据项) <asp:DropDownList ID="DropDownList1" runat="server"& ...

  2. C#中的多线程-入门

    概述与概念C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多 ...

  3. WebService到底是什么

    WebService到底是什么 http://blog.csdn.net/wooshn/article/details/8069087 张孝祥WebService  http://wenku.baid ...

  4. 浏览器的重绘repaints与重排reflows深入分析

    重绘是一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观,接下来将详细介绍,需要了解的朋友可以参考下: 在项目的交互或视觉评审中,前端同学常常会对一些交互效果质 ...

  5. Python学习笔记(四)Python函数的参数

    Python的函数除了正常使用的必选参数外,还可以使用默认参数.可变参数和关键字参数. 默认参数 基本使用 默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如: ...

  6. [方法] Windows 下SSH远程连接Linux

    考虑到Linux服务器自带SSH服务,并且SSH服务开机启动. 因此,方法如下: 安装putty 输入Linux服务器IP地址 此外,如果想远程重启Linux服务器,在命令行中输入reboot即可.

  7. 论山寨手机与Android联姻的技术基础 【序】

    山寨手机的兴起,离不开 MTK(联发科).MTK为手机制造提供了一揽子解决方案,其中既包括硬件,也包括软件.软件方面最重要的,是操作系统.MTK方案的软件的稳定性非常高,一方面是因为其硬件系统变化不大 ...

  8. 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法

    1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nan ...

  9. Linux下查找最大文件

    当我们应用一段时间以后,Linux可能会变得臃肿了,那么,怎么找出一个“path”下的最大文件呢? 可以使用du命令,如: du -sh [dirname|filename] 如:当前目录的大小: d ...

  10. Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮

    ActionBar在左上角还提供了一个向上或返回的按钮,默认情况下是隐藏的需要在代码中开启: 官方文档:http://wear.techbrood.com/training/basics/action ...