[英]how to pass the same parameter from one JSP to two servlets? Then pass the different parameters from servlet to the same JSP?
我是Web应用程序的新手。 我的问题:如何将相同的参数从一个JSP传递到两个Servlet? 然后将servlet中的不同参数传递给相同的JSP?
重要!! 我们应该先执行流程A,然后再执行流程B!
由于项目需要太多流程,因此我想将流程分为两个servlet。
当前,我完成实现processA,该过程将搜索项从SEARCH PAGE JSP传递到SERVLET A(执行processA),然后将结果传递给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!
您的SearchPage.jsp
表单只能有一种操作方法 (获取/发布等)。
作为程序员,您必须首先决定处理请求的方式和方式,而不是让用户在doPost
和doGet
方法之间进行选择。
两种方法有不同的用途,请在此处检查差异
您必须将处理单元A和B都保存在一个servlet(servletA / servletB)中,
例如:首先从JSP调用Process A
,然后从Process A
调用Process B
,最后将响应重定向/转发到Process B
Welcome.jsp
。
下面是代码:
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
。 另外,需要为此在form tag
更改method="post"
。
对于注释中的查询,请使用以下代码:
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.