<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Java_view_technologies_and_frameworks</id>
	<title>Java view technologies and frameworks - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Java_view_technologies_and_frameworks"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Java_view_technologies_and_frameworks&amp;action=history"/>
	<updated>2026-10-25T20:32:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Java_view_technologies_and_frameworks&amp;diff=7850188&amp;oldid=prev</id>
		<title>imported&gt;Uzume: Apache Struts</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Java_view_technologies_and_frameworks&amp;diff=7850188&amp;oldid=prev"/>
		<updated>2024-07-17T20:14:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki143/index.php?title=Apache_Struts&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Apache Struts (page does not exist)&quot;&gt;Apache Struts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Programming language and libraries}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Java view technologies and frameworks&amp;#039;&amp;#039;&amp;#039; are [[web-based]] [[software libraries]] that provide the [[user interface]], or &amp;quot;[[Model–view–controller|view-layer]]&amp;quot;, of [[Java (programming language)|Java]] [[web application]]s. Such [[application framework]]s are used for defining [[web page]]s and handling the [[HTTP]] [[List of HTTP header fields#Requests|requests]] (clicks) generated by those web pages. As a sub-category of [[web framework]]s, view-layer frameworks often overlap to varying degrees with web frameworks that provide other functionality for Java web applications.&lt;br /&gt;
&lt;br /&gt;
Java view-layer frameworks often claim to support some or all of the [[model–view–controller]] design pattern.&lt;br /&gt;
&lt;br /&gt;
==At a glance==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action-based frameworks:&lt;br /&gt;
| [[Apache Struts]], [[Spring Framework|Spring MVC]]&lt;br /&gt;
|-&lt;br /&gt;
! Component-based frameworks:&lt;br /&gt;
| [[Apache Click]], [[Apache Tapestry]], [[Apache Wicket]], [[Jakarta Faces]]&lt;br /&gt;
|-&lt;br /&gt;
! Web template systems:&lt;br /&gt;
| [[Apache Tiles]], SiteMesh, [[Thymeleaf]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[Jakarta Faces]] (JSF), [[Apache Tapestry]] and [[Apache Wicket]] are competing component-based technologies, abstracting the [[Stateless protocol|stateless]] HTTP request-response cycle and the [[Jakarta Servlet]] [[API]] behind an [[Object-oriented programming|object-oriented]], event-driven component model.&lt;br /&gt;
* In contrast, Struts and the [[Spring Framework|Spring MVC Framework]] are action-oriented frameworks that provide a thinner [[abstraction layer]] over the servlet [[API]].&lt;br /&gt;
* Apache Tiles is a templating framework designed to work with Struts.&lt;br /&gt;
* [[Facelets]] is a view definition and templating technology designed to work with JSF.&lt;br /&gt;
* SiteMesh can be used with any [[Jakarta Server Pages|Jakarta Pages]] (JSP).&lt;br /&gt;
* Facelets, Tapestry and Wicket have their own templating approaches based on [[HTML]]/[[XHTML]].&lt;br /&gt;
* [[Apache Click]] uses HTML based [[Apache Velocity]] templates and [[plain old Java object]]s (POJOs), with JSP optional.&lt;br /&gt;
&lt;br /&gt;
==Servlet API==&lt;br /&gt;
{{main |Jakarta Servlet}}&lt;br /&gt;
&lt;br /&gt;
The Servlet API is the foundation of almost all Java Web View technologies. Servlet provides the basic mechanism for writing Java [[class (computer programming)|class]]es for web applications. Servlets can respond to HTTP requests, create cookies and maintain sessions.&lt;br /&gt;
&lt;br /&gt;
==Jakarta Pages (JSP) ==&lt;br /&gt;
{{main |Jakarta Server Pages}}&lt;br /&gt;
&lt;br /&gt;
* Built on top of the Servlet API, JSP provides a document-centric, tag-based templates, server programming model which can generate many forms of textual content.&lt;br /&gt;
* Java code may be embedded in JSP files and is compiled and executed when a request is received.&lt;br /&gt;
&lt;br /&gt;
==Apache Struts==&lt;br /&gt;
{{main |Apache Struts}}&lt;br /&gt;
&lt;br /&gt;
* Struts provides for a [[coupling (computer programming)|decoupling]] of the Controller and the View.&lt;br /&gt;
* Requests are received by a Java Class (Controller) which can decide which View to display.&lt;br /&gt;
* The actual View can be written in different view technologies, like JSP, free marker template, velocity template etc.&lt;br /&gt;
* An XML [[configuration file]] is used to specify the &amp;quot;Page Navigation&amp;quot;, i.e. the flow of the request to the appropriate Controller, and which View to display based on the outcome of the Controller.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: Spring MVC, Grails&lt;br /&gt;
&lt;br /&gt;
==Apache Tapestry==&lt;br /&gt;
{{main |Apache Tapestry}}&lt;br /&gt;
&lt;br /&gt;
* A component-based view framework.&lt;br /&gt;
* Classes are written as POJOs and byte-code transformed at runtime&lt;br /&gt;
* Configured with annotations and naming conventions rather than XML&lt;br /&gt;
* Compared to JSPs, enforces a clear separation of [[HTML element|HTML markup]] and Java code.&lt;br /&gt;
* HTML templates can be directly previewed by web designers&lt;br /&gt;
* Changed component classes are live-reloaded into running application for faster development.&lt;br /&gt;
* Uses the [[Post/Redirect/Get]] navigation pattern for form submission.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: Wicket, JSF&lt;br /&gt;
&lt;br /&gt;
==Apache Tiles==&lt;br /&gt;
{{see also |d:Special:EntityPage/Q28912908|l1=Apache Tiles}}&lt;br /&gt;
&lt;br /&gt;
* This is an HTML templating framework based on the [[composite pattern]].&lt;br /&gt;
* It allows for the HTML page to be broken up into multiple &amp;quot;pagelets&amp;quot;, called Templates, Definitions and Composing pages.&lt;br /&gt;
* At [[runtime (program lifecycle phase)|runtime]] the pagelets are stitched together to generate the final HTML. Pages are written in JSP.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: SiteMesh&lt;br /&gt;
&lt;br /&gt;
==Apache Wicket==&lt;br /&gt;
{{main |Apache Wicket}}&lt;br /&gt;
&lt;br /&gt;
* A component-based view framework.&lt;br /&gt;
* Pages directly interact with stateful Java components on the server.&lt;br /&gt;
* Components and their state are managed by the Wicket framework, freeing the application developer from having to use HttpSession directly to manage state.&lt;br /&gt;
* Does not require XML for configuration.&lt;br /&gt;
* Compared to JSPs, enforces a clear separation of [[HTML element|HTML markup]] and Java code.&lt;br /&gt;
* Web page components are &amp;#039;pushed&amp;#039; into the HTML markup from the code.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: Tapestry, JSF&lt;br /&gt;
&lt;br /&gt;
==Jakarta Faces and Facelets==&lt;br /&gt;
{{main |Jakarta Faces}}&lt;br /&gt;
&lt;br /&gt;
* A specification for component-based view frameworks.&lt;br /&gt;
* [[Eclipse Mojarra]] and [[Apache MyFaces]] implementations are available&lt;br /&gt;
* Typically uses Facelets for XML/XHTML-based templating.&lt;br /&gt;
* Classes are written as POJOs, with Annotations or XML configuration files used to associate them with page and component templates.&lt;br /&gt;
* The [[Unified Expression Language]] allows binding component fields and events to POJO bean properties and methods.&lt;br /&gt;
* Conversion and validation constraints can be specified in Facelets and are automatically applied, normally resulting in reposting of the same page with error information in case of failure.&lt;br /&gt;
* Navigation can be via configuration file rules or directly specified in the page.&lt;br /&gt;
* Can transparently support [[Ajax (programming)|Ajax]].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: Wicket, Tapestry&lt;br /&gt;
&lt;br /&gt;
==SiteMesh==&lt;br /&gt;
{{main |SiteMesh}}&lt;br /&gt;
&lt;br /&gt;
* SiteMesh is an HTML templating framework based on the &amp;quot;Decoration&amp;quot; model.&lt;br /&gt;
* It allows for the creation of a &amp;#039;decoration&amp;#039; template which is then applied to any other HTML to generate a new HTML.&lt;br /&gt;
* The newly generated HTML contains elements from the original HTML blended into the template.&lt;br /&gt;
* This allows for the original HTML to be very simple and devoid of any formatting or layout specification. The template, in turn, is devoid of any actual information.&lt;br /&gt;
* Blending the two allows for a consistent [[look and feel]] for all [[web page]]s.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Competitor&amp;#039;&amp;#039;&amp;#039;: Tiles&lt;br /&gt;
&lt;br /&gt;
==Spark==&lt;br /&gt;
{{main |Spark (software)}}&lt;br /&gt;
&lt;br /&gt;
* Spark a micro web framework built around a simple routing system&lt;br /&gt;
* It runs on an embedded [[Jetty (web server)|Jetty]] web server by default, but can be configured to run on other webservers.&lt;br /&gt;
* It supports three different templates engines: [[Apache Velocity|Velocity]], [[FreeMarker]] and [[Mustache (template system)|Mustache]]&lt;br /&gt;
* It aims to facilitate rapid development, and does not make use of annotations or proprietary solutions.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Portal|Computer programming}}&lt;br /&gt;
* [[List of web service frameworks]]&lt;br /&gt;
* [[List of Java frameworks]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Java (programming language)]]&lt;br /&gt;
[[Category:Java APIs]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Uzume</name></author>
	</entry>
</feed>