2014-03-04 63 views
3

我想運行兩個servlet的,當我點擊HTML頁面 這裏提交按鈕是servlet和HTML代碼單擊提交按鈕後,如何運行多個servlet?

package com.serv; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class MyServlet 
*/ 
@WebServlet("/MyServlet") 
public class MyServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     try { 
      String user=request.getParameter("user"); 
      out.println("<h2>"+user+"</h2>"); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     } 

} 

這裏是第二屆的servlet

package com.serv; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class MyServlet2 
*/ 
@WebServlet("/MyServlet2") 
public class MyServlet2 extends HttpServlet { 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    response.setContentType("text/html"); 
    PrintWriter out1=response.getWriter(); 
    try { 
     String user1=request.getParameter("user1"); 
     out1.println("<h2>"+user1+"</h2>"); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

} 

下面是HTML文件

<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
    <form method="post" action="MyServlet"> 
     Name<input type="text" name="user"> 

    </form> 
    <form method="post" action="MyServlet2"> 
     Sir Name<input type="text" name="user1"> 
    <input type="submit" value="submit"> 
    </form> 

    </body> 
</html> 

我試着把提交按鈕放在不同的地方,但它不工作。有人能告訴我怎麼寫代碼,所以這兩個servlet將被稱爲

+0

一個servlet只能處理一個http請求,如果需要預處理,您可以創建一個篩選器 – Athanor

+0

對此有什麼用?通常應該有從請求到servlet的1:1映射。如果你想要發生多種事情,你的servlet應該對業務層進行不同的調用。 –

回答

0

您可以從一個servlet的使用

Request.getRequestDispatcher(String).forward()Request.getRequestDispatcher(String).include()

根據你想如何處理這些servlet生成的響應請求傳遞到另一個。我不清楚你爲什麼在不同的servlet中獲得useruser1參數。相反,在單個Servlet類中做所有事情。請看看主要用於初步處理請求的Servlet過濾器。閱讀關於Servlet Fiters以便適當地使用它們

+0

我只想顯示servlet的內容 – user1121210

+0

是的,你可以使用'include()'方法來做到這一點 – Keerthivasan

+0

我需要同時顯示兩個servlet的輸出將它的工作? – user1121210

0

一個解決方案可能是攔截與過濾器的請求,並轉發到它的兩個doPost方法。

這可以幫助你:

How to use a servlet filter in Java to change an incoming servlet request url?

另一種解決方案是使從一個Servlet中向其他前鋒。如果你可以修改servlet,可能這比過濾器更好。

看看這個:

http://www.devmanuals.com/tutorials/java/servlet/RequestDispatcher/forward.html

你也可以解決它從瀏覽器發送兩個請求,使用JavaScript,但我知道這個問題的範圍僅限於Java的。

相關問題