from my personal experience I'd suggest you to keep the "string" properties where they belong to. In my opinion it makes everything more difficult if create separate interfaces or classes to hold these constants.
Why not just create public static string constants in those classes where you need them? This is a common practice in many swing components which also use strings as property names for listeners and other components which depend on these names. So you have only one place where you really define the names and all other classes only have to rely on some public static final string constants.
In a modern web application, the largest consumer of scoped variable names is EL expressions. And since the EL does not natively have any way to access string constants, defining such constants for scoped variable names is problematic.
If you really really really want to do it that way, you can read this article in which I devise a way to expose constants to the EL, but I never use it for scoped variable names -- I think it creates too messy a level of indirection.
Personally, when it comes to scoped variable names, I just type carefully.