Spring scopes, Session and Request are for HttpSession and HttpRequests. However, they only work in the web environment. If you are running outside a web container it will default back to Singleton.
Singleton means one and only one instance inside the ApplicationContext. Now in the web environment with SPring MVC, there are actually two ApplicationContext's created. One called the parent ApplicationContext which holds your "backend" business logic, service/repository beans. In the second the Web ApplicationContext would have Controllers, ViewResolvers, MappingAdapters and Handlers. The Web ApplicationContext has access to beans in the parent one, but the parent cannot see the web one.
You can create your own custom scopes and they will mean what you want them to mean. An example say would be
Thread scope, where beans get created per Thread. But you have to implement that work.
Prototype, is everytime you call getBean() you get a brand new instance.
I purposefully removed the need to think in terms of servlets because while two Spring scopes match in the web environment. The subject of Spring scopes is a different subject.
Hope that helps
Mark