URL特殊字符需转义   1、空格换成加号(+)
2、正斜杠(/)分隔目录和子目录
3、问号(?)分隔URL和查询
4、百分号(%)制定特殊字符
5、#号指定书签
6、&号分隔参数

如果请求的URL中含有 %- _ . ! ~ * ' ( )等转义字符串,后台转义字符的原因: 
如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 
表单的action为list.jsf?act=Go&state=5 
则提交时通过request.getParameter可以分别取得act和state的值。 
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

解决方法:

首先在前台使用encodeURI() 、escape() 、encodeURIComponent() 函数可把字符串作为 URI 进行编码。

js对字符编码有三种方法

  1.escape()   函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

说明: 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。

2.encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

说明:该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

提示和注释 
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

3 .encodeURI() 函数可把字符串作为 URI 进行编码。

说明 
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

总结:

通过对三个函数的分析,我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参 数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。

其次需要在后台进行替换处理:

 public static String replacer(String outBuffer) {String data = outBuffer.toString();try {StringBuffer tempBuffer = new StringBuffer();int incrementor = 0;int dataLength = data.length();while (incrementor < dataLength) {char charecterAt = data.charAt(incrementor);if (charecterAt == '%') {tempBuffer.append("<percentage>");} else if (charecterAt == '+') {tempBuffer.append("<plus>");} else {tempBuffer.append(charecterAt);}incrementor++;}data = tempBuffer.toString();data = URLDecoder.decode(data, "utf-8");data = data.replaceAll("<percentage>", "%");data = data.replaceAll("<plus>", "+");} catch (Exception e) {e.printStackTrace();}return data;}

参考:http://blog.csdn.net/zljjava/article/details/38374455

参考:http://www.cnblogs.com/sunqiang/p/5893531.html

参考:http://stackoverflow.com/questions/11257509/urldecoder-illegal-hex-characters-in-escape-pattern-for-input-string-p

URL请求后台获取不到特殊字符的参数相关推荐

  1. SpringBoot+Vue实现请求后台获取Base64编码的图片验证码并使用Redis缓存实现2分钟内有效

    场景 前端Vue的登录页面,验证码请求后台,后台生成验证码照片后使用Base64编码后, 返回给前端,前端进行显示. 注: 博客: https://blog.csdn.net/badao_liuman ...

  2. 关于ajax请求后台获取下拉列表用的数据

    一.效果展示 有时候需要在页面请求后台获取数据:这里就用到了ajax去后台获取数据: 数据库的数据是这样的: mysql> select * from ocenter_travel_class_ ...

  3. 表单和ajax中的post请求后台获取数据方法(深度好文)

    最近要做后台数据接收,因为前台传来的数据太过于混乱,所以总结了一下前台数据post请求方法,顺便写了下相对应的后台接收方法. 前台主要的contenttype为下面三种:(需要注意的是请求头中data ...

  4. 04 基于Express框架创建的Node后台获取前端传过来的参数

    写在前面 NodeJS后台主要是用来实现后台数据库的增删改查,那么数据库的增删改查是需要依赖我们前端传过来的数据值,也就是说,我们要在数据库中插入一个值,插入的这个过程是NodeJS后台代码来做,具体 ...

  5. 解决url请求参数带中文时后台获取出现乱码问题

    第一种方法: var url = encodeURI(url);前端js先编码一次, 后台:String test=newString(request.getParameter("test& ...

  6. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...

  7. ASP.NET后台获取url

    站在服务器磁盘上的物理路径: HttpRuntime.AppDomainAppPath 虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/H ...

  8. springboot获取多个请求参数_springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...

  9. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest {private static final String BASE_URL = "ht ...

最新文章

  1. LayerDate渲染多个class出现闪现问题的解决
  2. 汇编语言 向内存0:200~0:23f依次传送数据0~63(3fh)
  3. 如何使用CPU来加速你的Linux命令
  4. 几道题帮你搞定数据选择器
  5. 【数学】Chaarshanbegaan at Cafebazaar
  6. epoll示例程序——客户端
  7. 解决windows update失败,正在还原的问题
  8. Ubuntu18.04关闭docker开机自启动
  9. c语言 libxml库函数,使用libxml2库处理xml数据
  10. 斯皮尔曼spearman相关系数
  11. jqgrid列表显示时间控件
  12. css 自制一些小特效
  13. C++ 修改图片格式(后缀)
  14. 没有十年网龄都不知道的事儿
  15. 2021年我的21个感悟(1/3)
  16. mmdetection 安装与使用(win10)
  17. 字节跳动2020届秋招笔试题
  18. 新iPhone9月登场, 5大特色浮出水!
  19. php日历天气预报下载安装手机桌面_日历天气预报下载安装-日历天气预报 安卓版v1.2-PC6安卓网...
  20. 安笙机器人_演员动态周报 | 李晨王晓晨《北京西城故事》、张翰徐璐《若你安好便是晴天》、包贝尔辛芷蕾《我的机器人女友》...

热门文章

  1. PS网页设计教程VI——在Photoshop中创建一个食物博客布局
  2. Kettle Could not initialize class org.apache.batik.bridge.CursorManager
  3. 对话 CTO〡和 PingCAP CTO 黄东旭聊开源数据库新蓝海
  4. mysql 首字母排序_Mysql sql书写之——实现首字母从A-Z排序
  5. Eclipse中导入工程左下角会出现红色的感叹号或者红叉
  6. [深入研究]什么是G3D几何交换格式?
  7. 移动跨平台技术方案总结
  8. 2011 4 1 中国最具影响力的50位商界领袖
  9. java动态规划 硬币_动态规划-硬币问题
  10. 区块链支付和第三方支付有什么区别?秒链付解析