当前位置: 首页 > 知识库问答 >
问题:

如何将相同的参数从一个JSP传递给两个servlet?然后将不同的参数从servlet传递到同一个JSP?

陶裕
2023-03-14

我是Web应用程序的新手。我的问题:如何将相同的参数从一个JSP传递到两个servlet?然后将不同的参数从servlet传递到同一个JSP?

重要!!我们应该先做过程A,然后再做过程B!!!!

由于项目需要太多进程,我想将这些进程分成两个servlet。

目前,我完成了实现进程A,它将搜索词从SEARCH PAGE JSP传递到SERVLET A(执行进程A)并将结果传递给WELCOME PAGE JSP。它有效!!!(我在图片中以红色突出显示)

我使用的代码是:Web。xml

  <servlet>
    <servlet-name>ServletA</servlet-name>
    <servlet-class>test.processA</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletA</servlet-name>
    <url-pattern>/download result</url-pattern>
  </servlet-mapping>

搜索页面JSP:

<form   action="download result">           
             Please enter a Keyword <br> 
            <input type="text" name="term"size="20px">
            <input type="submit" value="submit">

</form>

servletA:

public class processA  extends HttpServlet { 
     protected void doGet(HttpServletRequest request, 
              HttpServletResponse response) throws ServletException, IOException 
          {
            // reading the user input

            response.setCharacterEncoding("UTF-8");
            PrintWriter out = response.getWriter();
            // Retrieve search term from GET request and parse to desired format
            String searchTerm = (request.getParameter("term").toString()).replace("%20", "_").replace(" ", "_").replace("+", "_").replace(".", "");
            System.out.println("=====(servlet) searchTerm is:"+searchTerm);

  }

              protected void doPost(HttpServletRequest request, 
                      HttpServletResponse response) throws ServletException, IOException 
                  {
                 doGet(request, response);

          }  
                }

那么如何在系统中实现processB呢???看起来就像我展示的图片。

servletB

public class processB extends HttpServlet {
    protected void doGet(HttpServletRequest request,  HttpServletResponse response) throws ServletException, IOException 
          {
            doPost(request,response);
          }


    protected void doPost(HttpServletRequest request,  HttpServletResponse response) throws ServletException, IOException 
      {



        String searchTerm = (request.getParameter("term")).replace(" ", "_");
        String queryTerm = request.getParameter("term");

        System.out.println("=====(servlet) searchTerm is:"+searchTerm);

System.out.println("=====(servlet) keep doing the other process……………………!!!”);


}
}

非常感谢!或者,如果doGET和doPOST不能同时使用,我可以将processA更改为doPOST。

重要!!我们应该先做过程A,然后再做过程B!!!!

共有1个答案

子车青青
2023-03-14

对于您的SearchPage表单,只能有一种操作方法(get/post等)。jsp。

作为程序员,您必须首先决定需要处理什么以及如何处理请求,而不是让用户在doPostdoGet方法之间进行选择。

这两种方法有不同的目的检查这里的差异

您必须将处理单元A和B保持在单个servlet(servlet A/servlet B)中,例如:首先从JSP调用进程A,然后从进程A调用进程B,最后将响应重定向/转发到Welcome。jsp来自流程B
以下是代码:

Search.jsp

<form action="download result" method="get">
...
</form>

servletA:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
      {
        ... //processing logic of A
        ... //processing logic of A
        ... //processing logic of A
        doPost(request,response);//call Post 
      }
 protected void doPost(HttpServletRequest request,  HttpServletResponse response) throws ServletException, IOException 
  {
        ... //processing logic of B
        ... //processing logic of B
        ... //processing logic of B

        RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp");  
        rd.forward(request, response);  
  }

注意:您可以按要求执行相反的操作,即先调用doPost,然后再调用doGet。此外,需要为此更改表单标签中的方法。

对于您在评论中的查询,请使用以下代码:

servletA:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
      {
        ... //processing logic of A
        ... //processing logic of A
        ... //processing logic of A
        RequestDispatcher dispatcher = null;
        dispatcher=request.getRequestDispatcher("servletB");
        dispatcher.forward(request, response);//call Post 
      }

servletB:

 protected void doPost(HttpServletRequest request,  HttpServletResponse response) throws ServletException, IOException 
  {
        ... //processing logic of B
        ... //processing logic of B
        ... //processing logic of B

        RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp");  
        rd.forward(request, response);  
  }

 类似资料:
  • 问题内容: 我想将多个值从一个servlet传递到另一个servlet。请告诉我如何通过? 问题答案: 取决于您是否使用会话: 使用session.setAttribute()将数组存储在会话变量中。 使用session.getAttribute();检索数组。 但是,变量将一直保留到会话终止,您用其他东西覆盖它或将其删除为止。 如果将一个servlet转发到另一个servlet,则可以将其存储在

  • 我对JSP/servlets相当陌生,我一直在研究一些东西,它已经工作了一段时间。我有一个名为'telgir.jsp'的jsp,我从这个jsp向一个名为'tel Kayit'的servlet传递一个URL参数。 在LocalHost上运行时JSP页面的一个示例URL: 当我在servlet中接收到参数时,参数发生了变化,因此无法正确地对其进行解码并获得结果。根据我的研究,我意识到“%”符号使我的代

  • 编辑:这不是这个问题的重复,因为我正在尝试在同一个servlet的和之间发送数据。另一个问题询问如何在不同的servlet之间发送数据,但我已经通过将信息附加到URL来做到这一点(参见下面的第一个代码片段),这在同一个servlet中是做不到的。另外,链接的问题来自2011年,使用Tomcat 5.5,而我使用8.5。 我正在开发一个带有两个servlet和一个过滤器的小型Java 8/Tomca

  • 我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?

  • 我正在尝试将包含object的ArrayList从servlet传递到JSP。但是 Servlet文件: JSP文件:

  • 我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些