I have a servlet S1 which will get data from my Data Base and store it in a array list "A". This array list A will be sent to a JSP in which I will print all the contents of the array list A. I am able to print all the details. Now in the JSP I have a radio button which I will pass it to other servlet S2 and fetch details from the DB and return back to the JSP which called servlet S2. Now all the process of the servlet S2 are working fine but I am not able to get back to the JSP. I am getting a jasper exception in the print statement of the array list A. I think the value of array list A are not available as it loses scope and hence the error. The code is given below.
//**Servlet S1**
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class EditUsers
*/
@WebServlet("/EditUsers")
public class EditUsers extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public EditUsers() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("entered post");
Connection con=null;
PreparedStatement ps= null;
ResultSet rs= null;
int i=0;
ArrayList<User> user= new ArrayList<User>();
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
// System.out.println("connection");
con =DriverManager.getConnection("url","user", "pass");
ps = con.prepareStatement("select * from user_Dtls");
rs = ps.executeQuery();
while(rs.next())
{
// System.out.println("Entered While");
User u= new User();
u.setUserId(rs.getString(1));
u.setUser(rs.getString(2));
u.setRole(rs.getString(3));
u.setStatus(rs.getString(4));
user.add(u);
}
request.setAttribute("ArrayOfDetails", user);
RequestDispatcher rd= request.getRequestDispatcher("EditUserDetails.jsp");
rd.forward(request, response);
}
catch(Exception e)
{
System.out.println(e);
}
finally
{
if(con!=null)
{
try
{
con.close();
rs.close();
ps.close();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
JSP
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.lang.*, java.util.*, com.User"%>
<!DOCTYPE html">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<meta charset="utf-8">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script type="text/javascript">
function display()
{
document.getElementById('1').style.display='block';
document.getElementById('2').style.display= 'block';
document.getElementById('3').style.display= 'block';
document.getElementById('4').style.display='block';
document.getElementById('5').style.display='block';
document.getElementById('6').style.display='block';
document.getElementById('7').style.display='block';
document.getElementById('8').style.display='block';
document.getElementById('9').style.display= 'block';
}
</script>
<body>
<form role="form" method="post" action = "SearchUsers">
<%
ArrayList<User> userList= (ArrayList<User>) request.getAttribute("ArrayOfDetails");
%>
<table class="table">
<tr>
<th>USER ID:</th>
<th>USER NAME:</th>
<th>USER ROLE:</th>
<th>USER STATUS:</th>
</tr>
<% for(User user : userList) //for printing
{
%>
<tr>
<td><input type="radio" name="userId" value="<%=user.getUserId() %>"/><
%=user.getUserId() %></td>
<td><%=user.getUser() %></td>
<td><%=user.getRole() %></td>
<td><%=user.getStatus() %></td>
</tr>
<%
}
%>
</table>
<input type="submit" name="useredit" value="Edit" onclick= "display();"/>
<%ArrayList<User> arrU = new ArrayList<User>();
arrU = (ArrayList<User>) request.getAttribute("uEdit"); //retriving data from Servlet 2
%>
<style = "display:none" id = "1"> Name: </style> <input type="text" id= "2" name="userName" hidden
value="<%=arrU.getUser%>"></input> <br>
<style = "display:none" id = "3">Role: </style> <select id="4" name="Roles" style = "display:none"
value="<%=arrU.getRole%>">
<option value="Admin">Admin</option>
<option value="UnderWriter">UnderWriter</option>
<option value="Manager">Manager</option>
</select><br>
<style = "display:none" id = "5">Status: </style> <select id = "6" name="Status" style =
"display:none" value="<%=arrU.getStatus%>">
<option value="Active">Active</option>
<option value="Locked">Locked</option>
<option value="Disabled">Disabled</option>
</select> <br>
<input type="submit" id = '7'style ="display:none" name="userupdate" value="Update the details"/>
</form>
</body>
</html>
Servlet S2
package com;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SearchUsers
*/
@WebServlet("/SearchUsers")
public class SearchUsers extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SearchUsers() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ArrayList<User> edit= new ArrayList<>();
Connection con= null;
PreparedStatement ps= null;
ResultSet rs = null;
String id= request.getParameter("userId");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("connection");
con =DriverManager.getConnection("url","user",pass");
ps = con.prepareStatement("select * from user_dtls where Id='"+id+"'");
request.getParameter("ArrayOfDetails");
rs = ps.executeQuery();
while(rs.next())
{
System.out.println("Entered While");
User u= new User();
System.out.println("object created");
u.setUserId(rs.getString(1));
System.out.println(rs.getString(1));
u.setUser(rs.getString(2));
u.setRole(rs.getString(3));
u.setStatus(rs.getString(4));
System.out.println(u.getRole());
edit.add(u);
System.out.println(edit.size());
}
request.setAttribute("uEdit",edit);
RequestDispatcher rd= request.getRequestDispatcher("EditUserDetails.jsp");
rd.include(request, response);
}
catch(Exception e)
{
System.out.println(e);
}
finally
{
if(con!=null)
{
try
{
con.close();
rs.close();
ps.close();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
I have used proper url,user,pass in my program. I have given it as dummy here.Getting jasper exception at
for(User user : userList)
when i return from Servlet 2 to JSP Please dont mind the low level of programming style. New to servlet/jsp programming. thanks in advance.