在用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下。记得导入类

Cookie保存中文用户名报错(500)的更多相关文章

  1. Control character in cookie value, consider BASE64 encoding your value , java操作cookie遇到中文会报错的解决方案

    项目当中用到cookie保存中文,但是会报如下错误: Control character in cookie value, consider BASE64 encoding your value 大概 ...

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

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

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

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

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

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

  5. 打开nginx配置的站点报错500

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

  6. spring boot中连接数据库报错500(mybatis)

    spring boot中连接数据库报错500(mybatis) pom.xml中的依赖 <!-- 集成mybatis--> <dependency> <groupId&g ...

  7. sass中中文注释报错

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

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

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

  9. 解决spring-boot配置文件使用加密方式保存敏感数据启动报错No decryption for FailsafeTextEncryptor. Did you configure the keystore correctly

    spring-boot配置文件使用加密方式保存敏感数据 application.yml spring: datasource: username: dbuser password: '{cipher} ...

随机推荐

  1. spark各种模式提交任务介绍

    前言 本文章部分内容翻译自: http://spark.apache.org/docs/latest/submitting-applications.html 应用提交 Spark的bin目录中的sp ...

  2. Vue note

    1.npm run build 时,font:xx/xx "xxxx" 这种样式打包后会无效,只能写成font-size:xxx; line-height:xxx; font-fa ...

  3. logstash 切分tomcat日志

    以下配置是logstash切分tomcat catalina.out日志. http://grok.qiexun.net/  分割时先用这个网站测试下语句对不对,能不能按需切割日志. input { ...

  4. redis+thinkphp5的注册、登陆、关注基础例子

    最近初步接触redis,结合thinkphp5与redis,写了一个用户注册的基础例子,用于学习. 这个例子是结合了兄弟连的redis视频,最后两节的内容写的:https://study.163.co ...

  5. numpy-matrix 方法速查

    ->matrix.T transpose:返回矩阵的转置矩阵 matrix.H hermitian (conjugate) transpose:返回复数矩阵的共轭元素矩阵 matrix.I in ...

  6. vue中v-cloak解决刷新或者加载出现闪烁(显示变量)

    在使用vue绑定数据的时候,渲染页面时会出现变量闪烁,例如 <div class="#app"> <p>{{value.name}}</p> & ...

  7. java使用c3p0连接mysql,写中文数据乱码的问题

    此文说的乱码,是指所有中文的字符都变成了?. 首先,网上普遍搜索到的解决方案都是告诉你要在数据库连接字符串里面增加编码的定义,完整的连接字符串如下: url="jdbc:mysql://12 ...

  8. fiddler抓https包

    若手机端安装证书后还是无法抓取到https请求,请注意手机端证书开关是否开启: eg:ios 设置---通用---关于本机---证书信任设置:开启证书信任 若还是无法抓包,则可以进行一下操作: 给fi ...

  9. C#控件DataGridView笔记

    1.列排序问题,点击列标题行时列会自动排序导致表格混乱.解决办法: 2.改变行高 改变列头行高 ColumnHeadersHeaderSize属性设为 EnableResizing ColumnHea ...

  10. Win10 for Docker 安装 K8S

    win 10 docker安装K8S中遇见的一些问题,记录下来方便自己以后避免采坑. 安装步骤: 1.安装Docker for windows.在docker官方下载,然后傻瓜式安装. 安装成功以后再 ...