我对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将处理所有请求方法(GET
,POST
,...(。这些请求方法具有不同的含义,并有望以不同的方式行事,请参阅HTTP请求方法。
因此,您的servlet将无法为其中一些返回正确的响应,而您的servlet的用户可能会感到困惑,例如为什么DELETE
的行为与GET
相同而实际上没有修改源。
此外,根据您的servlet的作用,它可能会引入安全漏洞,例如,当您的servlet(也处理GET
(修改数据库时。