严重:Servlet.service() for servlet [ProfileServlet] 在路径 [/Homework] 的上下文中抛出异常 java.lang.NumberFormatException:null
SEVERE: Servlet.service() for servlet [ProfileServlet] in context with path [/Homework] threw exception java.lang.NumberFormatException: null
我遇到了这个异常,我不知道为什么。它说它的数字格式异常为空。我查看了有关此的其他帖子,但其中 none 解决了我的问题。我的个人资料 class 是一个简单的 class,它具有 id username lastname age 和 favTeam,带有 setter 和 getter 以及一个构造函数。有人知道为什么会这样吗?
我的 Servlet
public ProfileServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
HashMap<Integer, Profile> team = new HashMap<Integer, Profile>();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("application/json; charset=UTF-8");
//String requestUrl = request.getRequestURI();
PrintWriter out = response.getWriter();
Profile test = new Profile();
int id;
test = team.get(id = Integer.parseInt(request.getParameter("ID")));
if(test != null)
{
out.println("ID: " + test.getId());
out.println("name: " + test.getUsername());
out.println("lastname: " + test.getLastname());
out.println("age: " + test.getAge());
out.println("favTeam: " + test.getFavTeam());
}
else
{
//ERROR
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String id = request.getParameter("id");
String age = request.getParameter("id");
int x = 0;
if(id!=null){
try{
x = Integer.parseInt(id);
}catch(Exception e){
}
}
String username = request.getParameter("username");
String lastname = request.getParameter("lastname");
String favTeam = request.getParameter("favTeam");
int numage = 0;
if(id!=null){
try{
numage = Integer.parseInt(age);
}catch(Exception e){
}
}
Profile profile = new Profile(x,username,lastname,favTeam,numage);
team.put(profile.getId(),profile);
}
}
我的.xml
<display-name>Homework</display-name>
<servlet>
<servlet-name>ProfileServlet</servlet-name>
<servlet-class>ntrut.ProfileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProfileServlet</servlet-name>
<url-pattern>/profile</url-pattern>
</servlet-mapping>
</web-app>
您的下一行似乎有错误。
Integer.parseInt(request.getParameter("ID"))
确保从 request.getParameter("ID")
返回的值是一个数字,
你能试着在这行之前打印 request.getParameter("ID")
的值吗?你会看到它不是一个数字值。
我在 doPost 中所做的就是解决我的问题。我必须在我的 doGet 中使用 request.getParameter
做同样的事情
String id = request.getParameter("id");
int x = 0;
if(id!=null){
try{
x = Integer.parseInt(id);
}catch(Exception e){
}
}
test = team.get(x);
我遇到了这个异常,我不知道为什么。它说它的数字格式异常为空。我查看了有关此的其他帖子,但其中 none 解决了我的问题。我的个人资料 class 是一个简单的 class,它具有 id username lastname age 和 favTeam,带有 setter 和 getter 以及一个构造函数。有人知道为什么会这样吗?
我的 Servlet
public ProfileServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
HashMap<Integer, Profile> team = new HashMap<Integer, Profile>();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("application/json; charset=UTF-8");
//String requestUrl = request.getRequestURI();
PrintWriter out = response.getWriter();
Profile test = new Profile();
int id;
test = team.get(id = Integer.parseInt(request.getParameter("ID")));
if(test != null)
{
out.println("ID: " + test.getId());
out.println("name: " + test.getUsername());
out.println("lastname: " + test.getLastname());
out.println("age: " + test.getAge());
out.println("favTeam: " + test.getFavTeam());
}
else
{
//ERROR
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String id = request.getParameter("id");
String age = request.getParameter("id");
int x = 0;
if(id!=null){
try{
x = Integer.parseInt(id);
}catch(Exception e){
}
}
String username = request.getParameter("username");
String lastname = request.getParameter("lastname");
String favTeam = request.getParameter("favTeam");
int numage = 0;
if(id!=null){
try{
numage = Integer.parseInt(age);
}catch(Exception e){
}
}
Profile profile = new Profile(x,username,lastname,favTeam,numage);
team.put(profile.getId(),profile);
}
}
我的.xml
<display-name>Homework</display-name>
<servlet>
<servlet-name>ProfileServlet</servlet-name>
<servlet-class>ntrut.ProfileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProfileServlet</servlet-name>
<url-pattern>/profile</url-pattern>
</servlet-mapping>
</web-app>
您的下一行似乎有错误。
Integer.parseInt(request.getParameter("ID"))
确保从 request.getParameter("ID")
返回的值是一个数字,
你能试着在这行之前打印 request.getParameter("ID")
的值吗?你会看到它不是一个数字值。
我在 doPost 中所做的就是解决我的问题。我必须在我的 doGet 中使用 request.getParameter
做同样的事情 String id = request.getParameter("id");
int x = 0;
if(id!=null){
try{
x = Integer.parseInt(id);
}catch(Exception e){
}
}
test = team.get(x);