Я пытаюсь вызвать сервлет из файла JSP, чтобы сделать бизнес-логику и вернуться на ту же страницу - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть структура моего проекта следующим образом

enter image description here

вот мой jsp

<%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<h2>Binary Search</h2>

<form action ="SearchServlet" method = "post">
<label>Enter size of the list</label>
<input type="text" name ="listSize"><br><br>

<label>Here is your Generated list...!!!</label><br><br>
<textarea rows="10" cols="50"><c:out value="${list}"/> </textarea><br><br>

<label>Enter number to search in the list</label>
<input type="text" name ="searchNumber"><br><br>

<button type="submit" name="button" value="generate">Generate List</button>
<button type="submit" name="button" value="search">Search Number</button>
<button type="reset" name="button" value="reset">Reset</button>

</form>


</body>
</html>

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

вот мой сервлет

public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public SearchServlet() {
    super();
    // TODO Auto-generated constructor stub
}

protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
    GenerateList newList = new GenerateList();
    SearchList searchList = new SearchList();
    String button = request.getParameter("button");

    ArrayList<Integer> newGeneratedList = new ArrayList<Integer>();

    if ("generate".equals(button)) {
        newGeneratedList = newList.GeneratedList(Integer.parseInt(request.getParameter("listSize")));
        request.setAttribute("list",newGeneratedList);
        response.sendRedirect("index.jsp");

    } else if ("search".equals(button)) {

    }
    //doGet(request, response);
}

}

но я получаю 404 необнаружил ошибку при нажатии на эту кнопку. Я искал несколько часов и не могу найти причину, и я все еще начинающий в servlet.any ведет / помогает.

вот мой web.xml также

<web-app>
 <display-name>Archetype Created Web Application</display-name>

<servlet>
 <servlet-name>SearchServlet</servlet-name>
 <display-name>SearchServlet</display-name>
 <description></description>
 <servlet-class>SearchServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>BinarySearchServlet</servlet-name>
 <url-pattern>/binarySearchServlet</url-pattern>
</servlet-mapping>

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете использовать диспетчер запросов вместо sendRedirect в вашем сервлете.

Попробуйте:

 RequestDispatcher rd=request.getRequestDispatcher(jspName);
 rd.forward(request, response);

В параметре напишите свое имя JSP, откуда вы вызываете этот сервлет.Функция переадресации перенаправит вас на нужную вам страницу.

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