Zdaj OCEWCD – pytanie 11

Co będzie efektem uruchomienia poniższego kodu servletu?

@WebServlet("/Test")
public class TestServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        request.getRequestDispatcher("test.jsp").forward(request, response);
    }
}
package eu.javablog.ocewcd;

public class BeanClass
{
    private String text;

    public BeanClass(String text)
    {
        this.text = text;
    }

    public String getText()
    {
        return text;
    }

    public void setText(String text)
    {
        this.text = text;
    }
}
<html>
<head>
    <title>Test Page</title>
</head>
<body>
    <jsp:useBean id="myBean" type="eu.javablog.ocewcd.BeanClass" scope="request">
        <jsp:setProperty name="myBean" property="text" value="DEFAULT" />
    </jsp:useBean>

    <p>${myBean.text}</p>
</body>
</html>

 

  1. Wyświetlony zostanie pusty ciąg znaków.
  2. W trakcie wykonania rzucony zostanie wyjątek.
  3. Kod nie skompiluje się.
  4. Wyświetlony zostanie DEFAULT.
  5. Wyświetlony zostanie null.

 

Pokaż odpowiedź »

Poprawna jest odpowiedź nr 2.

Podchwytliwość tego pytania polega na tym, że dla taga jsp:useBean podaliśmy wartość atrybutu type, a nie class. W takim wypadku, jeśli w podanym scope nie ma wskazanego przez nas atrybutu, bean nie będzie stworzony. Zamiast tego rzucony zostanie wyjątek: java.lang.InstantiationException: bean myBean not found within scope.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>