Hi Gurpeet. I changed your title to something more appropriate. Typically, if someone posts "urgent" in their title, their question never gets answered because to everyone their own questions are urgent, and why is your question more urgent than theirs, and therefore don't want to help you out.
Anyway, yes there is some overlap and some differences between all the different
Java technologies that you mentioned.
So are frameworks for application development, some just web frameworks, some both.
Some are just for Data Access. Some are just specifications and there are many implementations out there.
So what you need to look at first to figure out what that means is to look at the typical architecture for an enterprise Java Applications and what a layered architecture means, and what each layer is responsible for. Then we can kind on lay the technologies down on those layers and see what layers they cover.
First, a layered enterprise Java application typically have a service layer for business logic code, and DAO/Repository layer for querying for data. There is an infrastructure layer to deal with Transactions and DataSource Connections. Then your UI layer goes on top of your service layer and could be a Swing UI, a web layer, or many other technologies that might not have a UI at all.
so say from top to bottom layers
Web Layer
Service Layer
Dao Layer
Infrastructure Layer
Data storage
So now that we have that architecture what about those java technologies. First Java EE, this is a specification that defines JSF, EJB, JSP, Servlets etc. It used to also include JPA. So Java EE is basically a bunch of technologies for enterprise Java apps. So EJBs could be used for the Service layer, JSP/Servlets or JSF for the Web Layer, and JPA for DAO Layer. Since it is a spec JPA has many implentations, Hibernate for one implements JPA and more, so therefore you could use Hibernate as JPA.
The Spring Framework is like Java EE, in that there are many technologies that Spring helps with and covers, and can be used instead of Java EE which sometimes is too tightly coupled in code and environment.
Struts is a Web Layer framework. Meaning it covers the Web UI parts.
Spring has a Web Layer framework too called Spring MVC.
Hope that helps clear things up so that you can continue your studies.
Mark