내 프로젝트에서 사용자 테이블에서 계정을 삭제하는 계정을 취소 취소 기능을 만들고 있습니다. 사용자 테이블 이름은 newuser
입니다.Exhausetd 결과 집합 Percentular 열에서 가져 오는 중 오류가 발생했습니다.
<%@ page language="java" 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>
<style type="text/css">
body {
background-image: url("shocked.jpg");
background-repeat:no-repeat;
background-position: top right;
}
p
{
font-family: serif;
font-weight: bold;
color: blue;
size: 5px;
text-align: center;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="Cancelaccount" name="cancelaccount">
<p>Are you sure to cancel account?</p>
<p>If yes please retype the password</p>
<p><input type="password" align="middle" name="password"></input></p>
<input type="submit" value="Cancel Account"></input>
<p>Else click <a href="UserHome.jsp">here</a></p>
</form>
</body>
</html>
이 Cancelaccount
서블릿, 나는이 열려 계정에 등록 된 암호를 사용하여 현재 입력 암호와 일치하는 것을 시도하고있다 : 같은 cancelaccount
JSP로 보인다. 그들이 계정을 취소해야할지 일치하면 서블릿 코드는 그렇지 not.So :
import getset.Getset;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import accessdb.Dao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Cancelaccount extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
// TODO Auto-generated method stub
Getset g = new Getset();
Dao dao = new Dao();
PrintWriter pw = response.getWriter();
String password = request.getParameter("password");
HttpSession session = request.getSession();
String userid = (String)session.getAttribute("userid");
if (password.equals("") || password.equals(" "))
response.sendRedirect("UserHome.jsp");
g.setuserid(userid);
g.setloginpassword(password);
try {
String password1 = dao.getregpasswordbyuserid(g);
if (password1 == password) {
dao.cancelaccount(g);
pw.println("<html>Your Account has been successfully cancelled from the system.<p>" +
"Click here to go to <a href=\"WelcomePage.jsp\">Start Page</a><html>");
session.invalidate();
} else {
response.sendRedirect("UserHome.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
DAO
기능 코드는 다음과 같습니다
public void cancelaccount(Getset g)throws ClassNotFoundException,SQLException{
//Delete a user from NEWUSER TABLE AND MEALDB TABLE
Connection con=Dbconnection.getConnection();
String userid=g.getuserid();
PreparedStatement pstmt=con.prepareStatement("delete from mealdb where userid=?");
pstmt.setString(1, userid);
pstmt.executeUpdate();
PreparedStatement pstmt1=con.prepareStatement("delete from newuser where userid=?");
pstmt1.setString(1, userid);
pstmt1.executeUpdate();
}
public String getregpasswordbyuserid(Getset g)throws ClassNotFoundException,SQLException{
//GET PASSWORD BY USERID
Connection con=Dbconnection.getConnection();
String userid=g.getuserid();
PreparedStatement pstmt=con.prepareStatement("select regpassword from newuser where userid=?");
pstmt.setString(1, userid);
ResultSet rs=pstmt.executeQuery();
rs.next();
String p=rs.getString(1);
System.out.println(""+p);
return p;
}
그리고 stacktrace
은 다음과 같습니다
11:35:29,912 ERROR [STDERR] java.sql.SQLException: Exhausted Resultset
11:35:29,912 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
11:35:29,912 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
11:35:29,912 ERROR [STDERR] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
11:35:29,912 ERROR [STDERR] at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:347)
11:35:29,912 ERROR [STDERR] at accessdb.Dao.getregpasswordbyuserid(Dao.java:245)
11:35:29,912 ERROR [STDERR] at Cancelaccount.doGet(Cancelaccount.java:39)
11:35:29,912 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
11:35:29,912 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
11:35:29,912 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
11:35:29,912 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
11:35:29,912 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
11:35:29,912 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
11:35:29,912 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
11:35:29,912 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
11:35:29,912 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
11:35:29,912 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
11:35:29,912 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
DAO
에서 'cancelaccount
다른 테이블에서 삭제 된 기능 mealdb
도 있기 때문에 userid
필드는 primary key
이고 newuser
이고 foreign key
은 mealdb
입니다. 나는 그것을 열심히 들여다 보았다. 그러나 길을 발견 할 수 없었다. 고맙습니다.
그리고 감사합니다 @MaVRoSCy 귀하의 의문의 여지가있는 협력을 위해. – Mistu4u