Hello, TapeStry 3.0

zhaozj2021-02-16  53

Hello, Tapestry 3.0Mechiland, Jul 2003

This article mainly introduces a configuration method of a simple case Tapestry in the TapeStry3.0 environment, which is designed to help developers are familiar with the 3.0 environment. Due to the Tutorial document provided by Tapestry (http://jakarta.apache.org/tapestry/) is based on 2.x, this greatly improves the difficulty of learning. For the introduction of TapeStry2.x and the Tapestry framework, please refer to the transparent article of the 7th "Programmer" magazine, no more.

2.X to 3.0 changes I have too much time to study - after all, the time is limited, just understand the concept, 3.0 is coming, the name of the package has changed, and the DTD has changed, some configuration The method is not the same, so this article is mainly discussed 3.0, for the difference in 2.x and 3.0, try not to compare; if there is a fault in the text, please advise.

1 development environment

Tomcat5.0, Win2000 Server, TapeStry 3.0B2 Development Tools: Editplus2.11:) (Small project, no need to use aircraft carrier)

2 Let's get started!

OK, let us start this "Hello, TapeStry3.0"!

First, create a directory to save your project, assume the x: / TapeStry / Hello (replace it later); and finally establish the following file structure: -Web-inf - classes - lib

Put a Home.html in the $ HOME root directory, the code as follows:

hello, tapestry! </ Title> </ head> <body> Hello, <B > TapeStry 3.0! </ B> </ body> </ html></p> <p>Code List 1: Home.html</p> <p>This is our home page.</p> <p>Then put a web.xml in $ home / web-inf / below, unexpected, this web.xml is so simple, and it is very different from the TapeStry2.x documentation ~~</p> <p><? XML Version = "1.0"?> <! doctype web-app public "- // sun microsystems, Inc.//dtd web application 2.3 // en" "http://java.sun.com/dtd/web -app_2_3.dtd "> <web-app> <display-name> TapeStry Tutorial </ display-name> <! - redirect it to the servlet mapping address / h -> <filter> <filter-name> redirect < / filter-name> <filter-class> org.apache.tapestry.redirectfilter </ filter-class> <init-param> <parame> redirect-path </ param-name> <param-value> / h < / param-value> </ init-param> <filter> <filter-maping> <filter-name> redirect </ filter-name> <url-pattern> / </ url-pattern> </ filter-maping> <servlet> <servlet-name> hello </ servlet-name> <servlet-class> org.apache.tapestry.applicationServlet </ servlet-class> <load-on-startup> 0 </ loading-on-startup> < / servlet> <servlet-maping> <servlet-name> Hello </ servlet-name> <url-pattern> / h </ url-pattern> </ servlet-mapping> <session-config> <session-timeout> 15 </ session-timeout> </ session-config> <welcome-file-list> <welcome-file> index.html </ welcome-file> </ welcome-file-list> </ web-app> code example 2 : Web.xml</p> <p>Slightly explanation: Filter named redirect is used to turn, note that where INIT-PARAM is used to control where to go, if not or set is incorrect, turn to the default place (/ app). According to the situation we are configured, it should be when accessing / go to the servlet to / h. Of course, this setting is only when the <welcome-file-list> is invalid.</p> <p>People who read the old TUTORIAL will be strange, where is the org.apache.tapestry.application-specification? By default, TapeStry will find the same .application, which is the same .application in / web-inflight, in addition, the configuration of Application is very simple, for our Hello, Tapestry simple use case, no. Application is also possible. But for the form of the form, we plus it: put the Hello.application file below $ home / web-inflight (with Web.xml)</p> <p><? XML Version = "1.0"?> <! doctype application public "- // Apache Software Foundation // TapeStry Specification 3.0 // en" "http://jakarta.apache.org/tapestry/dtd/tapestry_3_0.dtd" > <Application Name = "Hello Tapestry 3.0> </ Application></p> <p>Code Example 3: Hello.application</p> <p>Now, our home.page file:</p> <p><? XML Version = "1.0"?> <! doctype page-specification public "- // Apache Software Foundation // TapeStry Specification 3.0 //" http://jakarta.apache.org/tapestry/dtd/tapestry_3_0. DTD "> <Page-Specification Class =" Org.apache.tapestry.html.basepage "/></p> <p>Code Example 4: Home.page</p> <p>Don't you know where to put this file? Put it below $ home / web-inf!</p> <p>OK, the last step, copy all of the Workbench example of TapeStry to $ HOME / Web-INF / LIB.</p> <p>3 deployment</p> <p>The deployment method is very simple, you can use the JAR tool to make the $ home directory into a WAR package, or copy the entire $ home directory to $ Tomcat_home / WebApps. Whether you use that way, after deployment, open your browser, type the address: http:// localhost: 8080 / hello, is it displayed below?</p> <p>4 small knot</p> <p>In TapeStry3.0, the deployment application is easier, this article is simpler, many steps can be ignored (in this case, hello.application and home.page can be ignored), but in complex applications, If the Workbench example of TapeStry comes, it cannot be ignored. About Tapestry's other features, the author is studying. Tapestry is an excellent development framework if you are interested, or what is incorrect in this article, Welcome Criticism, Email: Mechiland@163.net</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-27993.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="27993" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.038</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'QBjl47Hr6w7PTlVlFPlAe_2F0dCemwUf1PxcVvAByBJmN8kxpFmlo8vUR67I_2Fu5hJN0k7xWjUsUv1vvQ_2BrTtZ0UA_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>