Java view-layer frameworks often claim to support some or all of the [[Model–view–controller]] design pattern.
==At a glance==
{| class="wikitable" border="1"
|-
! Action-based frameworks:
| [[Apache Struts]], [[Spring Framework|Spring MVC]]
|-
! Component-based frameworks:
| [[Apache Click]], [[Apache Tapestry]], [[Apache Wicket]], [[JavaServer Faces]]
|-
! Web template systems:
| [[Apache Tiles]], [[SiteMesh]], [[Thymeleaf]]
|-
|}
* [[JavaServer Faces]] (JSF), [[Apache Tapestry]] and [[Apache Wicket]] are competing component-based technologies, abstracting the [[Stateless protocol|stateless]] HTTP request-response cycle and the [[Java Servlet API]] behind an [[Object-oriented programming|object-oriented]], event-driven component model.
* In contrast, Struts and the [[Spring Framework]] are action-oriented frameworks that provide a thinner [[abstraction layer]] over the servlet [[API]].
* Apache Tiles is a templating framework designed to work with Struts.
* [[Facelets]] is a view definition and templating technology designed to work with JSF.
* [[SiteMesh]] can be used with any [[JavaServer Pages|JSP]].
* Facelets, Tapestry and Wicket have their own templating approaches based on [[HTML]]/[[XHTML]].
* [[Apache Click]] uses HTML based [[Apache Velocity]] templates and [[Plain Old Java Object]]s, with [[JavaServer Pages]] optional.
==Servlet API==
|