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)
내가 아니다 데이터를 볼 수 있습니다.
동일한 이름 속성을 가진 입력이 4 개있는 이유는 무엇입니까? 그게 잘못되었습니다 – MaVRoSCy
서블릿에서 오류가 발생하는 줄 37은 무엇입니까? – fmodos
그것은 37 줄을 말한다 : studentDao.addSensor (sensor); 그리고 버튼을 하나만 남겨두고 하나의 속성 만 있지만 같은 오류가 발생하도록 3 개의 버튼을 삭제하려고했습니다. – F1sher