2013-06-16 6 views
0

웹 사이트를 가지고 glassfish 서버에 연결했습니다. 이 데이터베이스의 데이터를 추가/삭제/편집/검색 할 수있는 버튼을 만들고 싶습니다.양식이 데이터를 인식하지 못하고 processRequests가 NullPointerException을 throw합니다.

사용자 코드에 의해 입력 된 데이터를 처리하기위한

공식 :

@WebServlet(name = "StudentServlet", urlPatterns = {"/StudentServlet"}) 
public class StudentServlet extends HttpServlet { 
@EJB 
private StudentDaoLocal studentDao; 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    String action = request.getParameter("action"); 
    String sensorIdStr = request.getParameter("studentId"); 
    int sensorId=0; 
    if(sensorIdStr!=null && !sensorIdStr.equals("")) 
     sensorId=Integer.parseInt(sensorIdStr); 
    String nazwa = request.getParameter("nazwa"); 
    String opis = request.getParameter("opis"); 
    String prawaStr = request.getParameter("prawa"); 
    int prawa=0; 
    if(prawaStr!=null && !prawaStr.equals("")) 
     prawa=Integer.parseInt(prawaStr); 

    Sensor sensor = new Sensor(sensorId, nazwa, opis, prawa); 

    if("Add".equalsIgnoreCase(action)){ 
     studentDao.addSensor(sensor); 
    }else if ("Edit".equalsIgnoreCase(action)){ 
     studentDao.editSensor(sensor); 
    }else if ("Delete".equalsIgnoreCase(action)){ 
     studentDao.deleteSensor(sensorId); 
    }else if ("Search".equalsIgnoreCase(action)){ 
     sensor = studentDao.getSensor(sensorId); 
    } 
    request.setAttribute("sensor", sensor); 
    request.setAttribute("allSensor", studentDao.getAllSensors()); 
    request.getRequestDispatcher("index.jsp").forward(request, response); 

} 

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

@Override 
public String getServletInfo() { 
    return "Short description"; 
} 
} 

오류 로그 : 데이터베이스에 입력 된 데이터를 처리하기위한

<form action="./StudentServlet" method="POST"> 
    <table> 

     <tr> 
      <td>Sensor ID</td> 
      <td><input type="text" name="sensorId" value="${sensor.sensorId}" /></td> 
     </tr> 
     <tr> 
      <td>Nazwa</td> 
      <td><input type="text" name="nazwa" value="${sensor.nazwa}" /></td> 
     </tr> 
     <tr> 
      <td>Opis</td> 
      <td><input type="text" name="opis" value="${sensor.opis}" /></td>  
     </tr> 
     <tr> 
      <td>Prawa</td> 
      <td><input type="text" name="prawa" value="${sensor.prawa}" /></td> 
     </tr> 

     <tr> 
      <td colspan="2"> 
       <input type="submit" name="action" value="Add"> 
       <input type="submit" name="action" value="Edit"> 
       <input type="submit" name="action" value="Delete"> 
       <input type="submit" name="action" value="Search"> 
      </td> 
     </tr> 

    </table> 
    </form> 
    <br> 
    <table border="1"> 
     <th>ID</th> 
     <th>Nazwa</th> 
     <th>Opis</th> 
     <th>Prawa</th> 
     <c:forEach items="${allSensors}" var="sensor"> 
      <tr> 
       <td>${sensor.sensorId}</td> 
       <td>${sensor.nazwa}</td> 
       <td>${sensor.opis}</td> 
       <td>${sensor.prawa}</td> 
      </tr>  
     </c:forEach> 
    </table> 

서블릿

WARNING: StandardWrapperValve[StudentServlet]: PWC1406: Servlet.service() for servlet  StudentServlet threw exception 
java.lang.NullPointerException 
at com.student.controller.StudentServlet.processRequest(StudentServlet.java:37) 
at com.student.controller.StudentServlet.doPost(StudentServlet.java:60) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
at java.lang.Thread.run(Thread.java:722) 

내가 아니다 데이터를 볼 수 있습니다.

+0

동일한 이름 속성을 가진 입력이 4 개있는 이유는 무엇입니까? 그게 잘못되었습니다 – MaVRoSCy

+0

서블릿에서 오류가 발생하는 줄 37은 무엇입니까? – fmodos

+0

그것은 37 줄을 말한다 : studentDao.addSensor (sensor); 그리고 버튼을 하나만 남겨두고 하나의 속성 만 있지만 같은 오류가 발생하도록 3 개의 버튼을 삭제하려고했습니다. – F1sher

답변

0

줄 37이 "studentDao.addSensor (sensor);"인 경우

이는 StudentDaoLocal이 studentDao 변수에 제대로 주입되지 않았 음을 의미합니다. IDE가 EJB 또는 StudentDaoLocal에 관해 불평하는 다른 오류가 있습니까?

관련 문제