2013-11-28 72 views
0

我有一個基本的HTML形式顯示其提交POST請求一個servlet:HTML表單提交錯誤的servlet

我提交使用的網址:http://localhost:8080/sample/forms.html

但是,當請求被提交上下文根部分被擦除並且URL被看作是:

http://localhost:8080/getFormParam 

中使用的形式爲:

<form method="post" action="/getFormParam"> 
<input type="text" name="user" /> 
<input type="text" name="id"/> 
<input type="submit" value="Submit"/> 
<input type="reset" value="clear"/> 
</form> 

web.xml映射是

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
    <servlet> 
     <servlet-name>getFormParam</servlet-name> 
     <servlet-class>dep.getFormParam</servlet-class> 
     </servlet> 
     <servlet-mapping> 
     <servlet-name>getFormParam</servlet-name> 
     <url-pattern>/getFormParam</url-pattern> 
     </servlet-mapping> 
     </web-app> 

這裏有什麼問題。

回答

1

的問題僅僅是前斜槓「/」在動作參數

<form method="post" action="/getFormParam">

當你提到的網址前的斜線,這意味着資源位於的上下文根tomcat服務器(不是應用程序的上下文根),在本例中是localhost:8080。如果您將其更改爲

<form method="post" action="getFormParam">

就會開始工作就像你想要的。但是,如果您不再陷入這種情況,最好知道URL重寫的概念。爲了克服這種情況,JSTL庫中有一個標籤,其中包含URL的名稱確保你傳遞它的任何URL,它總是會解析到應用程序的上下文根(Url Re-writing)。

更多詳細信息可查詢here

1

的問題是在

<form method="post" action="/getFormParam"> 

將其更改爲(刪除/)

<form method="post" action="getFormParam"> 

文章網址將成爲http://localhost:8080/sample/getFormParam 該servlet現在獲得請求。