簡體   English   中英

為什么我的servlet代碼中不能使用doGet方法?

[英]Why can't i use doGet method in my servlet code?

我是servlet的新手,我已經開發了一個html頁面,該頁面具有一個觸發我的servlet的提交按鈕。一切都很好。但是現在我想使用GET方法,因為我的html頁面沒有發布任何內容,因此我進行了以下更改:1)在我的page.html文件中,我將method =“ POST”替換為method =“ GET”。 2)我在servlet中用doGet更改了doPost。 但是我收到了一條錯誤消息“不允許此處獲取”。為什么會這樣? 以下是可以正常工作(在進行更改之前)的原始文件:

我的page.html頁面:

<html>
<head>
<title>A simple revision of servlets</title>
</head>
<body>
<form method="POST" action="Idiot">
    <input type="SUBMIT">
</form>
</body>
</html>

我的部署描述符:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>TangoCharlie</servlet-name>
<servlet-class>Revise</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TangoCharlie</servlet-name>
<url-pattern>/Idiot</url-pattern>
</servlet-mapping>
</web-app>

最后是我的servlet文件,名為Revise.java

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

public class Revise extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    out.println("<html><body><h3>Hello India</h3></body></html>");
    out.println("Hello");
}
}

我不想添加任何輸入字段。我的目的是運行servlet,而無需在html頁面上使用“ POST”方法調用單個按鈕。

只需執行doGet()方法中的工作即可(不要忘記在編輯servlet代碼后正確重建/重新部署/重新啟動項目,否則您仍然會遇到“ HTTP 405:方法不允許”錯誤)並調用該URL servlet,而不是瀏覽器地址欄中的JSP URL。

因此,瀏覽器地址欄中的網址應為

http://example.com/contextname/白痴

代替

http://example.com/contextname/page.html


具體問題無關 ,在servlet中發射HTML是錯誤的設計。 它應該由JSP完成。 完成doGet()業務邏輯后,可以使用RequestDispatcher#forward()將請求轉發到JSP。 此外,無包類也是一個不好的設計。 你應該總是把公眾可重復使用的Java類的包。 無軟件包servlet僅適用於Tomcat + JVM版本的某些組合。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM