TapeStry configuration framework Framework

xiaoxiao2021-03-06  41

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></p> <p><body> Hello, <b> TapeStry 3.0! </ b> </ body> </ html> code list 1: Home.html This is our homepage.</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-maping></p> <p><session-config> <session-timeout> 15 </ session-timeout> </ session-config></p> <p><Welcome-file-list> <welcome-file> index.html </ welcome-file> </ welcome-file-list> </ web-app> code example 2: Web.xml Explain: named Redirect Filter is used to turn, pay attention, where INIT-PARAM is used to control where to go, if not or set is incorrect, it will go 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 "/> code example 4: HOME.PAGE Don't you know where to put this file? Add to $ HOME / Web-INF below Just line!</p> <p>OK, the last step, copy all of the Workbench example of TapeStry to $ HOME / Web-INF / LIB.</p> <p>3 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 Summary in TapeStry3.0, deploying applications easier, this article is more simple due to cases, many steps can be ignored (in this case, hello.application and home.page can be ignored), but in complex applications In the case, such as TapeStry's own Workbench example, it is not negligible. 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-60783.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="60783" 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.042</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 = 'A_2FsfO7psD8DMzu6zTV41qH4O2Rwy6CfhWeHnoXONdEq9wg_2BOrop4ivHcDOA6tu0diOYYJhOXrmDO1aY9'; 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>