2017-10-19 2 views
0

문제점을 찾을 수 없습니다.Spring에서 제출 한 후 Servlet이 POST 메소드에 액세스하지 않습니다.

일반적으로 IDE가 기본값으로 설정 한 모든 것을 사용 하겠지만, 요구 사항에 따라 스프링 MVC를 사용하면 표준을 충족하기 위해 applicationContext.xmldispatcher-servlet.xml 만 삭제해야합니다. 내가 그것을했을 때, web.xml 파일 때문에 Servlet의 GET 메소드를 얻을 수 있었기 때문에 작동을 멈추었지만, POST 메소드를 사용할 때 "요청한 리소스를 사용할 수 없습니다."라는 메시지가 나옵니다. 오류.

이 오류를 표시하지 않고 POST 방법을 사용하려면 어떻게해야합니까?

이 내 서블릿 파일

package data.servlet; 

import data.dataAccessObject.ManipulaPersona; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
public class RecibirDatos extends HttpServlet { 

@Override 
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // Overriding service() usually isn't needed. - The default implementation mostly 
    // does the right thing® 
    super.service(request, response); 
} 

/** 
* Handles the HTTP <code>GET</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

} 

/** 
* Handles the HTTP <code>POST</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    ManipulaPersona mp = new ManipulaPersona(); 
    mp.crearPersona(request.getParameter("nombre"), request.getParameter("apellido")); 
    request.setAttribute("persona", mp.obtenerPersona()); 
    request.getRequestDispatcher("../Views/resultado.jsp").forward(request, response); 
} 

/** 
* Returns a short description of the servlet. 
* 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
} 

} 

이 내 web.xml 파일입니다 내의 index.jsp 파일

<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Ejercicio usando FORM sin AJAX</title> 
    <link href="../css/bootstrap.min.css" rel="stylesheet"> 
    <link rel="stylesheet" type="text/css" href="../css/main.css"> 
</head> 

<body> 
    <nav class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"> 
        <span class="sr-only">Toggle navigation</span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" href="./">Ejercicio</a> 
      </div> 
      <div id="navbar" class="collapse navbar-collapse"> 
       <ul class="nav navbar-nav"> 
       </ul> 
      </div> 
     </div> 
    </nav> 

    <div class="container"> 
     <div class="col-md-12"> 
      <h1>Ejercicio 1:- Usando Form y Action sin Ajax</h1> 
     </div> 
     <form action="../app/modulo/RecibirDatos.do" method="POST" id="form"> 
      <div class="form-group col-md-6"> 
       <label for="nombre">Nombre: </label> 
       <input type="text" name="nombre" id="nombre" class="form-control" placeholder="Inserte el nombre"> 
      </div> 
      <div class="form-group col-md-6"> 
       <label for="apellido">Apellido: </label> 
       <input type="text" name="apellido" id="apellido" class="form-control" placeholder="Inserte el apellido"> 
      </div> 
      <input type="submit" value="Submit" class="btn btn-primary btn-block"> 
     </form> 
    </div> 

    <script type="text/javascript" src="../js/jquery-3.2.1.js"></script> 
    <script type="text/javascript" src="../js/bootstrap.min.js"></script> 
    <script type="text/javascript" src="../js/bootbox.min.js"></script> 
    <script type="text/javascript" src="../js/main.js"></script> 
</body> 
</html> 

입니다 : GET 요청 작업

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 
<context-param> 
    <param-name></param-name> 
    <param-value></param-value> 
</context-param> 
<!-- <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> --> 
<servlet> 
    <servlet-name>Inicio</servlet-name> 
    <servlet-class>data.servlet.Inicio</servlet-class> 
</servlet> 
<servlet> 
    <servlet-name>RecibirDatos</servlet-name> 
    <servlet-class>data.servlet.RecibirDatos</servlet-class> 
</servlet> <!-- 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.lol</url-pattern> 
</servlet-mapping> --> 
<servlet-mapping> 
    <servlet-name>Inicio</servlet-name> 
    <url-pattern>/Inicio</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>RecibirDatos</servlet-name> 
    <url-pattern>/app/modulo/RecibirDatos.do</url-pattern> 

</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>Inicio</welcome-file> 
</welcome-file-list> 
</web-app> 
+0

RecibirDatos 클래스의 doPost()가 호출되는지 여부를 확인하고 알려주십시오. – Mudassar

+0

또한 전화를 걸기 위해 프로젝트를 어떻게 구조화했는지 조금 궁금합니다. – Mudassar

답변

1

경우 동일한 코드이면 POST도 작동해야합니다. 당신은 확인해야

request.getRequestDispatcher("../Views/resultado.jsp").forward(request, response); 

실패

에 대한 원인이있다 /app/Views/resultado.jsp에 액세스 할 수있는 경우

당신은, 코드의 라인 아래에서 볼 필요가 있을까요?

+0

그건 내 벙어리 오류였습니다. 드물게 서블릿 매핑을 만지는 것이 아니기 때문에 나는 그 오류가 있었다고 생각하고있었습니다. 어쨌든, 감사합니다. – Emenor