2017-10-19 7 views
0

私は答えが見つからないという問題があります。Springでサブミットした後、サーブレットはPOSTメソッドにアクセスしません

通常、私はIDEのデフォルト設定をすべて使用しますが、要件によっては、Spring MVCを使用して、基準を満たすためにapplicationContext.xmldispatcher-servlet.xmlを削除する必要があります。私がそれをしたとき、それはweb.xmlファイルが原因で動作を停止しましたが、私はServletのGETメソッドを取得することができましたが、POSTメソッドを使用する瞬間に、「要求されたリソースは利用できません。エラー。

このエラーを表示せずにPOSTメソッドを使用するにはどうすればよいですか?

これは、これは私のweb.xmlファイルで、これは私のサーブレットファイルです

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"; 
} 

} 

<%@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> 

私のindex.jspファイルです: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も有効です。

あなたは/app/Views/resultado.jspがアクセス可能である場合は、チェックする必要が失敗

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

のために引き起こしている、コードの行の下を見てする必要があるかもしれませんか?

+0

これは私の愚かなエラーでした。ごくまれにサーブレットマッピングに触れるので、私はその失敗があったと思っていました。 とにかく、ありがとう – Emenor

関連する問題