您的位置:首页 > Web前端 > JavaScript

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

运行环境: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为运行时的整个页面。所有会出现以上的不同现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐