从session 中读出int,怎么读?

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:19:44
String discount=(String)session.getAttribute("discount");
Integer dis=Integer.parseInt(discount);
这两个语句有错吗?
为什么我运行的时候会出现一下错误:
exception

org.apache.jasper.JasperException: For input string: "discount"
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NumberFormatException: For input string: "discount"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
org.apache.jsp.JGS.hotel.pages.show_005fbook_jsp._jspService(show_005fbook_jsp.java:325)
org.apache.jasper.runtime.HttpJspBase.service(Http

我来回答你的问题吧。
String discount=(String)session.getAttribute("discount");
Integer dis=Integer.parseInt(discount);
这两行代码语法没有错,但是容错处理不够。
首先,不是什么String都能parse成int,比如字符串就不行,随便一个字符串"a",或者空串""都不能parse成int,会抛出NumberFormatException异常的。
你的原因应该是discount的值不对,根据log你的discount变量的值就是"discount"。可以用System.out.println(discount);验证一下。

你的session对象discount属性为空才会有这样的异常的。
你可以不转换,先用System.out.println(session.getAttribute("discount"));输出你的属性值,看看有没有正常传递需要的值。

static int parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 你第二行的方法没有看懂,我在API上查到是这个你的方法参数是不是不对啊 你最好把整个程序拿来看看

呵呵 不好意思 不会啊