java - 我试图从 jsp 文件调用 servlet 来执行业务逻辑并返回到同一页面

标签 java eclipse maven jsp servlets

我的项目结构如下

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>

因此,当我单击生成列表按钮时,我希望它重定向到我的 servlet 并执行我的逻辑并返回 arraylist 以将其显示在文本区域中。

这是我的 servlet

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 的初学者。任何线索/帮助都会很棒。

这也是我的 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>

最佳答案

您可以在 servlet 中使用请求调度程序来代替 sendRedirect。

试试这个:

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

在参数中写入您调用此 servlet 的 JSP 名称。 转发功能将重定向到您想要的页面。

关于java - 我试图从 jsp 文件调用 servlet 来执行业务逻辑并返回到同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52385231/

相关文章:

java - Gradle Java项目布局?

linux - 在 Windows 7 客户端和 Linux 服务器之间同步的最佳程序

java - 当我在 OS X Mavericks 上运行 mvn 时出现以下错误 : Cannot run program "/bin/sh": error=2, No such file or directory

java - 在 IntelliJ Idea 中使用 Maven 依赖项运行 Arquillian 测试

java - Artifact 部署 Tomcat 9 期间的应用程序错误

java - 当我关闭程序时端口如何关闭

java - 为什么 NetBeans 找不到我的主类?

java - Spring DAO 测试

java - 使用 spring-boot-starter-integration 时找不到 org.springframework.integration.Message

java - Eclipse中奇怪的 "java.lang.NoClassDefFoundError"