0

0

JSP模板应用指南(上)_MySQL

php中文网

php中文网

发布时间:2016-06-01 14:08:42

|

1002人浏览过

|

来源于php中文网

原创

  Window 工具包提供了一种典型的布局机制,比如说在一个容器中确定部件元素的位置。在AWT 和 Swing都有布局管理器,而在VisualWorks Smalltalk中有wrapper。本文将介绍一种JSP模板机制,它允许布局被封装和重新利用。JSP模板最小化了布局改变所造成的影响,这里我们将鼓励大家采用封装模块化设计。

  尽管 Web开发工具的改进非常迅速,但是它们仍然落后于图形用户界面(GUI)工具包(Swing 和 VisualWorks Smalltalk)。例如,在传统的GUI工具包中提供了布局管理器,在一个窗体或另一个窗体中,允许布局运算被封装和重新利用。本文介绍的这种JSP模板机制,就象布局管理器一样,可以封装布局,所以它能够被重新利用而不只是复制使用。

  由于在布局的发展过程中出现了许多的变化,而对功能的封装是非常重要的一步,它能够被自如修改而做到对其他应用的影响最小。

  JSP没有提供对封装布局的直接支持,所以具有统一格式的网页通常可以复制布局代码;例如,在图1中,显示了一个网页,它包含了标题、页脚、工具条以及页面的主要内容。


  图1.网页布局 点击放大(22 KB)

  在图1中显示的网页布局将以HTML表格标签来执行:

  例1.包含内容:

  

ECTouch移动商城系统
ECTouch移动商城系统

ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有

下载
JSPtemplates

  

  

  

    

  

  


      

      

      

      


    


  

  在上面的例子中,包括了JSP include 命令,它允许页面内容改变――通过改变包含的文件――无须修改网页自身。不过,由于布局是很难被编码的,布局改变需要对网页进行修改。如果一个网站有多个相同格式的页面,那么一般情况下甚至简单布局的改变也涉及到整个页面的修改。

  为了减少布局改变所造成的影响,我们需要一种仅仅只包含布局的机制;采用这种机制,布局和内容都可以在不修改文件的情况下分开进行修改。这种机制就是JSP模板。

使用模板
  模板是一种JSP文件,它包含了参数化了的内容。这里所讨论的模板使用的是一套定制化标签来执行的:template:get,template:put和template:insert。template:get 标签访问参数化的内容,就象在例 2.a中的一样,它将和图 1一样的格式来生成网页。

  例 2.a.一个模板

  

  <get name="title"></get>

  

  

  

    

  

  


        

        

        

      


    


  

  例 2.a几乎与例1完全一样,不过在例2.a中我们使用了template:get 取代了例1中的include 命令.让我们来分析一下template:get 如何运行。

  template:get 使用了一个专门的名字(在请求的范围内)来对一个Java Bean进行修改。Bean包含了URI (统一资源标志符,网页的一个组件,它包含在template:get中)。例如,在例 2.a的模板列表中,template:get 获得了一个URI――header.html――从一个名为header 的Bean中(在请求的范围内)。接着在template:get 中包含了header.html。

  template:put 把Bean放到请求的范围内(此范围将在后面被template:get修改)。 模板包含在template:insert中。 例 2.b中举例说明了put 和 insert 标签的用法:

  例 2.b. 从例2.a中使用模板

  

  

  

  

  

  

  

  insert>

  在insert 开头标签指定了被包含的模板,在这个例子里,模板在例2.a中。每一个put 标签在请求范围内存储了一个Bean,而在insert 结尾标签包含了模板。模板接着象上面所描述的那样访问Bean。

  direct 的属性能够为template:put指定;如果direct 设置为true, 和标签相关联的内容将不包含在template: get中。

  一个网站包含了多页相同格式的页面,这样就可以使用一个模板,比如在例 2.a中列出了一个模板,在许多的JSP网页(例2.b)中,都用到了这个模板。

  使用模板的另一个好处是可以进行模块化设计。例如,例2.b中列出的JSP 文件中包含了header.html,让我们再来看下面的例2.c。

  例2.c. header.html

  

  

    

    

  

  
JSP模板应用指南(上)_MySQL JSP模板应用指南(上)_MySQL



  由于header.html 是被包含的内容,所以它不必在需要显示标头的页面中复制其代码。而且,尽管header.html 是一个HTML文件,但是在文件中并没有使用一般的起始HTML标签(比如或),因为这些标签都将被模板定义。由于在模板中包含了header.html,这些标签在header.html就可以不必再使用了。

  注意:JSP提供了两种方式来包含内容:静态方式,使用include命令;动态方式,使用include action。include命令包含了目标页面的引用源,这和C语言中的#include和Java中的import相似。include action 包含了在运行时间内目标所产生的响应。

  与JSP include action一样,模板包含有动态内容。所以,尽管在例1和例2.b中的JSP网页在功能上是一致的,但是前面包含的静态内容被后面动态的包含了。

可选内容
  所有的模板内容都是可选的,模板的内容可以很容易的在更多的网页中使用。例如,在图 2.a和图 2.B中显示了两个页面――登录和清单――它们使用的是同一个模板。两个页面中都包含一个标头、页脚和主要内容。清单页面中有一个编辑Panel (这是登陆页面所缺乏的)用来改变清单。


  图 2.a.一个登陆窗口 点击放大(24 KB)


  图 2.B.一个清单页 点击放大(42 KB)

  下面,你会发现模板将被登录和清单页面共用:

  

  ……

  

  

    

  

    

  

    

  

  

  


  ……

  清单页面使用了上面的模板以及专门用于编辑Panel的内容:

  

  

  

   ……

  
            content='/editPanelContent.jsp'/>

   ……

  

  与上面相对照,登录页面没有专门用于编辑Panel的内容:

  

  

  

  

  
           content='/login.jsp'/>

  

  

  由于登录页面中没有专门用于编辑Panel的内容,所以它没有包括。

基于Role的内容
  Web应用程序常常会基于不同的用户生成不同的内容。 例如,相同的 JSP模板,只有当用户为管理员的时候才出现编辑Panel,下面是得出的两个不同的页面(如图3.a和3.b.)


  图 3.a. 管理员的清单页面 点击放大(27 KB)


  图 3.b.其他用户的清单页面 点击放大(21 KB)

  在图3.a和3.b中的模板使用了template:get的 role 属性:

  

  ......

  

   ......

  

   ......

  


  ......

  get 标签仅仅在用户的Role 与Role属性相匹配的时候才包含内容。让我们来看看标签handler是如何使用Role属性的:

  public class GettagextendstagSupport {

   private String name = null, role = null;

   ......

   public void setRole(String role) { this.role = role; }

   ......

   public int doStartTag() throws JspException {

     ......

     if(param != null) {

       if(roleIsValid()) {

        // include or print content ......

       }

     }

   ......

   }

   private boolean roleIsValid() {

     return role == null || // valid if role isn't set

       ((javax.Servlet.http.HttpServletRequest)

       pageContext.getRequest()).isUserInRole(role);

   }

  }

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

129

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

77

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

81

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

60

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

444

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

15

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.2万人学习

XML教程
XML教程

共142课时 | 5.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号