2015-01-07 73 views
0

我是一個編碼新手,並且試圖設置一個可以使用post方法收集信息的web表單。Get方法在Servlet中工作,POST方法不是

我使用一個在線教程,創建下列servlet

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

// Extend HttpServlet class 
public class HelloForm extends HttpServlet { 


    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // Set response content type 
     response.setContentType("text/html"); 

     PrintWriter out = response.getWriter(); 
     String title = "Using GET Method to Read Form Data"; 
     String docType = 
     "<!doctype html public \"-//w3c//dtd html 4.0 " + 
     "transitional//en\">\n"; 
     out.println(docType + 
       "<html>\n" + 
       "<head><title>" + title + "</title></head>\n" + 
       "<body bgcolor=\"#f0f0f0\">\n" + 
       "<h1 align=\"center\">" + title + "</h1>\n" + 
       "<ul>\n" + 
       " <li><b>First Name</b>: " 
       + request.getParameter("first_name") + "\n" + 
       " <li><b>Last Name</b>: " 
       + request.getParameter("last_name") + "\n" + 
       "</ul>\n" + 
       "</body></html>"); 
    } 


//Method to handle POST method request. 
public void doPost(HttpServletRequest request, 
        HttpServletResponse response) 
    throws ServletException, IOException { 
    doGet(request, response); 
} 

} 

我的HTML表格如下。當我將方法更改爲GET時 - 表單起作用。但是,當我將方法更改爲POST時,我得到HTTP狀態405 - HTTP方法POST不受此URL支持。

<html> 
<body> 
<form action="HelloForm" method="POST"> 
First Name: <input type="text" name="first_name"> 
<br /> 
Last Name: <input type="text" name="last_name" /> 
<input type="submit" value="Submit" /> 
</form> 
</body> 
</html> 

我嘗試@Override在其他線程中建議的post方法 - 但沒有奏效。

有人可以提出可能會出錯嗎?謝謝

回答

0

如果你使用的是Tomcat,你可以嘗試這個

<servlet-mapping> 
    ... 
    <http-method>POST</http-method> 

</servlet-mapping> 
除了

到Servlet的名稱和URL映射在web.xml servlet配置。

+0

感謝這工作! –

0

你的代碼包含一些錯誤,由於該代碼給出的錯誤。

公共無效的doPost(HttpServletRequest的請求, HttpServletResponse的響應) 拋出的ServletException,IOException異常{ 的doGet(請求,響應); //調用方法是不正確 }

+0

謝謝 - 它應該是什麼? –

0

您需要在POST函數中編寫代碼。

此外,爲什麼不使用JSP?在處理servlet時使用MVC方法是很好的傾向。 即,模型 - 視圖 - 控制器

將代碼傳遞給JSP(視圖)並從那裏創建必要的代碼。

祝你好運!

+0

感謝您的建議。請閱讀這個。 –