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常用方法整理:深入理解与应用 JSP(JavaServer Pages)是Sun Microsystems公司推出的服务器端技术,用于创建动态网页。它结合了HTML、XML标记语言与Java编程语言的功能,使得在Web应用程序中嵌入Java代码...
在这里,我们将深入探讨"常用jsp标准标签"和"标准动作"。 1. **Core库** Core库是JSTL中最基本的库,它包含了许多与HTML元素相似的功能标签,如`<c:out>`、`<c:set>`、`<c:if>`、`<c:choose>`、`<c:when>`、`...
#### 七、JSP动作标记 - **include动作标记**:动态地包含一个文件,这个文件的内容将在运行时合并到当前页面中。例如: - `<jsp:include page="footer.jsp" />` - **param动作标记**:为其他动作标记提供参数值。...
- **转译**:JSP解析器将JSP文件转换为一个Java源代码的Servlet。 - **编译**:使用JDK将生成的Servlet源代码编译为字节码。 3. 如果Servlet已经存在,服务器直接执行该Servlet。 4. Servlet生成响应内容并返回给...
为了更好地理解和利用JSP配置文件,我们需要对提供的信息进行深入解析。 ### 标题:“开发中常用jsp配置文件” 该标题简明扼要地指出了本文档的主要内容:介绍在实际项目开发过程中经常使用的JSP配置文件。这表明...
2. **JSP语法**:讲解了JSP页面的基本构成,包括JSP指令、动作标签等,并通过实例让读者了解如何在页面中插入Java代码。 3. **内置对象**:JSP提供了九种内置对象,如request、response、session等,它们在Web开发...
通常,一个JSP常用集可能涵盖以下几个方面: 1. JSP基本语法:包括JSP指令(如page、include、taglib)、脚本元素(scriptlets、表达式、声明)、以及动作元素(如jsp:include、jsp:forward等)。 2. JSP内置对象...
**JSP(Java Server Pages)** 是...在"jsp培训.ppt"这个文件中,可能包含了上述知识点的详细讲解,包括示例代码、最佳实践以及常见问题解答。对于想要深入理解和掌握JSP技术的开发者来说,这是一个非常有价值的资源。
总之,"jsp动态网站开发与实例(第3版)"涵盖的内容广泛而深入,不仅讲解了JSP的基本概念和技术,还提供了丰富的实例和课件,旨在培养读者的实战能力,使其能够独立开发功能完善的动态网站。无论你是初学者还是有...
"第7章 JSP开发中的常用技巧.doc"可能包含提高开发效率和优化JSP应用的方法,比如使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来减少脚本代码,以及错误处理和性能调优等。...
- `5-4 JSP常用动作 xin.pdf`:JSP动作是XML标签,它们告诉Web容器如何处理页面中的某些内容。常见的JSP动作有jsp:include、jsp:forward、jsp:params等。例如,jsp:include可以动态地将一个页面包含到另一个页面中...
**标题解析:**"jsp经典案例-新闻中心管理系统" 这个标题表明我们即将探讨的是一个基于JSP技术的典型案例,具体应用在构建一个新闻中心的管理系统。JSP(Java Server Pages)是Java平台上的动态网页技术,它允许开发...
开发JSP应用时,常用的工具有Eclipse、IntelliJ IDEA等集成开发环境,它们提供了对JSP的语法高亮、自动完成和调试支持。 学习JSP,首先要熟悉Java基础,理解Servlet的工作原理,然后逐步掌握JSP的各种元素和动作,...
《精通JSP编程》是赵强先生的一部深入解析JSP技术的专业著作,该书针对JSP编程进行了全面且深入的讲解,旨在帮助读者掌握JSP的核心概念和技术,提升Web应用开发能力。根据提供的文件名列表,我们可以推测书籍的章节...
- **2.3.5 jsp:forward动作**:这部分介绍了jsp:forward动作,用于将请求转发到另一个资源。 - **2.3.6 jsp:plugin动作**:讲解了如何使用jsp:plugin动作来插入Java Applet或其他插件。 - **2.3.7 注释**:这部分...
【标题】:一个基于JSP的下载系统 【描述】:这个压缩包“一个jsp下载系统.zip”包含了一个使用Java Server Pages(JSP)技术构建的下载系统源代码。JSP是一种动态网页开发技术,允许开发者在HTML页面中嵌入Java...
【JAVA_WEB开发教程之JSP技术基础知识】章节深入解析了JSP...理解并掌握JSP的运行原理、基本语法以及常用动作指令,对于成为一名合格的JAVA_WEB开发者至关重要。通过实践和学习,读者可以进一步提升自己的Web开发技能。
7. **MVC设计模式**:介绍MVC(Model-View-Controller)设计模式,它是Web开发中的常用架构,JSP通常作为View,而Servlet则扮演Controller角色。 8. **实战项目**:通过实际的案例或项目,演示如何使用JSP开发一个...
5. **JSP动作标签**: - `<jsp:include>`:类似于include指令,但支持动态包含。 - `<jsp:useBean>`:创建和初始化Java Bean。 - `<jsp:setProperty>`和`<jsp:getProperty>`:用于设置和获取Bean的属性。 - `...
《JSP高级编程》这本书是Java服务器页面(JavaServer Pages,简称JSP)技术的一本深入解析教程。JSP作为Web开发中的重要组件,被广泛应用于动态网站的构建,尤其在企业级应用中占据重要地位。该书面向已经对基础JSP...