He does it because he gets the response he wants - if when someone comes in the room, or returns from being out they do not immediately fuss him (even by pushing him away) then he will learn he doesn't get attention until he is calm. Make him wait till you are ready - totally ignore him turning away or just doing something else like making a cup of tea. When he calms down then call him to you and praise gently.
Put him on a lead when other dogs are around and teach him to lie down - start with a 'sit' and use a titbit to draw him forward and down towards the ground, praising him when he goes down. Definitely join a dog training club where he will learn to behave in the company of others, he will really enjoy it and its also good exercise for body and brain (mine are totally zonked after a training session).