If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: tapestry.apache.org/principles.html - Principles - Apache Tapestry.

site address: tapestry.apache.org/principles.html redirected to: tapestry.apache.org/principles.html

site title: Principles - Apache Tapestry

Our opinion (on Monday 13 July 2026 22:54:25 UTC):

GREEN status (no comments) - no comments

Meta tags:
keywords=tapestry, apache, apache tapestry, framework, java, web, component, open source, application, dynamic, scalable, robust, servlet;
description=Apache Tapestry is a open-source component-oriented framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.;

Headings (most frequently used words):

principle, principles, static, structure, dynamic, behavior, adaptive, api, differentiate, public, vs, internal, apis, ensure, backwards, compatibility, agility, scalability, related, articles,

Text of the page (most frequently used words):
the (88), tapestry (53), and (40), you (26), that (22), apache (21), page (21), this (17), your (13), are (12), component (12), code (12), will (10), classes (10), method (10), for (9), backwards (9), when (9), structure (9), internal (8), form (8), framework (7), about (7), have (7), can (7), compatibility (7), not (7), more (7), requests (7), static (7), java (6), application (6), getting (6), new (6), methods (6), components (6), what (6), from (6), but (6), also (6), event (6), under (5), dynamic (5), principles (5), use (5), apis (5), should (5), with (5), principle (5), public (5), private (5), would (5), class (5), license (4), trademarks (4), all (4), other (4), api (4), user (4), without (4), has (4), parameters (4), resources (4), invoked (4), even (4), going (4), how (4), which (4), inside (4), need (4), between (4), base (4), into (4), redirect (4), property (4), shared (4), software (3), foundation (3), may (3), logo (3), server (3), source (3), development (3), tapestry5 (3), support (3), mailing (3), started (3), documentation (3), change (3), upgrade (3), existing (3), adapt (3), provided (3), annotations (3), simple (3), naming (3), allow (3), inject (3), name (3), release (3), first (3), next (3), external (3), many (3), further (3), key (3), rendering (3), pages (3), post (3), information (3), annotation (3), triggered (3), within (3), onsuccessfromform (3), each (3), password (3), create (3), users (3), scalability (3), instance (3), different (3), behavior (3), marks (2), their (2), feather (2), servlet (2), works (2), any (2), web (2), applications (2), thanks (2), security (2), sponsorship (2), events (2), issues (2), apachetapestry (2), edit (2), involved (2), stackoverflow (2), lists (2), community (2), introduction (2), download (2), where (2), major (2), features (2), compatible (2), because (2), great (2), finally (2), instead (2), implement (2), simply (2), using (2), conventions (2), annotate (2), tell (2), circumstances (2), versions (2), were (2), did (2), work (2), ensure (2), ever (2), services (2), implementation (2), designed (2), much (2), issue (2), ancient (2), extend (2), objects (2), identified (2), things (2), action (2), such (2), client (2), side (2), after (2), bit (2), stored (2), session (2), persist (2), field (2), again (2), whatever (2), them (2), listener (2), only (2), multiple (2), provides (2), view (2), concerns (2), html (2), template (2), validate (2), success (2), there (2), return (2), value (2), options (2), short (2), names (2), onvalidatefromform (2), login (2), string (2), userid (2), authenticator (2), control (2), over (2), than (2), interfaces (2), changed (2), frameworks (2), jsf (2), feature (2), its (2), adaptive (2), building (2), used (2), instances (2), httpsession (2), require (2), system (2), very (2), having (2), agile (2), cycle (2), file (2), changes (2), less (2), does (2), dynamically (2), agility (2), limiting (2), elements (2), out (2), renders (2), copyright, 2020, licensed, version, mentioned, registered, respective, owners, complements, builds, upon, standard, container, open, oriented, creating, robust, highly, scalable, social, faq, apidocs, reference, docs, guide, team, home, project, already, evident, improvements, occurred, while, remaining, 100, long, avoided, temptation, internally, degree, affecting, write, cracked, nut, allowing, assurance, future, releases, breaking, call, passing, values, via, rigidness, fixed, interface, hints, based, largely, just, ordinary, fields, maintain, state, older, plagued, problems, every, attempt, laid, ground, true, forwards, find, yourself, forced, make, please, bring, developer, list, know, exposed, fall, umbrella, anything, org, package, part, man, behind, curtain, directly, bad, idea, one, concern, clean, slate, ruthless, plaguing, earlier, was, lack, clear, delineation, fact, those, off, limits, confused, been, factor, steep, learning, curve, meme, differentiate, explicitly, separates, actions, render, two, separate, performing, clicking, link, submitting, results, pattern, alternatively, then, helps, urls, browser, book, markable, requires, get, saves, needless, effort, readable, writable, provide, accessor, automatically, cases, additional, available, passed, adding, order, supply, contrast, parameter, bound, invoke, had, approach, supports, listeners, improved, separation, logic, perform, cross, validations, validation, errors, directs, jump, another, here, exist, exceptions, redisplayed, snippet, demonstrates, operates, injected, inform, convention, identifies, handled, loginauthenticator, void, isvalidlogin, recorderror, invalid, object, postlogin, example, gets, submitted, adapts, they, take, returned, driven, well, until, often, experience, breaks, match, traditional, including, struts, now, expected, conform, large, scale, systems, important, consider, deployed, servers, means, browsing, extra, lean, high, especially, clustered, configuration, linking, particular, vastly, single, makes, speeding, monitors, service, templates, files, hot, swaps, running, requiring, restart, save, touch, losing, data, live, reloading, working, environment, deliver, writing, lot, pojo, loading, uses, across, threads, modifiable, imply, request, own, entire, serialized, restored, handle, later, why, choose, core, really, matter, meeting, requirements, glance, seems, quite, created, fly, common, desktop, guis, swing, turns, actually, properties, plenty, conditional, looping, advanced, implementations, beaneditor, grid, gives, appears, starting, concept, pretty, obvious, look, situations, mean, implies, build, define, types, circumstance, during, processing, able, type, place, tree, tutorial, related, articles, search, roadmap,


Text of the page (random words):
principles apache tapestry apache tapestry getting started documentation download community mailing lists stackoverflow support getting involved edit this page apachetapestry tapestry5 development source code issues roadmap apache about apache events sponsorship license security thanks search apache tapestry documentation principles principles related articles page getting started page introduction page tapestry tutorial page tapestry for jsf users page principles principle 1 static structure dynamic behavior the concept of dynamic behavior should be pretty obvious when you are building a web application things should look different for different users situations but what does it mean that tapestry has static structure static structure implies that when you build a page in tapestry you are going to define all of the types of components that are used within that page under no circumstance during the rendering or event processing of the page will you be able to dynamically create a new type of component and place that into the component tree at first glance this seems quite limiting other frameworks allow new elements to be created on the fly it s also a common feature of desktop guis such as swing but static structure turns out to be not so limiting after all you can create new elements you re actually re rendering existing components with different properties and you have plenty of options for getting dynamic behavior out of your static structure from the simple conditional and looping components to the more advanced implementations of tapestry s beaneditor or grid components tapestry gives you control over what renders and when and even where it appears on the page and starting in tapestry 5 3 you can even use the dynamic component which renders whatever is in an external template file why did tapestry choose static structure as a core principle it s really a matter of meeting the requirements of agility and scalability agility tapestry is designed to be an agile working environment code less deliver more to support you writing less code tapestry does a lot of work on your pojo pages and components when first loading them it also uses shared instances of page and component classes shared across multiple threads and requests having dynamically modifiable structure would imply that each request has its own instance and further that the entire structure would need to be serialized between requests so that it can be restored to handle later requests tapestry also makes you more agile by speeding up the development cycle with live class reloading tapestry monitors the file system for changes to java page classes component classes service implementation classes html templates and component property files and it hot swaps the changes into the running application without requiring a restart or losing session data this provides a very short code save view cycle that no other framework can touch scalability when building large scale systems it is important to consider how your resources are going to be used on each deployed server and how that information is going to be shared between servers static structure means that page instances do not need to be stored inside the httpsession and simple browsing users do not require extra system resources this lean use of the httpsession is key to tapestry s very high scalability especially in a clustered configuration again linking an instance of a page to a particular client would require vastly more server side resources than having a single shared page instance principle 2 adaptive api a key feature of tapestry 5 is its adaptive api in traditional java frameworks including struts jsf and even the now ancient tapestry 4 user code is expected to conform to the framework you create classes that extend from framework provided base classes or implement framework provided interfaces this works well until you upgrade to the next release of the framework with the new features of the upgrade you will more often than not experience breaks in backwards compatibility interfaces or base classes will have changed and your existing code will need to be changed to match in tapestry 5 the framework adapts to your code you have control over the names of the methods the parameters they take and the value that is returned this is driven by annotations which tell tapestry under what circumstances your methods are to be invoked for example you may have a login form and have a method that gets invoked when the form is submitted public class login persist property private string userid property private string password component private form form inject private loginauthenticator authenticator void onvalidatefromform if authenticator isvalidlogin userid password form recorderror invalid user name or password object onsuccessfromform return postlogin class this short snippet demonstrates a bit about how tapestry operates pages and services within the application are injected with the inject annotation the method names onvalidatefromform and onsuccessfromform inform tapestry about when each method is to be invoked this naming convention identifies the event that is handled validate and success and the id of the component from which the event is triggered the form component the validate event is triggered to perform cross field validations and the success event is only triggered when there are no validation errors the onsuccessfromform method s return value directs tapestry on what to do next jump to another page within the application here identified as the class for the page but many other options exist when there are exceptions the page will be redisplayed to the user by contrast in tapestry 4 the form component s listener parameter would be bound to the method to invoke by name further the listener method had to be public the tapestry 5 approach not only supports multiple listeners but also provides an improved separation of view concerns inside the page s html template and logic concerns inside the java class in many cases additional information about the event is available and can be passed into the method simply by adding parameters to the method again tapestry will adapt to your parameters in whatever order you supply them tapestry also saves you needless effort the property annotation marks a field as readable and writable tapestry will provide the accessor methods automatically finally tapestry 5 explicitly separates actions requests that change things and rendering requests that render pages into two separate requests performing an action such as clicking an action link or submitting a form results in a client side redirect to the new page this is the post redirect get pattern alternatively post then redirect or redirect after post this helps ensure that urls in the browser are book markable but also requires that a bit more information be stored in the session between requests using the persist annotation principle 3 differentiate public vs internal apis an issue plaguing much ancient versions of tapestry 4 and earlier was the lack of a clear delineation between private internal apis and public external apis the fact that your code would extend from base objects but that many of the methods on those base objects were off limits further confused the issue this has been identified as a key factor in the steep learning curve of tapestry meme designed from a clean slate tapestry 5 is much more ruthless about what is internal vs external first of all anything inside the org apache tapestry5 internal package is internal it is part of the implementation of tapestry it is the man behind the curtain you should not ever need to directly use this code it is a bad idea to do so because internal code may change from one release to the next without concern for backwards compatibility if you ever find yourself forced to make use of internal apis please bring it up on the developer mailing list this is how we know which services should be exposed as public and fall under the backwards compatibility umbrella principle 4 ensure backwards compatibility older versions of tapestry were plagued by backwards compatibility problems with every major release tapestry 5 did not even attempt to be backwards compatible to tapestry 4 instead it laid the ground work for true backwards compatibility going forwards tapestry 5 s api is based largely on naming conventions and annotations your components are just ordinary java classes you annotate fields to allow tapestry to maintain their state or to allow tapestry to inject resources and you name or annotate methods to tell tapestry under what circumstances a method should be invoked tapestry will adapt to your classes it will call your methods passing in values via method parameters instead of the rigidness of a fixed interface to implement tapestry will simply adapt to your classes using the hints provided by annotations and simple naming conventions because of this tapestry 5 can change internally to a great degree without it affecting any of the application code you write this has finally cracked the backwards compatibility nut allowing you to have great assurance that you can upgrade to future releases of tapestry without breaking your existing applications this is already evident in tapestry 5 1 5 2 and 5 3 where major new features and improvements have occurred while remaining 100 backwards compatible to tapestry 5 0 as long as you ve avoided the temptation to use internal apis apache tapestry tapestry apache the apache feather logo and the apache tapestry project logo are trademarks of the apache software foundation apache tapestry home download team license documentation introduction principles getting started user guide docs component reference apidocs faq community mailing lists stackoverflow support getting involved edit this page social apachetapestry tapestry5 development source code issues apache about apache events sponsorship license security thanks about us apache tapestry is an open source component oriented framework for creating dynamic robust highly scalable web applications in java tapestry complements and builds upon the standard java servlet api and so it works in any servlet container or application server apache tapestry apache and the apache feather logo are trademarks of the apache software foundation all other marks mentioned may be trademarks or registered trademarks of their respective owners copyright 2020 the apache software foundation licensed under the apache license version 2 0
Thumbnail images (randomly selected): * Images may be subject to copyright.GREEN status (no comments)
  • Apache Tapestry
  • Apache Tapestry
  • Apache PoweredBy

Verified site has: 16 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-16


The site also has 1 references to other resources (not html/xhtml )

 apachecon.com/?ref=royale.apache.org  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Connection close
Content-Length 0
Server Varnish
Retry-After 0
Location htt????/tapestry.apache.org/principles.html
Accept-Ranges bytes
Date Mon, 13 Jul 2026 22:54:25 GMT
Via 1.1 varnish
X-Served-By cache-rtm-ehrd2290033-RTM
X-Cache HIT
X-Cache-Hits 0
X-Timer S1783983266.636211,VS0,VE0
HTTP/2 200
server Apache
last-modified Mon, 10 Nov 2025 18:18:27 GMT
etag 679b-643418ec4d6ff-gzip
content-encoding gzip
access-control-allow-origin *
content-security-policy default-src self data: blob: unsafe-inline unsafe-eval htt????/www.apachecon.com/ htt????/www.communityovercode.org/ htt????/*.apache.org/ htt????/apache.org/ htt????/*.scarf.sh/ ; script-src self data: blob: unsafe-inline unsafe-eval htt????/www.apachecon.com/ htt????/www.communityovercode.org/ htt????/*.apache.org/ htt????/apache.org/ htt????/*.scarf.sh/ ; style-src self data: blob: unsafe-inline unsafe-eval htt????/www.apachecon.com/ htt????/www.communityovercode.org/ htt????/*.apache.org/ htt????/apache.org/ htt????/*.scarf.sh/ ; frame-ancestors self ; frame-src self data: blob: unsafe-inline unsafe-eval htt????/www.apachecon.com/ htt????/www.communityovercode.org/ htt????/*.apache.org/ htt????/apache.org/ htt????/*.scarf.sh/ ; worker-src self data: blob:;
content-type text/html
via 1.1 varnish, 1.1 varnish
accept-ranges bytes
age 0
date Mon, 13 Jul 2026 22:54:25 GMT
x-served-by cache-hel1410032-HEL, cache-rtm-ehrd2290044-RTM
x-cache MISS, MISS
x-cache-hits 0, 0
x-timer S1783983266.675759,VS0,VE28
vary Accept-Encoding
strict-transport-security max-age=31536000; includeSubDomains; preload
content-length 7850

Meta Tags

title="Principles - Apache Tapestry"
http-equiv="content-type" content="text/html; charset=utf-8"
name="viewport" content="width=device-width, initial-scale=1"
name="keywords" content="tapestry, apache, apache tapestry, framework, java, web, component, open source, application, dynamic, scalable, robust, servlet"
name="description" content="Apache Tapestry is a open-source component-oriented framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server."

Load Info

page size7850
load time (s)0.122822
redirect count1
speed download64344
server IP 151.101.2.132
* all occurrences of the string "http://" have been changed to "htt???/"