0

i am a beginer and am currently working on my final school project which require retrieving data from a database table and displaying the datas in an html page. i have searched alot but still no progress. i was linked to this site through google, i saw a format and i try to do the same thing but after running the code i get this error

Exception report

message An exception occurred processing JSP page /crimeinfo.jsp at line 32 description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /crimeinfo.jsp at line 32
29:     
30:     
31:     <%List <String> data =(List)request.getAttribute("data");
32:     Iterator <String> itr = data.iterator() ;
33:     for (itr = data.iterator();
34:     itr.hasNext();)
35:     {%>

please i need help. i dont known what else to do. thnks...

viewcrime.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--web.xml code-->
<servlet>
<servlet-name>viewcrimereport</servlet-name>
<servlet-class>viewcrimereport</servlet-class>
<servlet-mapping>
<servlet-name>viewcrimereport</servlet-name>
<url-pattern>viewcrimereport</url-pattern>
</servlet-mapping></servlet>

viewcrimereport.java

public class viewcrimereport extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
     private ServletConfig config;
     String page = "crimeinfo.jsp";
     public void init(ServletConfig config)
         throws ServletException{
         this.config = config; }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out=response.getWriter();
    response.setContentType("text/html");
    Connection conn = null;
    String url = "jdbc:mysql://localhost/citycrime";
    String userName = "root";
    String passw = "jids";
    PreparedStatement pst = null;
    ResultSet rs;
    ArrayList<String> datalist = new ArrayList<String>();
    try{    
            int i=0;
    Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, userName, passw);
        pst = conn.prepareStatement("");
    String sql ="select suspectname,suspectaliases,suspectht,suspectgender,features,crimeaddress,crimetype,caseno,casestatus from crimereport";
        pst.executeQuery(sql);
        rs = pst.getResultSet();
        while(rs.next()){
            datalist.add(rs.getString("suspectname"));
            datalist.add(rs.getString("suspectaliases"));
            datalist.add(rs.getString("suspectht"));
            datalist.add(rs.getString("suspectgender"));
            datalist.add(rs.getString("features"));
            datalist.add(rs.getString("crimeaddress"));
            datalist.add(rs.getString("crimetype"));
            datalist.add(rs.getString("caseno"));
            datalist.add(rs.getString("casestatus"));}
        rs.close();pst.close(); }
    catch(Exception e){System.out.println("Exception is;"+e);}
    request.setAttribute("data",datalist);
    RequestDispatcher dispatcher = request.getRequestDispatcher(page);
    if (dispatcher != null){
        dispatcher.forward(request, response);
    }
        }
}    

crimeinfo.jsp

<%@ page language="java" import="java.sql.*" import="java.util.*" 
contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4
/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Crime Report</title>
</head>
<body>
    <table border="1" with="600">
    <tr><td><tb><td>SuspectName</td></b>
    <td><tb>SuspectAlias</b></td>
    <td><tb>suspectaliases</tb></td>
    <td><tb>Height</tb></td>
    <td><tb>suspectht</tb></td>
    <td><tb>Gender</tb></td>
    <td><tb>suspectgender</tb></td>
    <td><tb>Features</tb></td>
    <td><tb>features</tb></td>
    <td><tb>Address</tb></td>
    <td><tb>crimeaddress</tb></td>
    <td><tb>CrimeType</tb></td>
    <td><tb>crimetype</tb></td>
    <td><tb>CaseNumber</tb></td>
    <td><tb>caseno</tb></td>
    <td><tb>Status</tb></td>
    <td><tb>casestatus</tb></td></tr>
    <% Iterator <String> itr;%>
    <%List data =(List)request.getAttribute("datalist");
    for (itr = data.iterator();
    itr.hasNext();){%><tr>
    <%String s =(String)itr.next(); %>
    <td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
        <tr><td><%=itr.next()%>></td>
        <tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td>
    <tr><td><%=itr.next()%>></td></tr><%} %>
</table>
</body>
</html>
maxx777
  • 1,320
  • 1
  • 20
  • 37
user3546361
  • 1
  • 1
  • 1
  • 1

2 Answers2

2
  1. At line 32, make it Iterator itr = data.iterator() ; I advise you to use while(itr.hasNext() instaed of for loop for more clarity of the code. Also, the initialization part in the for loop is retundant.

  2. rename your xml file to web.xml and put it as \WEB-INF\web.xml

  3. in web.xml, url-pattern should be <url-pattern>/viewcrimereport</url-pattern>

  4. for your servlet, since you have already extended HttpServlet class, there is no need to implement Servlet interface. HttpServlet class already implements that interface

  5. you have not closed your connection. use conn.close().

  6. in your jsp, it should be <%List data =(List)request.getAttribute("data"); because you have set request attribute with name data and not "datalist"

  7. use of scriptlets (those <% %> things) are discouraged. see this

  8. since you are not outputting anything from your servlet to your browser, you can omit the following code PrintWriter out=response.getWriter(); response.setContentType("text/html");

  9. in my personal opinion, i would suggest to use service instead of doGet(). Service method will itself call the doGet method. Plus it can also invoke other meyhods like doPost, doHead etc if it requires.

Community
  • 1
  • 1
maxx777
  • 1,320
  • 1
  • 20
  • 37
  • thanks for your help. i have made all the correction you advised and got this error message. org.apache.jasper.JasperException: An exception occurred processing JSP page /crimeinfo.jsp at line 32 29: 30: 31: <%List data =(List)request.getAttribute("data"); 32: Iterator itr = data.iterator() ; 33: for (itr = data.iterator(); 34: itr.hasNext();) 35: {%> – user3546361 Apr 18 '14 at 07:33
  • same eexception that you got earlier? i think you missed my first point. – maxx777 Apr 18 '14 at 07:39
  • i did exactly what you advised.... this is the code <%List data =(List)request.getAttribute("data"); Iterator itr = data.iterator() ; for (itr = data.iterator(); itr.hasNext();) {%> – user3546361 Apr 18 '14 at 08:45
  • sorry, my mistake. I forgot to edit that one. Now i have updated my fiest point. – maxx777 Apr 18 '14 at 14:20
  • I suggest you to use jstl tags for this. – Shoaib Chikate Oct 02 '14 at 11:55
0

You can use the datalist.get(column index) method of ArrayList. For more details refer to: http://www.tutorialspoint.com/java/java_arraylist_class.htm

ArtOfWarfare
  • 20,617
  • 19
  • 137
  • 193
  • @hutchonoid This isn't a link only answer. It is messy and should be reformatted/cleaned up. See Your Answer is in Another Castle, When an Answer is not an Answer: http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-an-answer – ArtOfWarfare Oct 02 '14 at 12:47