• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 317
  • Last Modified:

Java bean gives null pointerexception

Hi,
   I know this is really very very funny.At times my java bean application works and at times it give an exception of null pointer.
I think my problem is that maybe i am not using the get  properly,

I mean, when i use set i use:

<jsp:useBean id="vol" class="com.dhal.volun" scope="session"/>
<jsp:setProperty name="vol" property="*"/>

But i use the getters such as:
       username=vol.getUsername();
       passwd=vol.getPasswd();

Do i need to write something maybe to use it, for example,

jsp:getProperty......

coz, when i look at work folder for the jas_jsp files it seems as if vol is null.

But if write
System.out.println(username);
username gets printed so i am surprise which is null.

Thanks
0
Jasbir21
Asked:
Jasbir21
  • 5
  • 3
2 Solutions
 
kennethxuCommented:
the is nothing wrong of the code that u have posted. the problem is in somewhere else, post the full stack trace of you exception.
0
 
Jasbir21Author Commented:
java.lang.NullPointerException
      org.apache.jsp.jsp2.jas_jsp._jspService(jas_jsp.java:250)
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
      org.apache

When  i looked at the line 250,it is about this line
passwd=rs.getString(2).trim();

The java code for query that i use is....
 try
{

   Class.forName("com.mysql.jdbc.Driver").newInstance();
   connection = DriverManager.getConnection(connectionURL, "", "");
   
   statement=connection.createStatement();
   String myquery="select * from account where username='Jasbir22'";
   rs=statement.executeQuery(myquery);
   boolean anyRecords=rs.next();


   String query="select * from volunteer where username='Jasbir22'";
   statement1=connection.createStatement();
   rs1=statement1.executeQuery(query);
   boolean any=rs1.next();


if(rs1.getString(1).trim().equals(rs.getString(1).trim()))
   {
     username=rs.getString(1).trim();
     passwd=rs.getString(2).trim();
     verify=rs.getString(3).trim();
     .......
    .......//its is alot here
     name=rs1.getString(2).trim();
     day=rs1.getString(19).trim();
     month=rs1.getString(20).trim();
     year=rs1.getString(21).trim();

}


  }//try
 
   catch(SQLException ex ) {  ex.printStackTrace() ; }

   catch( ClassNotFoundException ex ){  ex.printStackTrace() ; }


 %>

0
 
kennethxuCommented:
rs.getString(2) is giving you null.

make sure password is the column number 2 and it is not null for user Jasbir22.
BTW, I'd suggest you to use column name instead of possition, since position might change if you add new columns to database.
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

 
Jasbir21Author Commented:
Hi,
   I don't understand something, does it mean that a column value cannot be null because if its it would give a null pointer,
sometimes, a user would need not enter a column, soit is null

Thnaks
0
 
Jasbir21Author Commented:
when i type describle table,

i get
username|password|verifypassword,

So, i guess it is at column 2 ????

How do i do it the column name way

Thanks
0
 
dualsoulCommented:
>So, i guess it is at column 2 ????
columns are counted from ResultSet, not DB schema, but in your it's the same, because you retrive all columns.

>How do i do it the column name way
just use overloading methods in ResultSet:
    String s=rs.getString("password");

0
 
Jasbir21Author Commented:
When you say column are counted from Resultset,

how are they are counted...

thanks
0
 
kennethxuCommented:
>> When you say column are counted from Resultset.
that's the order in your select statment. it's same if you use select *, but if you use select password, username from..., then the order is password, username.

>> does it mean that a column value cannot be null
NO, the problem is that you are doing a trim(), so if the rs.getString() returns null, you are doing s = null.trim(), of course, you get NPE.
for those columns that could be null in database, you should always use
String s = rs.getString("columnname");
if( s != null ) s=s.trim();
0
 
Jasbir21Author Commented:
......I have been spending days to find out what my problem, and you guys in experts - exchange solved in seconds.Thank you so much....

Regards,
Jasbir
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now