2013-08-08 2 views
2
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 я хочу знать его деталь функции- переменные или значения «запрос» и «ответ» предопределены в java ee?

ответ

3

Вы можете назвать любой переменными в Java-программе с любое имя, которое вы хотите. Не имеет значения, правила реализации методов в интерфейсе или переопределение методов из суперкласса диктуют, что параметры типов должны совпадать (одинаковые типы, одинаковый порядок, одинаковый номер), но имена не имеют значения - вообще. Это не имеет ничего общего с Java EE, это то, как работают языки программирования.

Что касается ServletException: быстрый взгляд на documentation показывает, что исключение бросают в методе doGet() определено в HttpServlet суперкласса, поэтому любой подкласс, который переопределяет метод должен бросить его, тоже.

Оба вопроса связаны с тем, как наследование и переопределение работы на Java, они не являются Java EE-специфическими. Я бы посоветовал вам сначала изучить документацию о наследовании и переопределении на Java, прежде чем начинать писать более сложный код, вы, похоже, не понимаете, как концепции OO применяются в Java.

1

Это просто аргумент, который вы переоцениваете. В Essentia ваш класс 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(); 
} 
+0

Спасибо много это было на самом деле полезно :) –

Смежные вопросы