1.静态包含(一个指令)

在软件工程中构建可复用组件可极大的提高软件生产效率、增强系统的可维护性
HTML标记对于一个web应用系统中的页面都是通用的,比如公司标志、版权声明、导航菜单
JSP中引用的web组件复用的两种方式:静态包含、动态包含。

在JSP源文件转换成对应Servlet源文件时将当前JSP文件和其包含的所有其他文件合并成一个Servlet文件
JSP中的include伪指令实现静态包含
include标准语法:<%@include file=“地址”%>

包含文件中要避免使用<html><body>等可能会影响原JSP网页中标签的元素
<%@include %>指令只有一个属性file
<%@include%>指令可以放在JSP页面的任意位置,其file所指的路径是相对路径

静态包含规则:

1.file属性值不能是一个动态表达式
错误示例:<% String myUrl=“copy.html” %><%@ include file=“<%=myUrl%>” %>

2.

File属性值不能向被包含的文件传递参数

错误示例:<%@ include file=“other.jsp?abc=qwe”%>

3.

由于被包含文件之间可以共享变量,尽量减少文件之间的联系,降低耦合度,增强可复用度

2.动态包含

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

动态包含是指客户端请求时,将请求转发给当前JSP文件包含的其他对象
使用JSP的include动作指令和forward动作指令实现动态包含
include 和forward相当与Servlet中的RequestDispatcher.include()和RequestDispatcher.forward()方法

include动作指令:

include允许当前页面将客户端请求暂时转交给所包含的对象,一旦对象执行完毕,返回当前JSP页面
include动作指令相当于方法的调用
标准语法:<jsp:include page=“地址” flush=“true”>

动态包含作用域范围:

动态包含中的包含文件和被包含文件各自独立编译、执行,彼此之间不能访问各自定义的变量(即page作用域范围内的对象),只能共享request范围、session范围、application范围对象

include 动作指令规则:

page属性值可以是相对路径或代表相对路径的表达式;

page属性指向的文件既可以是动态文件也可以是静态文件

两种包含的比较:

 

include伪指令

include动作指令

规则

<%@include     %>

<jsp:include  />

编译时间

较慢(资源必须被解析)

较快

执行时间

较快

较慢(因为每次请求资源必须被解析)

灵活性

较差(页面内容必须固定)

较好(页面在运行时可动态选择)

动作发生的时间

页面转换期间

请求期间

被包含的内容

文件的内容

页面的输出

产生Servlet数目

1

n

变静态包含被包含页面可以访问包含页面中的变量

静态包含所包含的文件能够含有影响整个页面的JSP内容(如:import语句,声明)

参数的传递:

静态包含不存在参数传递的问题
动态包含可以传递参数:
直接在包含动作中传递
使用<jsp:param>
使用request.set/getAttribute()方法

使用注意事项:

静态包含:
被包含页面中的指令不能与包含页面中有冲突(要注意变量多次声明问题)
动态包含:
使用XML格式,不要忘记标签封口

forward动作指令:

forward动作指令允许将客户请求转发到另一个资源文件,即每当遇到此动作指令就停止执行当前的JSP,转而执行被转发的指定资源
语法格式:<jsp:forward page=“地址”/>
page属性必须存在,用于指定要包含的静态或动态文件,可以是字符串或表达式

forward指令与include动作指令

forward动作指令在调用转发操作后不会继续处理指令后的任何代码

include动作指令在调用转发操作后,完成转发操作后将继续处理指令后的代码

动态指令的参数传递:

使用<jsp:param name=“” value=“”/>可以传递一个或多个参数给动态页面
与include动作指令、forward动作指令一起使用
注意:<jsp:param />标签传递参数时,会替换request对象同名的参数值

3.使用JavaBean组件;

概述:

JavaBean通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称Bean

JavaBean中所有的属性最好定义为private,每个属性都定义public的setter和getter方法对其进行操作

JavaBean命名规则:

JSP使用JavaBean:

在JSP中使用<jsp:useBean>操作元素来加载JavaBean程序

使用<jsp:setProperty>操作元素来设置JavaBean的属性值

使用<jsp:getProperty>操作元素获取JavaBean的属性值

useBean动作指令:

属性

功能描述

示例

id

使用此变量名来分辨不同的Bean

id=“address”

scope

JavaBean存在的范围(作用域范围)

scope=“session”

class

JavaBean对应的类名

class=“AddressBean”

type

引用JavaBean变量的类型

type=“AddressBean”

beanName

装载序列化JavaBean名或创建实例类名,使用java.beans.Beans.instantiate方法

beanName=“AddressBean”

setProperty动作指令:

属性

功能描述

name

JSP页面中的JavaBean标识名称

property

JavaBean的属性名称

value

被赋予JavaBean属性的新值

param

HttpServletRequest的参数(参数名称与JavaBean名称不相同时需要设置)

getProperty()动作指令:

属性

功能描述

name

JSP页面中的JavaBean标识名称

property

JavaBean的属性名称

 

10.Web组件复用的更多相关文章

  1. Svelte入门——Web Components实现跨框架组件复用

    Svelte 是构建 Web 应用程序的一种新方法,推出后一直不温不火,没有继Angular.React和VUE成为第四大框架,但也没有失去热度,无人问津.造成这种情况很重要的一个原因是,Svelte ...

  2. 探讨Web组件化的实现

    CMS组件化,简单架构示意图: Web组件使用WebPage+WebAPI的好处: Ø  组件复用(组件条件管理页面复用+获取组件数据API复用). Ø  组件是分布式的第三方应用,本身高内聚.组件之 ...

  3. [阿当视频]WEB组件学习笔记

    — 视频看完了,自定义事件还不懂,等完全懂了再更新并完成整篇案例 1. JS分层和组件的种类浏览器底层包括HTML CSS JS(DOM/BOM/Style/Canvas 2D/WebGl/SVG) ...

  4. 前端UI组件复用工具

    "懒"是第一生产力. 代码复用总是程序员喜闻乐见的,前端组件化的最终目的就是复用,今天我们就将深入探讨如何实现UI组件的复用. 通常我们所说的组件往往是包含业务逻辑的前端组件,而这 ...

  5. Amaze UI 发布基于jQuery新版本v2.0.0之web组件

    首先Amaze Ui第一版时我收到邮件邀请去试用,去了官网看了下,是基于zepto.js的一个类似bootstrap的响应式框架,提到框架当然是好事,快速开发呗.这词2.0的弃用zepto.js改用j ...

  6. atitit.  web组件化原理与设计

    atitit.  web组件化原理与设计 1. Web Components提供了一种组件化的推荐方式,具体来说,就是:1 2. 组件化的本质目的并不一定是要为了可复用,而是提升可维护性. 不具有复用 ...

  7. atitit.atiHtmlUi web组件化方案与规范v1

    atitit.atiHtmlUi web组件化方案与规范v1 1. 如何在现有html 标签基础上定义自己的组件1 2. 组件的构成与定义1 3. 组件的加载1 4. 组件css的加载2 5. 操作组 ...

  8. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  9. 【收藏】这么多WEB组件(CSS),攒一个网站够了吧?

    简言 总是喜欢简单又精致的东西,美的不繁复也不张扬.这是闷骚程序员的癖好么?闲来无事,把收集到的部分WEB组件整理汇总一下,攒一个逼格高一点的网站够了吧? 1 表单(form)相关 1.1 输入框(i ...

随机推荐

  1. vue安装vuex框架

    1.安装vuex npm install vuex --save-dev 2.创建storesrc下创建stores文件夹,创建noteStore.js import Vue from 'vue'; ...

  2. C++面向对象类的实例题目八

    题目描述: 编写一个程序输入3个学生的英语和计算机成绩,并按照总分从高到低排序.要求设计一个学生类Student,其定义如下: 程序代码: #include<iostream> using ...

  3. 关于c#里的集合的,结构体,枚举的定义,解释与应用

    那么先写一下 集合 . 集合和数组很相似,数组里的类型是必须同一类型,固定长度.然而集合里的可以是不同类型,不固定长度的.所以集合运用的灵活度要更高一些. 要使用集合,必须先引用命名空间:using ...

  4. mac 彻底卸载Paragon NTFS

    之前安装了paragon NTFS,试用期过了就卸载了,但是每天还是会提示“试用期已到期”,看着很烦. 百度了一下,发现网上的版本可能比较老了,和我的情况不太一样,但道理应该是一样的. 彻底删除方法: ...

  5. Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境

    Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境 我们的电脑系统:Windows 10 64位 Visual Studio 软件:Visual Studio 20 ...

  6. 前端学习笔记2017.6.21-html和浏览器的关系以及开发工具

    html文档是一种文件格式, 浏览器可以识别这种文件格式,并能把html文档里面的内容解析出来. 用更贴近程序员的话说就是:html相当于c语言,浏览器相当于c编译器. 开发工具用sublime te ...

  7. plsql developer 常用配置

    执行语句时间太长,关闭 plsql developer 重启 F8 执行SQL 1 设置默认执行鼠标所在sql tools->preferences->sql window->win ...

  8. (转)Linux操作系统下VMware的多网卡桥接转换

    VMware,鼎鼎大名的虚拟机软件,没有人不知道吧?当然,在Linux下使用虚拟机软件,并不一定需要使用VMWare,Xen也是非常不错的选择,有很多评测就认为XEN的表现优于VMware.可惜的是X ...

  9. HttpServletRequest和ServletRequest的区别.RP

    问题: 请问HttpServletRequest和ServletRequest的区别? 回答: servlet理论上可以处理多种形式的请求响应形式 http只是其中之一 所以HttpServletRe ...

  10. JQuery UI Draggable插件使用说明文档

    JQuery UI Draggable插件用来使选中的元素可以通过鼠标拖动.Draggable的元素受css: ui-draggable影响, 拖动过程中的css: ui-draggable-drag ...