`

JSP的七个常用动作解析

阅读更多

1、定义

    JSP动作通过XML语法格式的标记来在请求处理阶段控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面以及为Java插件生成HTML代码等(百科摘录)。

 

2、在JSP2.0规范中,大概定义了20种标准动作元素,本文主要讲解七种常用的七种。即include、forward、useBean、getProperty、setProperty、param、plugin。

 

    1)<jsp:include>动作

 

        a)主要用来在请求处理阶段动态地包含一个静态或者动态的文件。

        b)容器会检查被包含页面是否发生更改,如果发生更改,则会(只会)重新编译被包含文件。

        c)语法:<jsp:include page=”{relativeURL |<%=expression%>}” flush=”true” />。

        d)可以向被包含页面传到参数:

  <jsp:include page=”{relativeURL |<%=expression%>}” flush=”true”>
      <jsp:param name=”paramName” value=”paramValue”/>
  </jsp:include>

 

    2)<jsp:forward>动作

 

         a)用于将请求转发到Web应用的其他组件(如Servlet、Jsp或HTML文件等)处理。

         b)使用语法:<jsp:forward page=”{relativeURL |<%=expression%>}” />。

         d)可以向请求转发的页面页面传到参数:

  <jsp:forward page=”{relativeURL |<%=expression%>}” flush=”true”>
     <jsp:param name=”paramName” value=”paramValue”/>
  </jsp:forward>

 

    3)<jsp:useBean>动作

 

        a)使用useBean动作声明并初始化一个bean对象,并指定其名称和作用范围。

        b)创建对象时,容器会先在指定的属性范围查找当前指定id标识的bean对象是否存在,如果存在则直接使用,否则使用new创建一个新的bean对象(可以参考该动作生成的对应servlet代码)。

        c)语法:<jsp:useBean id=”” class=”” scope=”page | request |session | application” />,其中id属性表示bean对象的标识符,class属性表示bean对象的类类型,scope表示bean对象作用范围(默认为page)。

        d)可以使用UseBean动作消除Jsp代码中的脚本代码(如变量声明、scriptlet及表达式)。

        方式一:使用脚本代码:

<html><body>
  <%
      foo.Person p =(foo.Person) request.getAttribute("person");  
      p.setName("zhansan");
  %>
  Persion is:<%=p.getName() %>  
<body><html>

 

         方式二:使用useBean标准动作(配合getPropeterty动作):

<html><body>
  <jsp:useBean id="person" class="foo.Person" scope="request"/>
  Persion is:<jsp:getPropeterty name="person" property="name"/>
<body><html>

 

    4)<jsp:getProperty>动作

 

        a)用于获取标识bean的属性值。

        b)语法:<jsp:sgetProperty name=”” property=”” />,其中name属性表示bean的标识符(<jsp:useBean>动作的id属性),property属性表示bean的属性名称(对应getter,而不是实例变量)。

 

    5)<jsp:setProperty>动作(重难点)


        a)用于设置标识Bean中的属性值。

        b)语法:<jsp:setProperty name=”” property=”” value|param=”” />,其中name属性表示bean的标识符(<jsp:useBean>动作的id属性),property属性表示bean的属性名称(对应setter,而不是实例变量),value属性表示直接设置值,param属性表示获取请求参数值来设置属性值(不能与value共用)。

        c)如果请求参数名与性质名(setter属性名)不同,此时如果想把性质的值设置为请求参数的值,则必须使用param属性。如:<jsp:setProperty name=”” property=”性质名” param="请求参数名"/>。

        d)值得一提的是,如果表单请求参数名与Bean中性质名(setter属性名)相同,则就无需在<jsp:setProperty >中指定请求参数名,即可以直接使用:<jsp:setProperty name=”” property=”” />。

        e)更近一步,如果表单请求参数名与Bean中性质名(setter属性名)都相同,则可以使用通配符“*”来一次性设置所有的属性值为请求参数值,即:<jsp:setProperty name=”” property=”*” />。

        f)使用方式一:放在<jsp:useBean>动作外:

<html><body>
  <jsp:useBean id="person" class="foo.Person" scope="request"/>
  <jsp:setProperty name="person" property="name" value="zhangsan"/>
  <jsp:getProperty name="person" property="name"/>
<body><html>

        生成的Servlet代码(部分):

//声明一个对象引用
foo.Person person = null;
synchronized (request) {
    person = (foo.Person) _jspx_page_context.getAttribute("person", PageContext.REQUEST_SCOPE);
    if (person == null){
        //如果指定属性范围内的对象不存在,则创建一个新对象
        person = new foo.Person();
        //将对象保存到指定的属性范围
        _jspx_page_context.setAttribute("person", person, PageContext.REQUEST_SCOPE);
    }
}
//设置属性值(其实最终调用的就是setName()方法)
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "name", "zhangsan", null, null, false);
//获取并输出属性值(其实最终调用的就是getName()方法)
out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((foo.Person)_jspx_page_context.findAttribute("person")).getName())));

       

        可以看出,使用此方式,会直接将person的属性值设置为新值,而不管该person对象是否已经存在。如果已经存在,则会覆盖已有对象的属性值,不存在则设置为新对象的属性值。

 

        g)使用方式二:放在<jsp:useBean>动作内

<html><body>
  <jsp:useBean id="person" class="foo.Person" scope="request">
      <jsp:setPropeterty name="person" property="name" value="zhangsan"/>
  </jsp:useBean>
  <jsp:getPropeterty name="person" property="name" />
<body><html>

        生成的Servlet代码(部分):

//声明一个对象引用
foo.Person person = null;
synchronized (request) {
    person = (foo.Person) _jspx_page_context.getAttribute("person", PageContext.REQUEST_SCOPE);
    if (person == null){
        //如果指定属性范围内的对象不存在,则创建一个新对象
        person = new foo.Person();
        //将对象保存到指定的属性范围
        _jspx_page_context.setAttribute("person", person, PageContext.REQUEST_SCOPE);
       //设置属性值(其实最终调用的就是setName()方法)
        org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "name", "zhangsan", null, null, false);   
    }
}
//获取并输出属性值(其实最终调用的就是getName()方法)
out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((foo.Person)_jspx_page_context.findAttribute("person")).getName())));

       

        可以看出,使用此种方式,如果person对象已经存在,则不会重新覆盖(设置)对象的属性值,只有新建一个对象时,才会设置对象的属性值。

 

    6)<jsp:param>动作

 

        a)用于传递参数值,必须与include、forward或plugin动作配合使用。

        b)语法:<jsp:param name=”paramName” value=”paramValue” />

 

    7)<jsp:plugin> 动作

    

        a)用于下载服务器端的JavaBean或Applet到客户端执行,这种显示需要在浏览器上安装Java插件。

        b)语法:<jsp:plugin type=”bean | applet" code="className" codebase="classDiretoryName">,其中type属性表示被执行的java程序的类型,code属性表示被执行的文件名,该属性值必须以“.class”扩展名结尾,codebase表示被执行文件的目录。

 

分享到:
评论

相关推荐

    jsp常用方法整理,包括servlet等

    ### JSP常用方法整理:深入理解与应用 JSP(JavaServer Pages)是Sun Microsystems公司推出的服务器端技术,用于创建动态网页。它结合了HTML、XML标记语言与Java编程语言的功能,使得在Web应用程序中嵌入Java代码...

    jsp标准标签标准动作

    在这里,我们将深入探讨"常用jsp标准标签"和"标准动作"。 1. **Core库** Core库是JSTL中最基本的库,它包含了许多与HTML元素相似的功能标签,如`&lt;c:out&gt;`、`&lt;c:set&gt;`、`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`...

    jsp基础实验讲解

    #### 七、JSP动作标记 - **include动作标记**:动态地包含一个文件,这个文件的内容将在运行时合并到当前页面中。例如: - `&lt;jsp:include page="footer.jsp" /&gt;` - **param动作标记**:为其他动作标记提供参数值。...

    jsp的常用元素。 jsp

    - **转译**:JSP解析器将JSP文件转换为一个Java源代码的Servlet。 - **编译**:使用JDK将生成的Servlet源代码编译为字节码。 3. 如果Servlet已经存在,服务器直接执行该Servlet。 4. Servlet生成响应内容并返回给...

    开发中常用jsp配置文件

    为了更好地理解和利用JSP配置文件,我们需要对提供的信息进行深入解析。 ### 标题:“开发中常用jsp配置文件” 该标题简明扼要地指出了本文档的主要内容:介绍在实际项目开发过程中经常使用的JSP配置文件。这表明...

    jsp代码实例教程一些jsp实例的代码

    2. **JSP语法**:讲解了JSP页面的基本构成,包括JSP指令、动作标签等,并通过实例让读者了解如何在页面中插入Java代码。 3. **内置对象**:JSP提供了九种内置对象,如request、response、session等,它们在Web开发...

    jsp 常用集

    通常,一个JSP常用集可能涵盖以下几个方面: 1. JSP基本语法:包括JSP指令(如page、include、taglib)、脚本元素(scriptlets、表达式、声明)、以及动作元素(如jsp:include、jsp:forward等)。 2. JSP内置对象...

    jsp培训jsp培训jsp培训jsp培训jsp培训

    **JSP(Java Server Pages)** 是...在"jsp培训.ppt"这个文件中,可能包含了上述知识点的详细讲解,包括示例代码、最佳实践以及常见问题解答。对于想要深入理解和掌握JSP技术的开发者来说,这是一个非常有价值的资源。

    jsp动态网站开发与实例

    总之,"jsp动态网站开发与实例(第3版)"涵盖的内容广泛而深入,不仅讲解了JSP的基本概念和技术,还提供了丰富的实例和课件,旨在培养读者的实战能力,使其能够独立开发功能完善的动态网站。无论你是初学者还是有...

    JSP教案(WORD 版)

    "第7章 JSP开发中的常用技巧.doc"可能包含提高开发效率和优化JSP应用的方法,比如使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来减少脚本代码,以及错误处理和性能调优等。...

    郑州轻工业大学-JSP-PPT.zip

    - `5-4 JSP常用动作 xin.pdf`:JSP动作是XML标签,它们告诉Web容器如何处理页面中的某些内容。常见的JSP动作有jsp:include、jsp:forward、jsp:params等。例如,jsp:include可以动态地将一个页面包含到另一个页面中...

    jsp经典案例-新闻中心管理系统

    **标题解析:**"jsp经典案例-新闻中心管理系统" 这个标题表明我们即将探讨的是一个基于JSP技术的典型案例,具体应用在构建一个新闻中心的管理系统。JSP(Java Server Pages)是Java平台上的动态网页技术,它允许开发...

    JSP入门

    开发JSP应用时,常用的工具有Eclipse、IntelliJ IDEA等集成开发环境,它们提供了对JSP的语法高亮、自动完成和调试支持。 学习JSP,首先要熟悉Java基础,理解Servlet的工作原理,然后逐步掌握JSP的各种元素和动作,...

    精通JSP编程 作者赵强

    《精通JSP编程》是赵强先生的一部深入解析JSP技术的专业著作,该书针对JSP编程进行了全面且深入的讲解,旨在帮助读者掌握JSP的核心概念和技术,提升Web应用开发能力。根据提供的文件名列表,我们可以推测书籍的章节...

    JSP 程序设计从入门到精通 PDF 教程

    - **2.3.5 jsp:forward动作**:这部分介绍了jsp:forward动作,用于将请求转发到另一个资源。 - **2.3.6 jsp:plugin动作**:讲解了如何使用jsp:plugin动作来插入Java Applet或其他插件。 - **2.3.7 注释**:这部分...

    一个jsp下载系统.zip

    【标题】:一个基于JSP的下载系统 【描述】:这个压缩包“一个jsp下载系统.zip”包含了一个使用Java Server Pages(JSP)技术构建的下载系统源代码。JSP是一种动态网页开发技术,允许开发者在HTML页面中嵌入Java...

    JAVA_WEB开发教程之JSP技术基础知识

    【JAVA_WEB开发教程之JSP技术基础知识】章节深入解析了JSP...理解并掌握JSP的运行原理、基本语法以及常用动作指令,对于成为一名合格的JAVA_WEB开发者至关重要。通过实践和学习,读者可以进一步提升自己的Web开发技能。

    JSP程序设计教程JSP程序设计教程

    7. **MVC设计模式**:介绍MVC(Model-View-Controller)设计模式,它是Web开发中的常用架构,JSP通常作为View,而Servlet则扮演Controller角色。 8. **实战项目**:通过实际的案例或项目,演示如何使用JSP开发一个...

    学习jsp的常用程序举例

    5. **JSP动作标签**: - `&lt;jsp:include&gt;`:类似于include指令,但支持动态包含。 - `&lt;jsp:useBean&gt;`:创建和初始化Java Bean。 - `&lt;jsp:setProperty&gt;`和`&lt;jsp:getProperty&gt;`:用于设置和获取Bean的属性。 - `...

    jsp高级编程 (pdf)

    《JSP高级编程》这本书是Java服务器页面(JavaServer Pages,简称JSP)技术的一本深入解析教程。JSP作为Web开发中的重要组件,被广泛应用于动态网站的构建,尤其在企业级应用中占据重要地位。该书面向已经对基础JSP...

Global site tag (gtag.js) - Google Analytics