[英]Can I invoke the doGet method and retrieve information from a servlet?
[英]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。
因此,瀏覽器地址欄中的網址應為
代替
與具體問題無關 ,在servlet中發射HTML是錯誤的設計。 它應該由JSP完成。 完成doGet()
業務邏輯后,可以使用RequestDispatcher#forward()
將請求轉發到JSP。 此外,無包類也是一個不好的設計。 你應該總是把公眾可重復使用的Java類的包。 無軟件包servlet僅適用於Tomcat + JVM版本的某些組合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.