求助!第一次點(diǎn)擊商品存入cookie中的內(nèi)容是一串奇怪的字符串
運(yùn)行時(shí)報(bào)錯(cuò):
java.lang.NumberFormatException: For input string: "BB318C07B1B138D5500ECA16365941764"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at dao.ItemsDAO.getViewList(ItemsDAO.java:151)
at org.apache.jsp.details_jsp._jspService(details_jsp.java:221)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:472)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:444)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:619)
通過(guò)輸出cookie中的內(nèi)容發(fā)現(xiàn)第一次點(diǎn)擊商品時(shí),存入cookie中的值是形如"BB318C07B1B138D5500ECA16365941764"的字符串,所以在執(zhí)行Integer.parseInt(arr[i])時(shí)會(huì)拋出異常。
但是多點(diǎn)擊幾個(gè)商品,查看cookie中保存的內(nèi)容又是正確的:"BB318C07B1B138D5500ECA16365941764#1#4#2#2#2#1".
導(dǎo)致點(diǎn)擊商品次數(shù)超過(guò)5次才不會(huì)報(bào)錯(cuò)(因?yàn)椴粫?huì)將第一個(gè)神奇的字符串轉(zhuǎn)換成數(shù)字了)
太奇怪了!為什么第一次點(diǎn)擊商品時(shí)存入cookie中的值會(huì)是個(gè)字符串呢???
2020-05-07
感覺(jué)是默認(rèn)編碼不對(duì),你這16進(jìn)制的