Как запрос имеет атрибут без назначения из метода setAttribute() перед RequestDispatcher?

Когда мы пытаемся перенаправить запрос с помощью RequestDispatcher из сервлета в jsp, мы используем request.setAttribute()method.

  request.setAttribute("uname", name);
  RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
  rd.forward(request, response);

Но когда мы пытаемся перенаправить запрос от сервлета к другому сервлету, мы не используем метод request.setAttribute(), и результат печатается просто отлично.

  RequestDispatcher dis=request.getRequestDispatcher("welcome");          
  dis.forward(request, response);      

Можете ли вы объяснить, почему это так? Спасибо.


login.jsp

 <form action="login" method="post"> 
     User Name:<input type="text" name="uname"/><br/> 
     Password:<input type="password" name="upass"/><br/> 
     <input type="submit" value="SUBMIT"/> 
 </form> 

Сервлет LoginDetails

    String name = request.getParameter("uname");
    String pass = request.getParameter("upass");
    if (name.equals("dilini") && pass.equals("123")) {
    // ONLY ONE OPTION IS USING HERE
    // for a jsp
    request.setAttribute("uname", name);
    request.getRequestDispatcher("welcome.jsp").forward(request, response);

    // for a servlet
    request.getRequestDispatcher("welcome").forward(request, response);

   }

person Dil.    schedule 09.05.2018    source источник
comment
Тогда в запросе, вероятно, уже был этот атрибут. Если вы не ожидаете, что он каким-то волшебным образом появится в атрибутах запроса? JSP компилируется в сервлет во время выполнения, поэтому нет никакой разницы, перенаправляете ли вы JSP или сервлет.   -  person Kayaman    schedule 09.05.2018
comment
@Kayaman, мой вопрос в том, как сервлет имеет этот атрибут запроса, а jsp - нет? Поскольку они используют один и тот же метод для пересылки результата.   -  person Dil.    schedule 09.05.2018
comment
Это запрос, который либо имеет, либо не имеет атрибута. Сервлеты и JSP здесь ни при чем.   -  person Kayaman    schedule 09.05.2018
comment
Если ваш метод написан точно так, как вы его показали - с двумя строками, следующими друг за другом, вы устанавливаете атрибут в запросе для JSP, а затем перенаправляете тот же запрос (уже имеющий атрибут) на сервлет   -  person Veselin Davidov    schedule 09.05.2018
comment
@VeselinDavidov нет, я не использую оба метода. это только для примера   -  person Dil.    schedule 09.05.2018
comment
@Kayaman Пожалуйста, посмотрите на этот вопрос. stackoverflow .com/questions/11457336/   -  person Dil.    schedule 09.05.2018
comment
@VeselinDavidov Пожалуйста, посмотрите на этот вопрос. stackoverflow .com/questions/11457336/   -  person Dil.    schedule 09.05.2018
comment
Пожалуйста, убедитесь, что вы понимаете мои комментарии.   -  person Kayaman    schedule 09.05.2018
comment
@kayaman да, я знаю. Проблема в том, что во втором сценарии запрос не имеет назначенного атрибута. Итак, как это работает?   -  person Dil.    schedule 09.05.2018
comment
Как я уже сказал, либо у запроса есть атрибут, либо его нет. Если это работает, то запрос имеет атрибут. Опять же, JSP против сервлета здесь ни при чем. В карте атрибутов нет ничего особенного, вы можете представить, что это HashMap, если вам будет легче понять.   -  person Kayaman    schedule 09.05.2018
comment
Если вы перенаправляете тот же сервлет запроса или jsp, они должны иметь параметры . Можете ли вы показать приветственный сервлет и приветственный код jsp?   -  person Shubham Kadlag    schedule 09.05.2018
comment
@Kayaman да, я понимаю это громко и ясно. Не могли бы вы дать мне предложение, что, когда дело доходит до раздела сервлета, как запрос может иметь этот атрибут? так как они не назначали все это как атрибут. Я знаю, что это не связано с сервлетом или jsp. Я просто пытаюсь выяснить, в каком месте этот атрибут был присвоен запросу?   -  person Dil.    schedule 10.05.2018