In this talk, we first recall classic projection theorem for closed convex subsets in a Hilbert space. Then we introduce two extensions of the projection theorem in the Banach space where one is established by the normal cone and the other is given by the contingent cone. Finally, we present non-convex extension results of the projection theorem. Applications of these extensions to convex optimization problems are also discussed.