JSP błąd przy update.

Odpowiedz Nowy wątek
2014-12-26 16:27
Dandel
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"> Password</th>Name</th>Adres</th>telefon</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()){ %> <input type="text" name="password" value="&lt;%=rs.getString(" password")%="password&quot;)%">"></td> <input type="text" name="name" value="&lt;%=rs.getString(" name")%="name&quot;)%">"></td> <input type="text" name="Adres" value="&lt;%=rs.getString(" adres")%="Adres&quot;)%">"></td> <input type="text" name="telefon" value="&lt;%=rs.getString(" telefon")%="telefon&quot;)%">"></td> <input type="text" name="ID" value="&lt;%=rs.getInt(" id")%="ID&quot;)%">"></td> <input type="hidden" name="id" value="&lt;%=rs.getInt(1)%">"></td> </tr> <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.

Pozostało 580 znaków

2014-12-26 16:41
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[...]etParameter(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...


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 2x, ostatnio: Shalom, 2014-12-26 16:44
A tak z ciekawości jak teraz pisze się aplikacje webowe w javie? - pulkownik123 2014-12-26 18:09

Pozostało 580 znaków

2014-12-26 16:48
Dandel
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.

esencja polskich uczelni. - niezdecydowany 2014-12-26 16:51

Pozostało 580 znaków

2014-12-26 17:28
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.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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