JSP标签也称为JSP Action(JSP动作)元素,用于在JSP页面中封装Java代码,这样使得在JSP页面中避免直接编写Java代码,让JSP真正成为MVC模式中的作为视图作用。

几个JSP常用标签:

  <jsp:include>标签

  <jsp:forward>标签

  <jsp:param>标签

  <jsp:useBean>标签

  <jsp:setProperty>标签

  <jsp:getProperty>标签

下面对这几个标签进行详细说明:

一、<jsp:include>标签

  <jsp:include>标签就是包含功能,这是一种动态包含。

语法:  

<jsp:include  page=”/相对web应用的地址” |“<%=JSP表达式>” flush=“true|false”/>

  page 属性用于指定资源地址,也可以通过JSP表达式来写入

  flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出内容刷新到客户端。

  <jsp:include>标签和<@ include>指令的比较:

  <jsp:include>标签是动态包含,会将涉及到所有的包含的JSP翻译成各自的Servlet,而这些Servlet会在执行时合并。

  <@ include>指令是静态包含,所有的JSP页面只会被翻译成一个Servlet。

  不管是<jsp:include>标签还是<@ include>指令,都会把被包含的JSP页面中所有的内容进行合并输出,因此这两个页面都不要出现重复的HTML全局架构标签,否则合并之后将会是一个格式混乱的HTML文档。

二、<jsp:forward>标签

  <jsp:forward>标签就是我们所熟悉的转发,只不过用在了JSP页面中。

语法:

<jsp:forward  page=”/相对web应用的地址” |“<%=JSP表达式>” />

  page 属性用于指定资源地址,也可以通过JSP表达式来写入。

三、<jsp:param>标签

  当使用<jsp:include>标签或<jsp:forward>标签包含或者转发请求给其他资源时,可以使用<jsp:param>标签向这个资源传递数据。

语法:

   <jsp:include  page=”/相对web应用的地址” |“<%=JSP表达式>“>

             <jsp:param  name= “参数名”      value=”参数值” |”<%=jsp表达式  %>”/>

   </jsp:include>

或

     <jsp:forward  page=”/相对web应用的地址” |“<%=JSP表达式>“>

           <jsp:param  name= “参数名”      value=”参数值” |”<%=jsp表达式  %>”/>

   </jsp: forward  >

例:

<body>

        <jsp:forward page="/index.jsp">
<jsp:param value="who" name="Ding"/>
<jsp:param value="lover" name="LRR"/>
</jsp:forward> </body>

四、<jsp:useBean>标签

  在JSP中还针对JavaBean封装了几种用于处理JavaBean对象的标签,例如<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签等等。

  <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象。如果存在则直接返回这个JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

语法:

<jsp:useBean  id=”bean名称”   class=”包名.类名”    scope=”page | request | session | application”  />

  id属性用于指定查找JavaBean实例对象的名称(或其存储在域范围中的名称)。

  class属性指定JavaBean的完整类名,即必须包含包名。

  scope属性指定JavaBean对象所存储的域范围,其值只能是page、request、session、application中的一个,默认为page。

例:

  <body>
<jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
</body>

  上面这个示例,将先查询在page域中是否有Person类的一个实例对象,这个对象名称为p,如果查询到,那么这个bean对象就以p为名称,如果后面代码需要这个对象,就以p为引用;如果没有查询到,那么就将创建一个Person对象,对象名称为p,同时将这个新创建的对象存储到scope范围中。我们可以从转换后的Servlet中看到该过程:

      com.fjdingsd.domain.Person p = null;
p = (com.fjdingsd.domain.Person) _jspx_page_context.getAttribute("p", javax.servlet.jsp.PageContext.PAGE_SCOPE);
if (p == null){
p = new com.fjdingsd.domain.Person();
_jspx_page_context.setAttribute("p", p, javax.servlet.jsp.PageContext.PAGE_SCOPE);
}

补充:

  带标签体的<jsp:useBean>标签,其中标签体的内容只在新创建JavaBean的对象时才执行。也就是说如下代码:

 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="session" />
aaaaaaaaaaaa
</jsp:useBean>

  这样的代码,只在第一次访问时能执行(“aaaaaaaaaaa”),再次访问就不会执行了,因为再次访问已经不会再新建对象了。

五、<jsp:setProperty>标签

  <jsp:setProperty>标签用于设置JavaBean对象的属性。

语法:

<jsp:setProperty     name = “bean的名称”

        property=”属性名” value=”属性值”|“<%= JSP表达式 %>”     |

        property=“属性名“          [param = “参数名”] |

        property=”*”

  />

  name属性:指定JavaBean对象的名称,对应于<jsp:useBean>标签中的”id”属性。

  property属性:指定JavaBean对象中的属性名。

  value属性:指定JavaBean对象中的”property”指定的属性的值,可以是字符串,也可以是JSP表达式。注意,如果value是字符串,则该值会自动转换为JavaBean属性对应的类型,如果value是JSP表达式,则该表达式的计算结果必须与要设置的JavaBean属性类型要一致。

  param属性:将JavaBean对象的某个属性值设置为一个请求(request)参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。也就是说我们在浏览器地址栏中在URL后设置了参数和参数值,那么在访问该JSP后会将参数值赋予”param”对应的属性中,请注意,浏览器地址栏URL后带的参数值均为字符串类型,对于属性只要是八大基本数据类型,都是可以将字符串转换为对应的类型的,请看下面例2。

例1:

 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />

 <jsp:setProperty property="name" name="p" value="Ding"/>

 <%=p.getName() %>

浏览器中观察:

  

例2:

 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />

 <jsp:setProperty property="age" name="p" param="age"/>

 <%=p.getAge() %>

浏览器中观察:

  

  注意,在Person类中,”age”属性类型为”int”整形,但是对于八大基本数据类型,<jsp:setProperty>标签可以将字符串转换。

例3:

  如果将<jsp:setProperty>标签中的property设置为”*”,那么将使用URL后的所有参数为JavaBean对象的属性赋值。

   <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />

   <jsp:setProperty property="*" name="p"/>

5   <%=p.getName() %>  <br>
6   <%=p.getAge() %>

在浏览器中观察:

  

六、<jsp:getProperty>标签

  <jsp:getProperty>标签用于获取JavaBean对象的属性值,无论该值在JavaBean中是否为字符串类型,都将转换成字符串在JSP页面上显示。如果该JavaBean的某个属性的值为null,那么该标签将在JSP页面上显示”null”这个字符串。

语法:

<jsp:getProperty   name=”bean的名称”    property=”属性名”>

  name属性:指定JavaBean对象的名称,对应于<jsp:useBean>标签中的”id”属性。

  property属性:指定JavaBean对象中的属性名。

例1:

     <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />

     <jsp:setProperty property="name" name="p" value="Ding"/>

     <jsp:getProperty property="name" name="p"/>

浏览器中观察:

  

例2:

  如果属性名不存在,或者属性值为null,那么则显示为”null”字符串

1   <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />

3   <jsp:getProperty property="name" name="p"/>

浏览器中观察:

  

  当然实际开发过程中我们会使用EL表达式来作为数据输出,使用EL表达式的好处是如果能从域中获取到数据,则输出该数据的字符串类型,如果没能找到数据,那么则输出空字符串””。

七、映射JSP

  JSP就是一个Servlet,因此我们在web.xml文件中也可以使用<servlet>标签和<servlet-mapping>标签来映射JSP,使JSP能有一个虚拟目录(对外访问路径)。

例:

     <servlet>
<servlet-name>myjsp</servlet-name>
<jsp-file>/MyJsp.jsp</jsp-file>
</servlet> <servlet-mapping>
<servlet-name>myjsp</servlet-name>
<url-pattern>/myhtml.html</url-pattern>
</servlet-mapping>

通过上述在web.xml文件中的配置,我们就能将MyJsp.jsp资源的对外访问路径设置为myhtml.html:

  

JSP的学习(8)——JSP标签的更多相关文章

  1. Web jsp开发学习——dbcp jsp连接MySQL出现中文乱码解决

    开发过程中,通过dbcp.properties连接MySQL数据库,向数据库中插入中文字符时,出现乱码情况. 通过查阅资料,发现出现乱码的原因:MySQL数据库使用的是UTF-8编码,而dbcp.pr ...

  2. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  3. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

  4. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

  5. JSP的学习二(指令与标签)

    一:page指令 1.JSP的指令 放在<%@ 指令 属性=“值”%> 主要有page,include,tablib. 2.page指令 用于定义JSP页面的各种属性,作用于是JSP的整个 ...

  6. java web 学习笔记 - JSP标签编程

    1.JSP标签编程简介 标签编程在开发中并不常见,主要是为了更好的理解struts等框架的标签而打基础,完善相关知识体系. 标签编程分为: 一个继承自TagSupport的标签类,一个在WEB-INF ...

  7. JavaWeb学习之JSP(二) JSP标签

    JSP常用标签 什么是JSP标签 JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标 ...

  8. 【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令

    序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java E ...

  9. java攻城师之路--复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

随机推荐

  1. 利用VC助手(VA)添加注释

    利用VC助手(VA)添加注释 今天想给自己写的代码加上版权信息,同时整理一下代码的注释.但是为了保持同样的格式,总是copy,显得有些繁琐.然后试图找解决方案.我用的是VS 2010, 刚开始是尝试了 ...

  2. HDU 4786 生成树 并查集+极大极小值 黑白边 确定选择白边的数量

    题意: 给定一个无向图 n 个点 m条无向边 u v val val == 1 表示边(u, v) 为白边 问能否找到n个点的生成树, 使得白边数为斐波那契数 思路: 并查集求图是否连通( 是否存在生 ...

  3. jquery倒计时自动跳转

    刚开始我用下面这种方法一直报错,不知是什么原因,就是多加了页面加载时调用这个方法,还请高手看到后小小留言解惑

  4. poj 1363 Rails in PopPush City &&【求堆栈中合法出栈顺序次数】

    问题如下: 问题 B: Rails 时间限制: Sec 内存限制: MB 提交: 解决: [提交][状态][讨论版] 题目描述 There is a famous railway station in ...

  5. 基于 JVMTI 实现 Java 线程的监控(转)

    随着多核 CPU 的日益普及,越来越多的 Java 应用程序使用多线程并行计算来充分发挥整个系统的性能.多线程的使用也给应用程序开发人员带来了巨大的挑战,不正确地使用多线程可能造成线程死锁或资源竞争, ...

  6. GIT分支操作常用命令

    切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...

  7. centos 推荐使用epel源

    centos 推荐使用epel源 张映 发表于 2011-10-13 分类目录: linux 在dell r410上面装的是centos6,64的操作系统,用的163的源,我一直都是用163的源,比较 ...

  8. Redis性能调优:保存SNAPSHOT对性能的影响

    前一段时间.开发环境反馈,Redisserver訪问很慢,每一个请求要数秒时间,重新启动之后2~3天又会这样. 我查看了一下Linux的性能,没有什么问题. 通过 # redis-cli --late ...

  9. JavaScript下全选反选的Demo程序里实现checkmeonly函数 DOM

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. git教程1

    主要参考: 官方书籍: Pro Git 中文版:http://git.perlchina.org/book/zh 英文版:http://git.perlchina.org/book http://gi ...