java取cookie遇到中文 tomcat报错_Cookie保存中文用户名报错(500)

在用Cookie保存用户名时候,当用户名是中文的时候服务器报错了。

HTTP Status 500 - An exception occurred processing JSP page /dologin.jsp at line 40

type Exception report

message An exception occurred processing JSP page /dologin.jsp at line 40

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /dologin.jsp at line 40

37: Cookie passwordCookie = new Cookie("password",password);

38: usernameCookie.setMaxAge(86400);

39: passwordCookie.setMaxAge(86400);

40: response.addCookie(usernameCookie);

41: response.addCookie(passwordCookie);

42: }else

43: {

Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)

javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.IllegalArgumentException: Control character in cookie value or attribute.

org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)

org.apache.tomcat.util.http.CookieSupport.isHttpToken(CookieSupport.java:217)

org.apache.tomcat.util.http.ServerCookie.appendCookieValue(ServerCookie.java:186)

org.apache.catalina.connector.Response.generateCookieString(Response.java:1070)

org.apache.catalina.connector.Response.addCookie(Response.java:1012)

org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:380)

org.apache.jsp.dologin_jsp._jspService(dologin_jsp.java:107)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)

javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs.

------------------------------------------------------------------------------分割线------------------------------------------------------------------------------

这里设置request.setCharacterEncoding("utf-8");也改变不了报错

解决方法:Java网络包里面编码和解码的工具类(URLEncoder)

原来的代码

String username = request.getParameter("username");

String password = request.getParameter("password");

Cookie usernameCookie = new Cookie("username",username);

Cookie passwordCookie = new Cookie("password",password);

usernameCookie.setMaxAge(86400);

passwordCookie.setMaxAge(86400);

response.addCookie(usernameCookie);

response.addCookie(passwordCookie);

修改代码

用URLEncoder.encode解决无法在Cookie当中保存中文字符串的问题

String username = URLEncoder.encode(request.getParameter("username"),"utf-8") ;

String password = URLEncoder.encode(request.getParameter("password"),"utf-8");

Cookie usernameCookie = new Cookie("username",username);

Cookie passwordCookie = new Cookie("password",password);

usernameCookie.setMaxAge(86400);

passwordCookie.setMaxAge(86400);

response.addCookie(usernameCookie);

response.addCookie(passwordCookie);

然后还要解码

URLDecoder.decode

注意: 编码解码分别在java.net.URLDecoder 和 java.net.URLEncoder下。记得导入类

关于centos7字体缺失导致项目验证码丢失报错500问题

这个问题是这样的,迁移架构的时候项目验证码刷不出来, 页面报错500, 就像下面那样. tomcat报错是数组越界, 看下面 最诡异的是, 开发那边再三确定代码里面没有问题, 于是我试了一下把war包 ...

webstorm中sass编译时目录或内容包含中文字符报错

ruby版本:ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32] sass版本:Sass 3.4.22 (Selective Steve) ...

记一次 Hibernate 插入数据中文乱码报错解决

错误描述 程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA... 但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行.而且 ...

打开nginx配置的站点报错500

打开站点报错500的原因 有很多,这里只说明一点:nginx 的fastcgi.conf配置引起的问题 环境说明 1 站点目录结构 wwwroot website public application ...

sass中中文注释报错

最近项目中用到了sass来编译css,但是scss代码中写了中文注释后编译报错, 经过查找文档和资料,终于找到了解决办法,即在scss文件顶部加上@charset "utf-8"; ...

Linux虚拟机部署单机solr报错500解决方法之一

HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure: Could not load c ...

[Linux]lnmp一键安装包,访问yii/tp5/laravel的时候,报错500或者空白页面

当你将默认的访问路径改后(nginx.conf中的root 之后的路径),同时应该将/home/wwwroot/default/.user.ini 中的路径也改了! .user.ini 是隐藏文件,需 ...

随机推荐

利用wangEditor获取文章格式和内容

所有古诗词的api

服务商:api.getlove.cn 分类:诗词 更新时间:2016-03 如果接口不满足您的要求,您可以联系qq:2265658022购买完整的数据库 免费apikey:56eab527a0facb ...

AX Dynamic 2012 SSRS 按行数分页

按行数分页 1. Create a new Row Group with the following grouping expression: =Ceiling(RowNumber(Nothing)/ ...

Oracle数据库语句大全

转自:http://blog.sina.com.cn/s/blog_b5d14e2a0101c56z.html ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指 ...

SQL Server使用WITH AS递归查找

很多时候我们会在数据库表中存储树结构的数据,如菜单:一级菜单.二级菜单.三级菜单... 如果树结构层次比较多,如何能够在只知道某节点的情况下,找到此节点下的所有子级数据呢? 在.NET后台可以定义一个 ...

HBase数据字典

数据字典用来存储了系统的元数据.HBase的元数据包括:用户表的定义.表的切分方案.分片的分布情况(即分片分布在哪个regionserver上).分片对应的数据文件和日志文件.其中,分片和数据文件的映 ...

Linux/Unix环境下的make命令详解

https://blog.csdn.net/wxqian25/article/details/21226711

Android 访问地址

private String url_data = "https://api.douban.com/v2/movie/top250?start=0&count=10"; 免 ...

Sysbench-OLTP数据库测试

使用sysbench进行oltp测试之前,需要核对一下sysbench的版本,因为不同版本在使用的参数时,会有一定的差异. mysql dba这本书中的sysbench使用的是0.5的版本,ubunt ...

数列分块入门九题(三):LOJ6283~6285

Preface 最后一题我一直觉得用莫队是最好的. 数列分块入门 7--区间乘法,区间加法,单点询问 还是很简单的吧,比起数列分块入门 7就多了个区间乘. 类似于线段树,由于乘法的优先级高于加法,因此 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值