The difference is of the scope of the atribute . If you set an attribute in the request , then it will only be visible to the component having access to that request. for example

In a servlet is you set an attribute 'A'in the request and attribute 'B' in the session then attribute 'A' will be accessible to the JSP/Servlet having that request object,as http is a stateless protocol, there will be new HttpRequest for each request of any component from the server, Attribute 'B' will be accessible to all the request from same client, as all the request from the sam client will use a single session object on the server side.