JSP入门第二章——Jsp语法之脚本、指令、动作元素
2016-10-10 19:13
696 查看
Jsp脚本元素
包含三个部分:声明,脚本段,表达式
(1)、声明:用于声明在其它脚本元素中可以使用的变量(等价于java类中的成员变量)和方法(成员方法)
具体代码形式: <%! Declaration;……%>
示例:
<%! int i=0;%>
<%!
public void method(){
}
%>
(2)、脚本段:是一段java代码
具体代码形式: <%……%>(相当于Servlet中service方法中)
例子:
<%
if(){
}else{
}
%>
(3)、表达式:java语言中完整的表达式,把表达式的值输出到网页上
具体代码形式: <%……%>
例子:<%= new java.util.Date().toLocaleString() %>
可以做个简单的例子。
创建一个Web项目,在WebRoot路径下新建一个welcome.jsp
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/477c7b6e62c58c281f12d156be739731)
具体代码如下:
测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/c0b09dddb0ed6c22edb39e37459a4119)
JSP指令元素(Directive)
JSP指令(<%@……%>)用来设置和整个JSP网页相关的属性,如网页的编码方式和脚步语言等。
JSP指令的一般语法形式:
<%@ 指令名 属性=“值” %>
page指令
page指令作用于整个jsp页面,定义了许多与页面相关的属性,这些属性将被用来和jsp容器通信.
语法:<%@page attr1=“value1” attr2=“value2”%>
例如:
<%@ page language =”java” %>
<%@ page import =”java.io.*,java.util.Hashtable” %>
<%@ page content_type=”text/html; charset=UTF-8” %>
属性列表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/6afba4c2af3316bc391b7bd960e0a254)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/c167b6097d1ac1438f7064bbc61d8416)
include指令
JSP可以通过inlude指令来包含其他文件的内容,被包含的文件可以是JSP文件或者HTML文件。
Include指令的语法:
<%@ include file=“目标组件的绝对URL或着相对URL”%>
用include指令包含的文件被看作是静态包含。
jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(被引入的页面先被引入后编译)。
结合之前的welcome.jsp做个例子,同样在WebRoot下新建一个taginclude.jsp
具体代码如下:
发现通过include指令后可以在taginclude.jsp页面直接应用welcome.jsp中声明的方法,这是因为include指令将整个welcome.jsp页面内容全部包含进来后,servlet分析器才开始编译taginclude.jsp转换的Servlet,最后Servlet容器加载编译后的字节码,返回响应结果,所以可以概括为先包含后编译。
发现通过include指令后可以在taginclude.jsp页面直接应用welcome.jsp中声明的方法,这是因为include指令将整个welcome.jsp页面内容全部包含进来后,servlet分析器才开始编译taginclude.jsp转换的Servlet,最后Servlet容器加载编译后的字节码,返回响应结果,所以可以概括为先包含后编译。
测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/6db8c650fae9f075a2bdd433081e7d4f)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/7536c9549a2122c4e9721c5e1efc683b)
taglib指令
做个简单的例子,在WebRoot下新建一个taglib.jsp
代码如下:
测试结果:
![](https://im<br/>4000<br/>g-blog.csdn.net/20161007151137244)
JSP指令介绍完,接下来介绍Jsp动作(或称行为)
Jsp动作是对常用的JSP功能的抽象和封装,包括两种,一种是自定义标签(自定义动作)和标准JSP动作。
Jsp动作格式为
动作元素-forward
语法:
(1)、JSP源组建和目标组件共享HttpServletRequest和HttpServletResponse对象;
(2)、JSP源组建中的所有输出数据都不会被发送到客户端。
(3)、JSP源组件中
举个简单的例子。为了方便管理,在WebRoot下新建一个jspactions包,然后在包中新建source.jsp,具体代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/45f2da91dfa71d4c077ae55b320b0d07)
再新建target.jsp,具体代码如下:
在浏览器地址栏输入:
http://localhost:8080/Jsp16_10_5/jspactions/source.jsp
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/a6e27e4cd62b4d82ccbdd92c1f3742a2)
因为没有传递参数,所以在target.jsp页面中获取到的username参数值为null。可以对source.jsp做个修改,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/917f533ac2d8a7a68cc9e8e0d6f19f2d)
测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/d8db90256090e76f9abdd5afb372d441)
动作元素-include
include行为用于运行时包含某个文件。如果被包含的文件为Jsp,则会先执行Jsp程序,然后再把执行后的结果包含进来。归纳为:先编译后包含。与include指令的执行过程是相反的。
语法:
可以继续结合welcome.jsp举个简单例子。在WebRoot新建一个jspinclude.jsp
具体代码如下:
在浏览器地址栏输入:http://localhost:8080/Jsp16_10_5/jspinclude.jsp
结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/15/cfd3ef62d2d760d59dc2a24310fcecd7)
结合include指令简单分析下。
会发现,在jspinclude.jsp中试图调用welcome.jsp中声明的方法时会失败,而在taginclude.jsp中可以直接调用welcome.jsp声明的方法,说明两者包含的时机不同。jspinclude.jsp只能包含welcome.jsp运行过后返回的结果页面,而taginclude.jsp能够包含welcome.jsp为运行时的整个页面。所有会出现以上的不同现象。
包含三个部分:声明,脚本段,表达式
(1)、声明:用于声明在其它脚本元素中可以使用的变量(等价于java类中的成员变量)和方法(成员方法)
具体代码形式: <%! Declaration;……%>
示例:
<%! int i=0;%>
<%!
public void method(){
}
%>
(2)、脚本段:是一段java代码
具体代码形式: <%……%>(相当于Servlet中service方法中)
例子:
<%
if(){
}else{
}
%>
(3)、表达式:java语言中完整的表达式,把表达式的值输出到网页上
具体代码形式: <%……%>
例子:<%= new java.util.Date().toLocaleString() %>
可以做个简单的例子。
创建一个Web项目,在WebRoot路径下新建一个welcome.jsp
运行环境:JDK1.7 Tomcat7.0 开发环境:myeclipse10.7
具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <head> <title>Welcome</title> </head> <body> <!-- 声明 --> <%! //声明一个name变量 String name; //声明一个方法 public void setName(String otherName){ name = otherName; } public String getName(){ return name; } %> <!-- 脚本 --> <% //对name成员变量赋值,通过调用声明的setName()方法 setName("张三"); //out是Jsp的隐藏对象 out.println("欢迎" + getName()); %> <!-- html代码 --> <br> <!-- 表达式 --> <%=getName() %> </body> </html>
测试结果:
JSP指令元素(Directive)
JSP指令(<%@……%>)用来设置和整个JSP网页相关的属性,如网页的编码方式和脚步语言等。
JSP指令的一般语法形式:
<%@ 指令名 属性=“值” %>
常用的三种指令: page include taglib
page指令
page指令作用于整个jsp页面,定义了许多与页面相关的属性,这些属性将被用来和jsp容器通信.
语法:<%@page attr1=“value1” attr2=“value2”%>
例如:
<%@ page language =”java” %>
<%@ page import =”java.io.*,java.util.Hashtable” %>
<%@ page content_type=”text/html; charset=UTF-8” %>
属性列表
include指令
JSP可以通过inlude指令来包含其他文件的内容,被包含的文件可以是JSP文件或者HTML文件。
Include指令的语法:
<%@ include file=“目标组件的绝对URL或着相对URL”%>
用include指令包含的文件被看作是静态包含。
jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(被引入的页面先被引入后编译)。
结合之前的welcome.jsp做个例子,同样在WebRoot下新建一个taginclude.jsp
具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ include file="welcome.jsp"%> <br> <% setName("李四"); out.print("include页面欢迎 " + getName()); %>
发现通过include指令后可以在taginclude.jsp页面直接应用welcome.jsp中声明的方法,这是因为include指令将整个welcome.jsp页面内容全部包含进来后,servlet分析器才开始编译taginclude.jsp转换的Servlet,最后Servlet容器加载编译后的字节码,返回响应结果,所以可以概括为先包含后编译。
发现通过include指令后可以在taginclude.jsp页面直接应用welcome.jsp中声明的方法,这是因为include指令将整个welcome.jsp页面内容全部包含进来后,servlet分析器才开始编译taginclude.jsp转换的Servlet,最后Servlet容器加载编译后的字节码,返回响应结果,所以可以概括为先包含后编译。
测试结果:
taglib指令
JSP支持标签技术,使用标签功能可以简化代码,使视图页面简洁美观。 taglib指令用来指明JSP页面内使用的标签库。 taglib两个重要属性,uri:类库的地址;prefix:标签的前缀。
做个简单的例子,在WebRoot下新建一个taglib.jsp
代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>taglib</title> </head> <body> <c:forEach var="num" begin="2" end="100" step="2"> ${num}<br> </c:forEach> <!-- 相当于 <% for(int num = 2; num <= 100; num = num + 2){ out.println(num + "<br>"); } %> --> </body> </html>
测试结果:
JSP指令介绍完,接下来介绍Jsp动作(或称行为)
Jsp动作是对常用的JSP功能的抽象和封装,包括两种,一种是自定义标签(自定义动作)和标准JSP动作。
Jsp动作格式为
<jsp:elements {attribute=”value”}*/>
动作元素-forward
语法:
<jsp:forward page=“转发的目标组件的绝对URL或相对URL”>
(1)、JSP源组建和目标组件共享HttpServletRequest和HttpServletResponse对象;
(2)、JSP源组建中的所有输出数据都不会被发送到客户端。
(3)、JSP源组件中
<jsp:forward>标签以后的代码不会被执行。
举个简单的例子。为了方便管理,在WebRoot下新建一个jspactions包,然后在包中新建source.jsp,具体代码如下:
<%@ page contentType="text/html; charset=UTF-8"%><html> <head> <title>Source Page</title> </head> <body> <p> This is output of source.jsp before forward. <% System.out.println("This is output of source.jsp before forward."); %> </p> <jsp:forward page="target.jsp"></jsp:forward> <p> This is output of source.jsp after forward. <% System.out.println("This is output of source.jsp after forward."); %> </p> </body> </html>
再新建target.jsp,具体代码如下:
<%@ page contentType="text/html; charset=UTF-8"%><html> <head> <title>Target Page</title> </head> <body> <p> Hello, <!-- 获取username参数值 --> <%=request.getParameter("username")%> </p> </body> </html>
在浏览器地址栏输入:
http://localhost:8080/Jsp16_10_5/jspactions/source.jsp
因为没有传递参数,所以在target.jsp页面中获取到的username参数值为null。可以对source.jsp做个修改,如图:
测试结果:
动作元素-include
include行为用于运行时包含某个文件。如果被包含的文件为Jsp,则会先执行Jsp程序,然后再把执行后的结果包含进来。归纳为:先编译后包含。与include指令的执行过程是相反的。
语法:
<jsp:include page=“” flush=“false”>
可以继续结合welcome.jsp举个简单例子。在WebRoot新建一个jspinclude.jsp
具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>My JSP 'jspinclude.jsp' starting page</title> </head> <body> Jsp Include<br> <jsp:include page="welcome.jsp"></jsp:include> </body> </html>
在浏览器地址栏输入:http://localhost:8080/Jsp16_10_5/jspinclude.jsp
结果如下:
结合include指令简单分析下。
会发现,在jspinclude.jsp中试图调用welcome.jsp中声明的方法时会失败,而在taginclude.jsp中可以直接调用welcome.jsp声明的方法,说明两者包含的时机不同。jspinclude.jsp只能包含welcome.jsp运行过后返回的结果页面,而taginclude.jsp能够包含welcome.jsp为运行时的整个页面。所有会出现以上的不同现象。
相关文章推荐
- JSP基本语法总结【1】(jsp工作原理,脚本元素,指令元素,动作元素)
- JSP(2)jsp语法之指令元素、脚本元素、动作元素forward、注释方法
- jsp 指令元素、脚本元素、动作元素
- JSP的脚本元素 指令元素 动作元素 页面元素以及执行过程
- jsp语法,指令,动作元素,内置对象
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
- JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
- JSP基础总结(运行机制、脚本元素、指令元素、动作元素)
- JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- jsp 指令元素、脚本元素、动作元素的区别
- JSP的语法、指令、动作元素、隐含对象知识回顾
- 复习:JSP基本语法(JSP注释 + JSP指令 + JSP脚本元素 + JSP动作元素)
- JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- JSP中的脚本元素,指令和动作
- 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)
- Jsp语法、指令及动作元素
- JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构
- Jsp语法、指令及动作元素