We started out using an anti-pull chest harness with my lab. It was useless. Then we got one of the no-pull halters. That was better, but she eventually figured out she could pull on it, too. Now we use a prong collar to keep her manageable. She still pulls, but not so much that she can pull me around.
However, these devices are just to help make it so that she can't or won't physically pull me around while we work on the actual problem at hand.
It's one of those issues that takes a lot of patience and a boat load of time. Unfortunately, at least for us, it has also been one of those things that her youth has made extremely difficult to curb (she's not even 3 yet) . She's a lab, so naturally she wants to greet or eat everything that we pass.
What I have found is that teaching her how to behave in the situations that create the pulling to begin with has been more effective than trying to just get her to never pull. She knows that if she wants a stranger to pet her she needs to be sitting and at my side. When we are out, if someone asks to pet her I just step between her and the person casually and ask her to sit, then encourage the stranger to pet her. It works great because the petting is the immediate positive reinforcement and I don't have to carry a clicker or treats for that aspect. She's getting much better and starting to recognize that being close to me is the way to get pets from strangers, not the opposite.
For the pulling to get at things to put in her mouth the "leave it" command has been great. I can see when she turns her focus away from the walk and to an object then correct with the command followed by positive reinforcement.