import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletTemplate extends HttpServlet {
public void doGet(HttpServletRequest ***request***,
HttpServletResponse ***response***)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
}
}
在上面的代码示例中,请求和响应是预定义的,即我可以使用任何其他名称而不是它们,如果它们是预定义的,它们是在哪个包中定义的? 我有另一个问题ServletException的工作是什么我的意思是我知道它处理异常,但我的问题是,是否有必要在每个progaramm使用它我想知道它的细节功能
答案 0 :(得分:3)
您可以使用您想要的任何名称在Java程序中命名任何变量。无关紧要,在接口中实现方法或从超类中重写方法的规则规定参数 types 必须匹配(相同类型,相同顺序,相同数字),但名称无所谓 - 一点都不重要。这与Java EE无关,它只是编程语言的工作方式。
关于ServletException
:快速查看documentation会发现异常是在doGet()
超类中定义的HttpServlet
方法中引发的,所以任何子类都是覆盖该方法也必须抛出它。
您的两个问题都与Java中的继承和覆盖工作方式有关,它们不是特定于Java EE的。我建议你在开始编写更复杂的代码之前先学习有关Java继承和覆盖的文档,你似乎很难掌握OO概念在Java中的应用。
答案 1 :(得分:1)
它们只是您要覆盖的参数的名称。在本质上你的ServletTemplate类继承了HttpServlet,那么如果你想为GET方法发送的请求提供功能,你必须从父类重写它,变量的名称无关紧要,Java的重写方法的规则是:
所以你可以按如下方式实现方法(如果你想)
public void doGet(HttpServletRequest x,
HttpServletResponse y) throws ServletException, IOException
{
PrintWriter out = y.getWriter();
}
您无法将参数反转为以下错误:
public void doGet(HttpServletResponse response,
HttpServletRequest request) throws ServletException, IOException
{
PrintWriter out = y.getWriter();
}