2016-11-08 6 views
-1

Я знаю, что есть похожие вопросы, подобные этому, но я все еще не мог понять это. пожалуйста, помогите мне. Я приложил структуру каталогов в картинке и коды остальные имеют также перечислены ниже Click here to see the directory structureHTTP Status 500 - Ошибка создания класса сервлета com.app.RegisterServlet

index.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <form action="reg" method="post"> 
     Rno:<input type="number" name="rno"><br> 
     Name:<input type="text" name="name"><br> 
     Mark:<input type="number" name="mark"><br><br> 
     <input type="submit" value="Register"> 
     <input type="reset" value="clear"> 
    </form> 
</body> 
</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <servlet> 
    <servlet-name>hi</servlet-name> 
    <servlet-class>com.app.RegisterServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>hi</servlet-name> 
    <url-pattern>/reg</url-pattern> 
    </servlet-mapping> 
</web-app> 

RegisterServlet.java

package com.app; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import javax.servlet.GenericServlet; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class RegisterServlet extends GenericServlet{ 
    private static final long serialVersionUID = 1L; 

    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 
     try { 
      int rno=Integer.parseInt(request.getParameter("rno")); 
      String name=request.getParameter("name"); 
      float mark=Float.parseFloat(request.getParameter("mark")); 
      Class.forName("oracle.jdbc.OracleDriver"); 
      Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","fila","filimon"); 
      PreparedStatement pstmt=con.prepareStatement("insert into register values(?,?,?)"); 
       pstmt.setInt(1,rno); 
       pstmt.setString(2,name); 
       pstmt.setFloat(3,mark); 
      int count=pstmt.executeUpdate(); 
       con.commit(); 
      PrintWriter out=response.getWriter(); 
      response.setContentType("text/html"); 
      if (count>0) { 
       out.println("<html><body>successfully inserted</body></html>"); 
      }else{ 
       out.println("<html><body>nigga, try next time</body></html>"); 
      } 
      pstmt.close(); 
      con.close(); 
     }catch (Exception e) { 
      System.err.println(e); 
     } 
    }//service() 
}//RegisterServlet 

Спасибо большое за ваше время , Вл и ошибка заключается в следующем

type Exception report 

message Error instantiating servlet class com.app.RegisterServlet 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Error instantiating servlet class com.app.RegisterServlet 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

java.lang.ClassNotFoundException: com.app.RegisterServlet 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892) 
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
+0

Это абсолютно неправильно реализовать эти действия в методе 'service()' – JimHawkins

+0

@JimHawkins, пожалуйста, объясните вкратце, спасибо –

+0

, чтобы обрабатывать HTTP-запросы GET, переопределить метод 'doGet()'. Для POST переопределить 'doPost()' – JimHawkins

ответ

0

за исключением заявляет ClassNotFoundException, что означает, что ваш класс сервлета не найдено для конкретизации. Убедитесь, что класс сервлета (включая его структуру пакета) [resent в каталоге WEB-INF/classes.

EDIT: После проверки кода

Я запустить свой код, ниже отредактированный код (я заметил большую часть внутреннего сечения):

package com.app; 

импорт java.io.IOException; импорт java.io.PrintWriter; импорт java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; импорт javax.servlet.GenericServlet; import javax.servlet.ServletException; импорт javax.servlet.ServletRequest; импорт javax.servlet.ServletResponse; импорт javax.servlet.annotation.WebServlet;

@WebServlet (имя = "registerServlet", urlPatterns = "/ рег") общественного класса RegisterServlet расширяет GenericServlet { частный статический окончательный длинный serialVersionUID = 1L;

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 
    try { 

     System.out.println("PRINTING FROM SERVLET -----------------"); 

     /*int rno=Integer.parseInt(request.getParameter("rno")); 
     String name=request.getParameter("name"); 
     float mark=Float.parseFloat(request.getParameter("mark")); 
     Class.forName("oracle.jdbc.OracleDriver"); 
     Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","fila","filimon"); 
     PreparedStatement pstmt=con.prepareStatement("insert into register values(?,?,?)"); 
      pstmt.setInt(1,rno); 
      pstmt.setString(2,name); 
      pstmt.setFloat(3,mark); 
     int count=pstmt.executeUpdate(); 
      con.commit();*/ 
     PrintWriter out=response.getWriter(); 
     response.setContentType("text/html"); 
     out.println("<html><body>successfully inserted</body></html>"); 
     /*   if (count>0) { 
          out.println("<html><body>successfully inserted</body>  </html>"); 
     }else{ 
      out.println("<html><body>nigga, try next time</body></html>"); 
     } 
     pstmt.close(); 
     con.close();*/ 
    }catch (Exception e) { 
     System.err.println(e); 
    } 
}//service() 

} // RegisterServlet

Я получаю выход как:

<html><body>successfully inserted</body></html> 

Там нет ничего плохого с вашей рамки, проверьте доступ к базе данных и другой логики, проверьте, есть ли исключение, иначе сервлет должен печатать.

+0

Я использую eclipse, и я поделился каталогом structre, пожалуйста, проверьте его и скажите мне, если что-то не так. thanks –

+0

Экспорт WAR-файла из eclipse и развертывание на отдельном tomcat. В вашей структуре каталогов проекта нет никакой проблемы. – Ironluca

+0

спасибо, я попробую сейчас –