1.分析错误,这个错误是由于后台
response.addCookie(cookie);
时报的错;是由于转化后的json字符中存在特殊字符,32为ascii码,此时你可以去看tomcat启动日志可能会出现如下警告
[http-nio-8080-exec-5] org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader A cookie header was received [XX] that contained an invalid cookie. That cookie will be ignored.Note: further occurrences of this error will be logged at DEBUG level.
那么现在解决问题是,首先需要将对象转化为json,可以使用
ObjectMapper om = new ObjectMapper();
例如:
public class TestJson {
@Test
public void testAdd() throws Exception {
TestTb testTb = new TestTb();
testTb.setName("derry");
ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(Include.NON_NULL);
//将对象转换成json字符串
Writer wr = new StringWriter();
om.writeValue(wr, testTb);
System.out.println(wr.toString());
//转回对象
TestTb r = om.readValue(wr.toString(), TestTb.class);
System.out.println(r.toString());7
}
}
2.如果还继续报错,可能是由于cookie的版本较低,可以选择升级pom依赖,建议如下
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
3.如果还继续报错,Tomcat启动的那个错误,可以修改tomcat的context.xml文件,在最后</context>前加如下
<CookieProcessor className ="org.apache.tomcat.util.http.LegacyCookieProcessor"/>
4.具体加的原因可以参考:http://www.mamicode.com/info-detail-2018600.html