Попытка перейти на разные jsps из сервлета в зависимости от нажатия кнопки в форме в индексе jsp

Я пытаюсь перейти к другим JSP от нажатия кнопок в моем индексном (основном) jsp через сервлет, где я проверяю, была ли нажата кнопка, и перехожу к этому сервлету в моем doGet. Когда я открываю браузер и нажимаю на кнопки, я получаю сообщение об ошибке: ОШИБКА HTTP 405 Проблема с доступом к /lab02a_dhilbert1/index. Причина:

HTTP method POST is not supported by this URL

Я не уверен, в чем причина этого, и мне нужно перейти на другие страницы через doGets.

У меня это работало так, как оно настроено в отдельном doPost, но предполагается, что это должно быть сделано в doGet. Я пытался исследовать этот вопрос и ничего не нашел.

//сервлет

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    //go to correct jsp depending on button press
    if (req.getParameter("addNumbers") != null) {
        System.out.println("Add Numbers Servlet: doGet");
        req.getRequestDispatcher("/_view/addNumbers.jsp").forward(req, resp);
    }
    else if (req.getParameter("multiplyNumbers") != null) {
        System.out.println("Multiply Numbers Servlet: doGet");
        req.getRequestDispatcher("/_view/multiplyNumbers.jsp").forward(req, resp);
    }
    else if (req.getParameter("guessingGame") != null) {
        System.out.println("Guessing Game Servlet: doGet");
        req.getRequestDispatcher("/_view/guessingGame.jsp").forward(req, resp);
    }
    else {
        System.out.println("Index Servlet: doGet");
        req.getRequestDispatcher("/_view/index.jsp").forward(req, resp);
    }   
}

//JSP

<body>
    <form action = "${pageContext.servletContext.contextPath}/index" method = "post">
        This is the index view jsp 
        <br><input type = "Submit" name = "addNumbers" value = "Add Numbers!!">
        <br><input type = "Submit" name = "multiplyNumbers" value = "Multiply Numbers!!">
        <br><input type = "Submit" name = "guessingGame" value = "Guessing Game!!">
    </form>
</body>

Индексный jsp должен отправлять нажатия кнопок сервлету, а затем сервлет должен вызывать правильный jsp в зависимости от того, какая кнопка была нажата.

ваш метод формы должен соответствовать методу сервлета. пример метода POST = doPost и метода GET = doGet

Ker p pag 08.02.2019 04:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
20
1

Ответы 1

Для почтового запроса вы должны написать код в

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

    //go to correct jsp depending on button press
    if (req.getParameter("addNumbers") != null) {
        System.out.println("Add Numbers Servlet: doGet");
        req.getRequestDispatcher("/_view/addNumbers.jsp").forward(req, resp);
    }
    else if (req.getParameter("multiplyNumbers") != null) {
        System.out.println("Multiply Numbers Servlet: doGet");
        req.getRequestDispatcher("/_view/multiplyNumbers.jsp").forward(req, resp);
    }
    else if (req.getParameter("guessingGame") != null) {
        System.out.println("Guessing Game Servlet: doGet");
        req.getRequestDispatcher("/_view/guessingGame.jsp").forward(req, resp);
    }
    else {
        System.out.println("Index Servlet: doGet");
        req.getRequestDispatcher("/_view/index.jsp").forward(req, resp);
    }   
}

Надеюсь, это будет работать идеально для почтового запроса.

Другие вопросы по теме