2016-07-20 56 views
0

我目前正在tomcat 8上運行一個webapp並希望在終端屏幕上顯示接收某個post請求的輸出而不呈現網頁。舉個例子,我期待使用類似這樣的命令:配置java webapp使用curl命令通過http傳輸數據

curl -d "param1=xxx&param2=yyy" localhost:8080/webapp 

,並得到一個類似的(短)的響應:

"some data here" 

我不希望得到的HTML一個網頁,如果我在瀏覽器中點擊該網址,就會顯示該網頁。有沒有什麼辦法可以在Tomcat中完成?

回答

0

必須指定該請求是一個POST請求中的Tomcat由網絡應用(servlet中,JSP或其他)產生

$ curl -i -X POST -d "param1=xxx&param2=yyy" localhost:8080/webapp 
2

AFAIK響應內容。你可能應該創建一個這樣的Web應用程序,它將只輸出一個沒有標籤和其他html內容的文本f.e.創建Tomcat的webapps根目錄中的index.jsp文件(通常tomcat_root \的webapps \ ROOT)與此內容(是的,只是一個短線):

<%="some data here"%>

你會被該請求獲得原始數據,但是,無論如何,這將是一個HTTP響應。如果您打算處理較低級別的數據(比如說TCP),則會從服務器額外的數據(如標題值等)中獲得。

此外,您可能不得不關心設置正確的標題以響應:fe:ContentType: text/plain,如果你的客戶端軟件關心它。或者直接跳過它:無論如何,您都將獲得原始文本內容,而與內容類型標題值無關。

+0

真棒回答。我確實製作了這個webapp,並且正在使用該webapp中的一個servlet來回答'get'。但是,當我嘗試向服務器發送請求時,我的servlet類中的「doGet()」和「doPost()」方法不會被調用。我能做些什麼來糾正這個問題? – AWidget

+0

@AWidget您可以分享您的示例代碼來查看它並在需要時進行更正嗎?如果你使用的是servlet而不是JSP(實際上JSP是通過servlet容器編譯成類文件的),你必須將編譯好的類放在'tomcat_root/webapps/ROOT/** WEB-INF/classes **'中,或者如果你有一個jar - 到'tomcat_root/webapps/ROOT/** WEB-INF/lib **'。另外,您可能必須正確設置您的Web應用程序描述符(文件'web.xml'),請參閱此處:https://www.mkyong.com/servlet/a-simple-servlet-example-write-deploy-run/ – lospejos

+0

好的 - 這裏是web.xml的類。我正在使用eclipse,並且證實這確實是如何部署webapp的(使用WEB-INF/classes中的類)。我也嘗試將應用程序移動到'ROOT'目錄,但無濟於事: 當我啓動服務器時,構造函數(我可以看到打印的行),但請求處理程序被忽略。 – AWidget