JSP błąd przy update.

0

Witam. Otoż mam taki problem. PO wybraniu tabelki którą chce edytować, wypełnieniu jej odpowiednimi wartościami i wciśnięciu przycisku update mam taki błąd:HTTP Status 500 - An exception occurred processing JSP page /update.jsp at line 6

type Exception report

message An exception occurred processing JSP page /update.jsp at line 6

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 /update.jsp at line 6

3: <%
4: String Pesel=request.getParameter("PESEL");
5: int pes=0;
6: pes=Integer.parseInt(Pesel);
7:
8:
9: String password=request.getParameter("password");

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:454)
java.lang.Integer.parseInt(Integer.java:527)
org.apache.jsp.update_jsp._jspService(update_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

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

  

  A o to moje pliki application.jsp

<%@ page import="java.sql.*" %>

<html> <head> <script language="javascript"> function editRecord(PESEL){ var f=document.form; f.method="post"; f.action='edit.jsp?PESEL='+PESEL; f.submit(); } function deleteRecord(PESEL){ var f=document.form; f.method="post"; f.action='delete.jsp?PESEL='+PESEL; f.submit(); } function dodajRecord(PESEL){ var f=document.form; f.method="post"; f.action='dodawanie.jsp?PESEL='+PESEL; f.submit(); } </script> </head> <body>



<form method="post" name="form"> PESEL</th>Password</th>Name</th>Adres</th>telefon</th>ID</th></tr> <% Connection con = null; String url = "jdbc:mysql://localhost:3306/testowa_baza"; String db = "test"; String driver = "com.mysql.jdbc.Driver"; String userName ="root"; String password="root";

int sumcount=0;
Statement st;
try{
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url,userName,password);
String query = "select * from konta";
st = con.createStatement();
ResultSet rs = st.executeQuery(query);
%>

<%
while(rs.next()){
%>

<%=rs.getString(1)%></td> <%=rs.getString(2)%></td> <%=rs.getString(3)%></td> <%=rs.getString(4)%></td> <%=rs.getString(5)%></td> <%=rs.getString(6)%></td> <input type="button" name="edit" value="Edit" style="background-color:#49743D;font-weight:bold;color:#ffffff;" onclick="editRecord(&lt;%=rs.getString(1)%">);" ></td> <input type="button" name="delete" value="Delete" style="background-color:#ff0000;font-weight:bold;color:#ffffff;" onclick="deleteRecord(&lt;%=rs.getString(1)%">);" ></td> <input type="button" name="dodaj" value="Dodaj" style="background-color:#ff0000;font-weight:bold;color:#ffffff;" onclick="dodajRecord(&lt;%=rs.getString(1)%">);" ></td> </tr> <% } %> <% } catch(Exception e){ e.printStackTrace(); } %> </table> </form> </body> </html> ```

Następny edit.jsp

<%@page language="java"%>
<%@page import="java.sql.*"%>
<form method="post" action="update.jsp">
<table border="1">
    <tr><th>Password</th><th>Name</th><th>Adres</th><th>telefon</th><th>ID</th></tr>

    <%
String PESEL=request.getParameter("PESEL");
int no=Integer.parseInt(PESEL);
int sumcount=0;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testowa_baza", "root", "root");
String query = "select * from konta where PESEL='"+no+"'";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
while(rs.next()){
%>
<tr>
<td><input type="text" name="password" value="<%=rs.getString("password")%>"></td>
<td><input type="text" name="name" value="<%=rs.getString("name")%>"></td>
<td><input type="text" name="Adres" value="<%=rs.getString("Adres")%>"></td>
<td><input type="text" name="telefon" value="<%=rs.getString("telefon")%>"></td>
<td><input type="text" name="ID" value="<%=rs.getInt("ID")%>"></td>


<td><input type="hidden" name="id" value="<%=rs.getInt(1)%>"></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Update" style="background-color:#49743D;font-weight:bold;color:#ffffff;"></td>
</tr>
<%
}
}
catch(Exception e){}
%>
</table>
</form>
</form>

Oraz nieszczęsny update.jsp:

<%@page import="java.sql.*"%>

<%
 String Pesel=request.getParameter("PESEL");
int pes=0;
  pes=Integer.parseInt(Pesel);


String password=request.getParameter("password");
String name=request.getParameter("name");
String Adres=request.getParameter("Adres");
String telefon=request.getParameter("telefon");

String ide=request.getParameter("ID");
int num=0;
 num=Integer.parseInt(ide);


try{
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testowa_baza","root", "root");
Statement st=null;
st=conn.createStatement();
st.executeUpdate("update konta set password='"+password+"',name='"+name+"',Adres="+Adres+",telefon='"+telefon+",ID='"+num+"' where PESEL='"+pes+"'");
response.sendRedirect("application.jsp");
}
catch(Exception e){
System.out.println(e);
    }
%>

Oto moja baza danych: http://iv.pl/images/78151110734584805253.jpg
Z góy dziękuje za pomoc.

0

Serio? o_O

java.lang.NumberFormatException: null

String ide=request.getParameter("ID");
int num=0;
num=Integer.parseInt(ide);

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

Jak parametru nie ma, to getParameter zwróci ci nulla a ty potem robisz na nim parseInt które się wysypuje.
Czemu? Możliwe że dlatego że używasz jednocześnie id i ID a nie każda przeglądarka traktuje id/name w DOM jako case-sensitive.

Poza tym nie wiem czy wiesz, ale od 20 lat nie pisze się w ten sposób aplikacji webowych w javie, ani w ogóle...

0

Wiem że tak się nie piszę, ale tak sobie zażyczyła moj wykładowca gdyż piszę projekt na zaliczenie. Jak pobrać ten parametr inaczej? Będe wdzięczny za pomoc, cały dzień przy tym siedzę i nic.

0

Nie chodzi o to że "inaczej" tylko że parametru z jakiegoś powodu nie ma. Mozliwe że dlatego:

<td><input type="text" name="ID" value="<%=rs.getInt("ID")%>"></td>
<td><input type="hidden" name="id" value="<%=rs.getInt(1)%>"></td>

czyli dwa pola w formularzu z tym samym name jeśli przeglądarka nie jest case-sensitive. Zacząłbym zwyczajnie od nadania tutaj unikalnych wartości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1