how to pass the same parameter from one JSP to two servlets? Then pass the different parameters from servlet to the same JSP?
我是网络应用程序的新手。
我的问题:如何将相同的参数从一个JSP传递到两个servlet?然后将不同的参数从servlet传递到同一个JSP?
重要!!我们应该首先进行流程A然后再进行流程B!
由于项目需要太多进程,我想将进程分成两个servlet。
目前,我完成了实现processA,它将搜索项从SEARCH PAGE JSP传递给SERVLET A(执行processA)并将结果传递给WELCOME PAGE JSP。它工作!!!(我突出显示在图片中的红色)
我用的代码:
在web.xml
1 2 3 4 5 6 7 8 | <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:
1 2 3 4 5 6 | <form action="download result"> Please enter a Keyword <input type="text" name="term"size="20px"> <input type="submit" value="submit"> </form> |
servletA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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!
您的
作为程序员,您必须首先决定请求需要处理的内容和方式,而不是让用户在
这两种方法都有不同的用途,请查看这里的区别
您必须将处理单元A和B都保存到单个servlet(servletA / servletB)中,
例如:首先从JSP调用
以下是代码:
search.jsp的
1 2 3 | <form action="download result" method="get"> ... </form> |
servletA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } |
注意:您可以执行反之亦然,即根据您的要求首先调用
对于您在评论中的查询,请使用以下代码:
servletA:
1 2 3 4 5 6 7 8 9 | 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:
1 2 3 4 5 6 7 8 9 | 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); } |