response中添加cookie时错误记录
今天在学习servlet项目中遇到response中添加cookie时IllegalArgumentException错误
出错代码块下图:
百度错误提示:
java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value
由异常可以看出这个问题属于无效参数问题,在看后面的提示内容
An invalid character [44] was present in the Cookie value
cookie中存在无效的字符character [44],所以我们查询ASCII码表可知44表示“,”32表示空格
所以我们只需要将value中的对应字符替换掉即可,或进行编码
其中替换其他符合很简单,直接替换就ok,下面说下编码情况有:
java中URL 的编码函数: java.net .URLEncoder.encode(String s); 解码函数:java.net .URLDecoder.decode(String s);
在javascript 中URL 的编码和解码函数: escape(String s)和unescape(String s) ;
在javascript 中URL 的编码和解码函数: escape(String s)和unescape(String s) ;
在前台: var url="test.jsp?param="+escape('this%is#te=st&o k?+/');
在后台编码:String param=request.getParameter("param"); 解码:System.out.println(URLDecoder.decode(param,"UTF-8"));
在后台编码:String param=request.getParameter("param"); 解码:System.out.println(URLDecoder.decode(param,"UTF-8"));
因此编码修改后的代码块(存的时候编码,取值别忘了解码):