gpt4 book ai didi

java - 为什么不使用 service() 代替 doPost() 和 doGet() ?

转载 作者:行者123 更新时间:2023-12-02 01:31:35 25 4
gpt4 key购买 nike

我对 Java 很陌生。我有一个运行良好的脚本,但我想了解其背后的逻辑。

如果用户输入他的用户名,我想输出相同的内容。

我正在使用

protected void service(HttpServletRequest req, HttpServletResponse resp)

但从许多教程中我看到

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

我认为我了解 doGet()doPost() 之间的区别。它们都将由 service() 方法调用。那么,如果我可以简单地使用 service(),为什么我要使用 doGet()doPost() 呢?

我的整个代码如下所示:

package ch.yourclick.zt;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login")
public class Login extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.print(req.getParameter("username"));
}
}

最佳答案

如果您覆盖 service,您的 servlet 将处理所有请求方法(GETPOST ...)。这些请求方法具有不同的含义,并且预期以不同的方式表现,请参阅 HTTP request methods .

因此,您的 servlet 将无法返回其中某些响应的正确响应,并且您的 servlet 的用户可能会感到困惑,例如为什么 DELETE 的行为与 GET 相同,并且实际上并不修改源代码。

此外,根据您的 servlet 的用途,它可能会引入安全漏洞,例如当您的 servlet(也处理 GET)修改数据库时。

关于java - 为什么不使用 service() 代替 doPost() 和 doGet() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55985597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com