In other words, why isn't the login for your email just the front part of your email?  Like 'johns' for 'johns@yourwebaddress' 

The simple answer:  so the mailserver knows which 'johns' you are.
On a shared server, which most websites are on, there are several domains. So, there might be a 'johns@someoneElse' on the server. There can't be more than one 'johns' so the server needs a way to differentiate. Otherwise, you'd end up having address like AOL, with 'johns2001'.

More detailed explanation, for those who want it...

One ISP or domain, One username 

Email software (Outlook, Thunderbird, etc) still seems to use just the 'username' part of the email as the default setting. This was great when everyone used their ISP for their email address. Everyone at the ISP, like Earthlink, had their own unique email address, therefore the username could just simply be the username. Also, if you have your own dedicated mailserver, like Exchange or some other internal setup, there was only one domain to deal with, so again just a 'username' was needed.

As ISPs started merging, or being swallowed, they started having to make adjustments to logins. We started to see settings like user\ (if I recall correctly). If you used their webmail, you would have a dropdown box to make sure you used the proper domain, since the ISP was now handling more than one domain. You cannot have more than one 'johns' on a server. So, they needed to use the full address.

For a short time, I remember working with a system that every email account was a unique username on the server. What a pain in the butt.

Now, imagine trying to explain to all the users that the login for their email is completely different from their address. And, of course, the mail software like Outlook is still defaulting to just the first part of the email address, so the user still has to watch their settings. I think Outlook and Thunderbird (and other software) should either remove the automatic entry of a username as default, or use the full email address (forcing lowercase). Empty is better though, since if forces some sort of thinking on user input. (then we just have to worry about typos)