Исправление проблемы передачи данных от одного сервлета к другому - PullRequest
0 голосов
/ 21 октября 2019

Я написал код jsp-страницы, двух сервлетов и последней страницы. Страница jsp отправляет данные из формы первому сервлету (Controller), который, в свою очередь, отправляет второму серверу (AreaCheck). На странице / controller (см. Web.xml) возникает ошибка 405 «HTTP-метод POST не поддерживается».

index.jsp:

<script>
    function clickCheckbox(numbid){
        var currentCB = document.getElementById(numbid);
        if (currentCB.checked === true){
            document.getElementById('hidden_x').value = numbid;
        }
        else{
            document.getElementById('hidden_x').value = "";
        }
    }
</script>
            <form action="controller" method="post" id="form"  onsubmit="check(); return true;" novalidate>

                <label class="instructions" for="hidden_x"> Insert X: </label>
                <p><input type="checkbox" class="button" name="button_x" value="-5" id="-5" onclick="clickCheckbox(-5)"> -5 </p>

                <input type="hidden" name="hidden_x" id="hidden_x" value=""> <br>


                <label for="yCoordinate" class="instructions"> Insert Y: </label>
                <input type="text" id="yCoordinate" name="yCoordinate" autocomplete="off">

                <label class="instructions" for="radius"> Insert R: </label>
                <select id="radius" name="radius">
                    <option value="1">1</option>
                </select>
                <br>

                <p id="button" class="input_button">
                    <input type="submit" value="Check the result.">
                </p>
            </form>

ControllerServlet.java:

public class ControllerServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String X = req.getParameter("hidden_x");
    String Y = req.getParameter("yCoordinate");
    String R = req.getParameter("radius");

    req.setAttribute("XCoordinate", X);   
    req.setAttribute("YCoordinate", Y);
    req.setAttribute("Radius", R);
    req.getRequestDispatcher("areaCheck").forward(req, resp);
}}

AreaCheckServlet.java:

public class AreaCheckServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
    String x = (String) req.getAttribute("XCoordinate");
    String y = (String) req.getAttribute("YCordinate");
    String r = (String) req.getAttribute("Radius"); 
    //some other logic goes here

    req.getRequestDispatcher("result.html").forward(req, resp);
}}

Web.xml:

<!--Controller Servlet-->
<servlet>
    <servlet-name>Controller</servlet-name>
    <servlet-class>App.Servlets.ControllerServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>/controller</url-pattern>
</servlet-mapping>

<!--Servlet that checks hitting the area-->
<servlet>
    <servlet-name>AreaCheck</servlet-name>
    <servlet-class>App.Servlets.AreaCheckServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>AreaCheck</servlet-name>
    <url-pattern>/areaCheck</url-pattern>
</servlet-mapping>

Здесь показан только соответствующий код. Логика программы может показаться странной, но ее нельзя изменить, потому что это задача.

Как я могу это исправить?

1 Ответ

0 голосов
/ 21 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...