2012-07-19 2 views
1

RegAction.javajavax.servlet.ServletException : 지정된 URL을 찾을 수 없습니다 액션 설정

private static final String FORWARD_succ = "succ"; 
Connection con=null; 
public Connection getcon() 
    { 
    try 
     { 

     Class.forName("com.mysql.jdbc.Driver"); 
     con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root"); 
     }catch(SQLException e) 
     {} 
     catch(ClassNotFoundException c) 
     { 
     } 
     return con; 
    } 

    public void closeConnection() 
    { 
     try 
     { 
      con.close(); 
     }catch(SQLException e) 
     {} 
    } 
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException 
    { 
    RegForm1 r=(RegForm1)form; 
    Connection con=getcon(); 

String v1=r.getFname(); 
String v2=r.getLname(); 
    String v3=r.getUid(); 
    String v4=r.getDob(); 
    String v5=r.getPwd(); 
    String v6=r.getCpwd(); 
    String v7=r.getCity(); 
    String v8=r.getSt(); 
    String v9=r.getZc(); 
System.out.println(v1); 
System.out.println(v2); 
System.out.println(v3); 
    System.out.println(v4); 
System.out.println(v5); 
System.out.println(v6); 
System.out.println(v7); 
System.out.println(v8); 
    System.out.println(v9); 

try 
{ 
PrintWriter pw=response.getWriter(); 
    Statement ps=con.createStatement(); 
    int k=ps.executeUpdate("insert into reg values(v1,v2,v3,v4,v5,v6,v7,v8,v9)"); 
    if(k==1) 
     pw.println("susccessfully stored"); 
     con.commit(); 
}catch(SQLException s) 
{ 
} 

catch(IOException s) 
{ 
} 
    return mapping.findForward("succ"); 

config.xml에

<form-bean name="regform" type="RegForm1"/> 
    </form-beans> 
    <global-exceptions/> 
    <global-forwards/> 
    <action-mappings> 
    <action name="regform" path="/reg" type="RegAction" validate="true input="/Register.jsp"> 
    <forward name="succ" path="/success.jsp"/> 

Iwant는 MySQL 데이터베이스에 다음과 같은 필드 값을 저장하기 . 하지만 왜 다음과 같은 예외가 발생합니까?

NEW 사용자 정보 FIRSTNAME * : 성 * :

사용자 ID * :

생년월일 * :

비밀번호 * :

confirmpassword *

도시 * :

상태 * :

우편 번호 * :

버튼

HTTP 상태 500 -


type Exception report 
message 
description The server encountered an internal error() that prevented it from fulfilling this request. 
exception 
javax.servlet.ServletException 
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286) 
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
root cause 
java.lang.NullPointerException 
    RegAction.execute(RegAction.java:75) 
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) 
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.29 logs. 

아파치 톰캣/5.5.29

+1

I g 당신이 구조체가 아닌 Struts를 사용하고 있는지 확인하십시오. struts-config.xml에서 url 매핑을 확인 했습니까? – kosa

+0

struts1.x를 사용하고 있습니다. SIVA

+0

RegAction 클래스와 struts-config.xml 파일의 코드를 보여줍니다. –

답변

0

귀하의 코드는 실제로 다시 열심히 광고. 내 생각 엔이 줄은 Statement ps=con.createStatement();인데, 원인은 NPE입니다. getCon 메서드에서 예외를 무시한다고 간주하기 란 어렵습니다. 이러한 유형의 예외는 무시해서는 안됩니다. 로그를 남기고 정확한 예외가 무엇인지 확인해야합니다. 이를 위해 일부 로깅 프레임 워크를 사용하거나 단순히 스택 추적을 인쇄하여 자신을 확인하십시오.

catch(SQLException e) { 
    //log the exception 
} 
catch(ClassNotFoundException c) { 
    //log the exception  
} 

나는 당신의 getCon 방법에 연결이 null로 반환됩니다 생각합니다. 데이터베이스 연결에 문제가 없는지 확인해야합니다.

+0

코딩에서 무엇을해야합니까? – SIVA

+0

구성이 괜찮은 것 같습니다. 그러나 누락 된 견적이 있습니다.이 확인 : validate = "true". –

1

SIVA .. 위의 문 V1,V2,v3...에서

int k=ps.executeUpdate("insert into reg values(v1,v2,v3,v4,v5,v6,v7,v8,v9)"); 

는 숫자 값이있는 경우 그렇지 않으면이

int k=ps.executeUpdate("insert into reg values('"+v1+"','"+v2+"','"+ . .); 

과 같은 코드를 재 작성 .. 대신에 사용 PrepareStatement의 문자열 값으로 처리됩니다 귀하의 목록에 (v1, v2, v3 ..) '' 코드를 넣을 필요가 없습니다 .. 희망이있어 ..

관련 문제