I know core java and also know servlets and jsp basics. But I am confused with how to move from here. What I should learn first among many technologies present like JSF, Struts, AJAX, Spring, HTML5, CSS3, Java script, JQuery, XML, DOM, Webservices, Hibernate etc. I have decided the following order. please let me know if I need to make any changes.
2)HTML and CSS (basic html I know)
Lots of people play lip service to separation of roles between the front end and the back end, but in the real world you need both to be viable.
Assigning an order is rather meaningless. There are technologies there that are overlapped. For example, why wait to learn how to use Ant? Why jQuery without knowing Ajax? You're not going to be able to do much with HTML, jQuery, Ajax and so on without understanding the DOM. And so on.
I would not bother with JSF unless you have a specific need for it.
I would say if you going to learn Hibernate, make sure you have an understanding of JDBC first. You don't need to know JDBC in order to use Hibernate but like I said before, it is best to learn what is going on "underneath the hood".