DZone ForumsDZone Forums  

Go Back   DZone Forums > Community > Languages & Frameworks > Java
FAQ Members List Calendar Search Today's Posts Mark Forums Read

 
LinkBack Thread Tools Display Modes

Topic: Unable to pass arraylist data from servlet to jsp.
Old 07-14-2008, 06:14 AM   #1 (permalink)
Member
 
Join Date: Jul 2008
Posts: 2
Hello Everyone,

I am a new java user and i have a problem where i have made a servlet "Conn.java".
In which i have established a connection and i m retrieving data from database using dsn.

This data i store in a array list called rowsetArray.
when i run just the servlet with " out.println("<h1>name======" + rowsetArray + "</h1>"); "
statement in it; it displays all the records in the arraylist on the explorer.

but when i uncomment the above line and try to pass the array list data to my index.jsp then i am
unable to do so.
I get null pointer exception error.

below is my servlet code and follwed by index.jsp code.

---------------------------------Conn.java--------------
package IRIS;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.String;
import java.sql.*;
import java.util.*;
import javax.servlet.*;

/**
*
* @author vishal
* @version
*/
public class Conn extends HttpServlet {


public Conn()
{

}


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ArrayList rowArray = new ArrayList();
ArrayList rowsetArray = new ArrayList();
Connection con;
PreparedStatement ps;
Statement stmt=null;
ResultSet rs;
String name="";
String colName="";
ResultSet rs1=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Connection Estabished");
con=DriverManager.getConnection("Jdbc:Odbc:dsn_adm in","sa","sa");
System.out.println("Connection Estabished1");
stmt=con.createStatement();
//ResultSetMetaData rsmd=null;
rs1=stmt.executeQuery("select * from employee");



while(rs1.next())
{
rowArray.clear();
String str = rs1.getString("FirstName");
rowArray.add(str);
rowsetArray.add(rowArray.clone());


}
request.setAttribute("myArrayList",rowsetArray);
RequestDispatcher requestDispatcher=getServletContext().getRequestDi spatcher("/Prism/web/index.jsp");
requestDispatcher.forward(request,response);


}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();

}
//out.println("<h1>name======" + rowsetArray + "</h1>");

//return name;
// out.close();
}

note i have not mentioned the httpservlet methods here but they are there in my code.
i am using netbeans 5.0......................

-------------------------------------------Code for index.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="IRIS.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@ page session="true"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%@page import="javax.servlet.*"%>




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

<h1></h1>

<!--/ <img src="Images/Logo_Final Splash.gif" width="450" height="200" alt="Logo_Final Splash"/>
-->

<table border="1">
<tr><td><B>Emp Names</B></td></tr>


<%
ArrayList pageArray = (ArrayList) request.getAttribute("myArrayList");
String myString="";
if(pageArray.isEmpty()==false)
{
for(int i = 0; i < pageArray.size(); i++)
{
myString = (String) pageArray.get(i);
}
}
else
{
System.out.println("Array is empty");
}
%>

<tr><td><%=myString%></td></tr>


</table>


</body>
</html>
---------------------------------below is the error I get........

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:362)


root cause

java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.jav a:81)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:362)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.9


-----------Please let me know what is wrong.plsssssssssssss
vish_1x1 is offline   Reply /w Quote -


Old 07-14-2008, 03:28 PM   #2 (permalink)
Member
 
Join Date: Jul 2008
Posts: 1
Actually, attributes are passed among pages or servlets by the session object.
this line has problem~~~~~ request.setAttribute("myArrayList",rowsetArray);
try to obtain a session object by calling the getSession() method in request to set the attribute..
request.getSession().setAttribute("myArrayList",ro wsetArray);

Also, the code in JSP should changes as well:
ArrayList pageArray = (ArrayList) session.getAttribute("myArrayList");

Last edited by deuso; 07-14-2008 at 03:43 PM.
deuso is offline   Reply /w Quote -


Topic: Unable to pass arraylist data from servlet to jsp.
Old 07-15-2008, 07:17 AM   #3 (permalink)
Member
 
Join Date: Jul 2008
Posts: 2
This is the modified code. i get out put in this servlet on explorer.
but when i expect the same in jsp...i get null values.

the line out.println(pageArray.size()); on jsp page gives 1 as size.
which is not the case in the servlet class, there is shows size as 110
which is the true value.

below is my servlet code followed by index.jsp code.
-----------


package IRIS;

import java.io.*;
import java.net.*;


import javax.servlet.http.*;
import java.lang.String;
import java.sql.*;
import java.util.*;
import javax.servlet.*;

/**
*
* @author vishal
* @version
*/
public class Conn extends HttpServlet {


public Conn()
{

}


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ArrayList rowArray = new ArrayList();
ArrayList rowsetArray = new ArrayList();
Connection con;
PreparedStatement ps;
Statement stmt=null;
ResultSet rs;
String name="";
String colName="";
ResultSet rs1=null;
try
{
String str[]=new String[200];
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Connection Estabished");
con=DriverManager.getConnection("Jdbc:Odbc:dsn_adm in","sa","sa");
System.out.println("Connection Estabished1");
stmt=con.createStatement();
rs1=stmt.executeQuery("select * from employee");
System.out.println("<tr><td>name</td></tr>");
int n =rs1.getRow();
while(rs1.next())
{
str[n] = rs1.getString("FirstName");
rowArray.add(str[n]);
//out.println("<tr><td><br></br>" + rowArray + "</td></tr>");
n++;
}
for (int i=0;i<rowArray.size();i++)
{
//out.println("<tr><td><br>name======" + rowArray.get(i) + "</td></tr>");
request.getSession().setAttribute("myArrayList",ro wArray);
RequestDispatcher requestDispatcher=getServletContext().getRequestDi spatcher("/index.jsp");
requestDispatcher.forward(request,response);
}
}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();

}


//return name;
// out.close();
}

}
----------------------------

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="IRIS.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@ page session="true"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%@page import="javax.servlet.*"%>




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>


<h1></h1>

<!--/ <img src="Images/Logo_Final Splash.gif" width="450" height="200" alt="Logo_Final Splash"/>
-->



<table border="1">
<tr><td><B>Emp Names</B></td></tr>
<%
try
{
String myString ="";
ArrayList pageArray = new ArrayList();
pageArray.add(request.getSession().getAttribute("m yArrayList"));
//pageArray.add(request.getAttribute("myArrayList")) ;
for (int i=0;i<pageArray.size();i++)
{
out.println(pageArray.get(i));
}
out.println(pageArray.size());
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>
</table>





</body>
</html>
vish_1x1 is offline   Reply /w Quote -


Thread Tools
Display Modes



All times are GMT -5. The time now is 07:27 PM.