I used to design web pages for a living (back in the early days of the Internet). I had a ton of clients, mainly because my philosophy was to sit down with the client and draw out the web page and then ask questions about what behavior they wanted to simulate during the experience. I would offer advice, based on my design experience, and then in the end I would design exactly what they wanted. I also coded it from scratch because each client needed something very specific to him or her.
When I went back to graduate school for a degree in something different, I slowly started shedding my client list, until eventually I had only one client left (my choice). And the only reason I kept that one client was because her store was so specific in needs (I had built her shopping cart for her from scratch as well), and she refused to work with anyone else. It was only after she sold the business to someone else that I felt comfortable enough to drop that business as a client because the new owner had unrealistic expectations and was extremely rude to me every time I spoke to him.
One trick I did (and reason for sharing) is that in most cases when I built a site for someone, I simplified the user experience so that the client could make changes going forward. And if they ever needed future advice, I was always on call to help them out.
As for how I got so much business: Word of mouth. I didn't advertise or hype my services in any way. And it all started because I helped out a church that needed a web page and knew I was a programmer. That one client led to hundreds of clients for several decades.