response.addCookie(cookie);报错分析

HTTP Status 500 – Internal Server Error

Type 异常报告

消息 在 [27] 行处理 [/a03-1.jsp] 时发生异常

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception

org.apache.jasper.JasperException: 在 [27] 行处理 [/a03-1.jsp] 时发生异常

24: //    4.璁剧疆cookie鏈夋晥鏈�
25:     cookie.setMaxAge(60*60*24*30);
26: //    5.淇濆瓨cookie
27:     response.addCookie(cookie);
28: %>
29: <script type="text/javascript">window.location.href="a03.jsp"</script>
30: </body>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
	org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182)
	org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115)
	org.apache.catalina.connector.Response.generateCookieString(Response.java:976)
	org.apache.catalina.connector.Response.addCookie(Response.java:928)
	org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:385)
	org.apache.jsp.a03_002d1_jsp._jspService(a03_002d1_jsp.java:148)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note 主要问题的全部 stack 信息可以在 server logs 里查看
Apache Tomcat/9.0.19

java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
[32]是空格,所以在代码里去除空格就行了。

//    1.设置编码
    request.setCharacterEncoding("GB18030");
//    2.获取用户名
    String user= URLEncoder.encode(request.getParameter("user"),"utf-8");
//    3.创建cookie
    Cookie cookie=new Cookie("myCookie",user+"#"+new java.util.Date().toLocaleString());
//    4.设置cookie有效期
    cookie.setMaxAge(60*60*24*30);
//    5.保存cookie
    response.addCookie(cookie);

问题应该出在date上,要重新定义date的格式

<%
//    1.设置编码
    request.setCharacterEncoding("GB18030");
//    2.获取用户名
    String user= URLEncoder.encode(request.getParameter("user"),"utf-8");
//    3.创建cookie
                //   Cookie cookie=new Cookie("myCookie",user+"#"+new java.util.Date().toLocaleString());
                //date 的值有空格,影响保存
//    3.1设置date
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
    String time=simpleDateFormat.format(date);
//    3.2 创建cookie
    Cookie cookie=new Cookie("myCookie",user+"#"+time);
//    4.设置cookie有效期
    cookie.setMaxAge(60*60*24*30);
    cookie.setPath("/");
//    5.保存cookie
    response.addCookie(cookie);
%>
发布了22 篇原创文章 · 获赞 1 · 访问量 867

猜你喜欢

转载自blog.csdn.net/weixin_43651049/article/details/97145580