SiteMesh learning [0]

xiaoxiao2021-03-06  19

Use sitemesh establish a composite view - 1.hello (Author: chen-neu, available to

Huihoo.com released)

Build a composite view using Sitemesh - 1.Hello <- Now

Establish a composite view using Sitemesh - 2. Decorator

Establish a composite view using Sitemesh - 3. Other discussion

SiteMesh is one of the J2EE application frames developed by the OpenSymphony team to increase the maintenanceability and reuse of the page. Another widely known framework of OpenSymphony is a representation frame for webwork as a web layer. They are all open source and can be found under www.sf.net.

Examples apply to the following big projects: http://opensource.thoughtworks.com/projects/sitemesh.html

Www.jboss.org www.theserverside.com www.opensymphony.com www.opensymphony.com www.Opensymphony.com www.atlassian.com

Introduction: SiteMesh Apply Decorator mode, intercept request and response with Filter, combine the page component head, content, and banner as a complete view. Usually we all use the include label to constantly include all kinder, stylesheet, scripts and footer, now, we can have a happy to delete them with the help of Sitemesh. As shown below, you want to easily reach the composite view mode, then read this article. Hello Sitemesh:

The definition of the following Filter in Web-INF / Web.xml:

SiteMesh

com.opensymphony.module.sitemedh.filter.pagefilter

SiteMesh

/ *

Sitemesh-decorator

/web-inf/sitemesh-decorator.tld

Sitemesh-Page

/web-inf/sitemesh-page.tld

COPY JAR and DTD files to the corresponding directory, access the cvs of OpenSymphony.SourceForge.NET to get the latest version of Sitemesh.

SiteMesh.jarWeb-INF / LIB SiteMesh-Decorator.tldWeb-INF SiteMesh-Page.TLDWEB-INF Create WEB-INF / DECORATORTORS.XML Description Each decorator page (which can be used as Sitemesh example).

*

Creating an decorator page /_Decorators/main.jsp

<% @ page contenttype = "text / html; charset = GBK"%>

<% @ Taglib Uri = "SiteMesh-Decorator" prefix = "decorator"%>

<decorator: title default = "Deco Page ... /> </ title></p> <p><Decorator: head /></p> <p></ hEAD></p> <p><body></p> <p>Sitemesh example <HR></p> <p><Decorator: body /></p> <p><hr> chen56@msn.com</p> <p></ body></p> <p></ html></p> <p>Create a decorative page /index.jsp (content page)</p> <p><% @ page contenttype = "text / html; charset = GBK"%></p> <p><html></p> <p><HEAD></p> <p><title> agent test </ title></p> <p></ hEAD></p> <p><body></p> <p><p> This page is only one sentence, it is this sentence. </ p></p> <p></ body></p> <p></ html> Last Access INDEX.JSP will generate the following page: Moreover, all pages will be like Index.jsp, which is modified by Sitemesh's Filter using decorative mode, but does not have to use the include label.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-40082.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="40082" 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.044</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 = 'pO5cjoiBundlLx_2BaIxpmsCTUUU00MXglWUg7EM_2BJ35eTIazA84gclqEp39OXe2n82omPikVHTqB1PqatX7pWlA_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>