新手学习javaweb开发,做了一个登陆注册页面,基本功能已经实现。
我的工程用的最简单的方法,没有用到框架,MVC模式,页面卸载jsp文件里,然后用servlet控制页面跳转和检查页面信息并返回相应信息,问题就出在这里。
我数据库里学号、性别和年龄都用的int类型,在注册页进行注册的时候我性别或者年龄没有选择或者填写,则500错误,报错内容如下:
HTTP Status 500 - null
type Exception report
message null
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:454)
java.lang.Integer.parseInt(Integer.java:527)
com.reg.servlet.RegisterServlet.doGet(RegisterServlet.java:90)
com.reg.servlet.RegisterServlet.doPost(RegisterServlet.java:118)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.
Apache Tomcat/7.0.42
我知道是因为获取页面数据时是String类型,可以为空,而我的int类型不能为空。但是我先判断是否为空,是则我自己给他一个0,如果不是则用页面数据,然后再用set方法吧数据存入我的JavaBean里面。
我处理的代码片段如下:
int uNumber, age, sex;
if(request.getParameter("unumber")!=""){
uNumber = Integer.parseInt((request.getParameter("unumber")));
}else{
uNumber = 0;
wrong4();
response.sendRedirect("http://localhost:8080/Login/Jsp/regist.jsp");
}
if(request.getParameter("age")!=""){
age = Integer.parseInt((request.getParameter("age")));
}else{
age = 0;
}
if(request.getParameter("sex")!=""){
sex = Integer.parseInt(request.getParameter("sex"));
}else{
sex = 0;
}
registDate.setUsername(userName);
registDate.setUserpass(password1);
registDate.setUname(uName);
registDate.setSnumber(uNumber);
registDate.setAge(age);
registDate.setSex(sex);
ILogtool logtool = new Logtool();
int cheak;
cheak = logtool.registCheak(registDate);
if(cheak==1){
wrong6();
response.sendRedirect("http://localhost:8080/Login/Jsp/regist.jsp");
}
else if(cheak==2){
wrong3();
response.sendRedirect("http://localhost:8080/Login/Jsp/regist.jsp");
}else{
right();
response.sendRedirect("http://localhost:8080/Login/index.jsp");
}
难道我这样处理不行??
------解决方案--------------------
java.lang.NumberFormatException: null
你的性别或者年龄没填,就是性别年龄那一块的判断问题
给你的所有判断条件写成这样(判断不等于null写前面)
if(request.getParameter("age")!=null&&!(request.getParameter("age")).equals(""))
......
------解决方案--------------------
null 和“”都要判断。
------解决方案--------------------
if(request.getParameter("age")!=null&&!(request.getParameter("age")).equals(""))