ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ServletException: not delete 오류
    ElasticSearch/오류 2025. 1. 27. 21:26
    반응형

     

    삭제 성공
    1월 27, 2025 9:22:07 오후 org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: 경로 [/MVC02]의 컨텍스트 내의 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [javax.servlet.ServletException: not delete]을(를) 발생시켰습니다.
    javax.servlet.ServletException: not delete
    	at org.apache.jsp.member.memberDelete_jsp._jspService(memberDelete_jsp.java:130)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.base/java.lang.Thread.run(Thread.java:834)

     

     

    이 오류는 memberDelete.jsp에서 삭제 작업을 처리하려고 할 때 발생한 것입니다. 구체적으로 보면, ServletException: not delete 오류는 cnt 값이 0 또는 음수일 때 발생하는 것으로 보입니다. 즉, 데이터베이스에서 삭제 작업이 성공적으로 이루어지지 않았기 때문에 예외가 발생한 것입니다.

     

    
    	//회원 삭제
    	public int memberDelete(int num) {
    		String SQL = "delete from member where num=?";
    		getConnect();
    		
    		int cnt= 0;
    		try {
    			ps = conn.prepareStatement(SQL);
    			
    			ps.setInt(1, num);
    			cnt = ps.executeUpdate();
    			System.out.println("삭제 성공");
    			
    		}catch(Exception e) {
    			System.out.println("삭제 실패");
    			e.printStackTrace();
    		}finally {
    			dbClose();
    		}
    		return cnt;
    	}

    회원 삭제하는 경우 기존에는 cnt 의 초기값을 cnt = -1로 설정해두었기때문에 오류가 발생하였다. 

     

    executeUpdate() 메서드는 SQL 쿼리문이 실행된 결과로 영향을 받은 행의 개수를 반환합니다.

    • 삭제가 성공적으로 이루어졌을 경우: 해당 회원이 데이터베이스에서 삭제되면 영향을 받은 행(row)이 1개가 되므로, cnt 값이 1이 됩니다.
    • 삭제가 실패한 경우: 만약 주어진 num에 해당하는 회원이 존재하지 않으면, 삭제할 행이 없으므로 cnt 값이 0이 됩니다.

    cnt의 초기값을 0으로 설정해준다면 정상적으로 실행된다.

    반응형

    댓글

Designed by Tistory.