JSP指令
JSP指令的语法格式:
<%@指令名 属性1=“值1” 属性2=“值2”%>
注意:<%@ 和%>是完整的标记,不能添加空格,其中,指令名在JSP中包括page,include和taglib三条指令,不同的指令有不同的属性,在一条指令中,不同属性用空格或逗号分开。
1.page指令:
page指令用于设置页面的各种属性,如导入包,指明输出的类型,一般位于JSP页面的开头部分,一个JSP页面可包含多条page指令。
属性名 | 说明 |
---|---|
language | 设定JSP页面使用的脚本语言,默认为Java,目前只可使用Java语言 |
import | 指定导入的Java包,如果有多个类时,中间用逗号隔开 |
contentType | 指定类型和JSP页面的编码方式 |
pageEncoding | 指定JSP页面的编码方式 |
注意:
- pageEncoding默认值为ISO-8859-1,其只支持英文字符,不支持中文。
- GBK,GB2312,UTF-8都支持中文。
- 修改eclipse中的jsp文件的字符编码,【window】->【preferences】->【Web】->【JSP File】->修改encoding的值为UTF-8即可。
2.include指令:(静态插入一个文件)
include用于在当前JSP中包含其他文件,被包含的文件可以是JSP,HTML或文本文件,之后两者会融合到一起。格式如下:
<%@ include File="文件的相对路径"%>
特别注意:
- file属性的值必须为相对路径,否则出现错误。
- 插入的文件的字符编码应与当前文件的字符编码保持一致。
3.taglib指令:
taglib用于指定JSP页面所使用的标签库。格式如下:
<%@ taglib url="导入的标签库" prefix="标签的前缀"%>
JSP 脚本程序
1.JSP脚本程序是在JSP页面中嵌入标签<%%>之间的Java代码。
2.脚本程序中定义的变量的作用范围是当前页面,生存时间是页面的一次打开和关闭。
3.在JSP页面中可以有多组<%%>标签,在上一组<%%>标签中定义的变量常量在下一组<%%>标签中是有效的。
JSP表达式
JSP实现输出的标签<%=%>,其格式如下:
<%= 变量或返回值的方法或Java表达式%>
<%
out.print();
%>
特别注意:
- ”<% “与”=“之间不要有空格。
JSP 声明标识
在声明标识中,可以定义变量,常量,还可以定义函数,其格式如下:
<%! %>
注意:
-
在声明标识中定义的变量的作用范围是当前页面,生存时间是服务器的运行时间。
-
在脚本程序中定义的变量范围是当前页面,生存时间是页面的一次打开与关闭。
-
在脚本程序中只能进行函数的调用,不能进行函数的定义。
例子:
<%@ page language='java' pageEncoding='gbk'%>
<html>
<head>
</head>
<%! /*声明标识*/
int num=0; //作用范围是整个服务器
void count()
{
num++;
}
%>
<%--函数调用--%>
<% count();%>
您是该网页的第<%=num %>个访问者
</body>
</html>
JSP注释
-
<%–内容–%>
-
脚本中使用注释:<% //单行注释 /* */多行注释 %>
脚本就是嵌入在<% %>之间的代码,并且脚本中使用的语言是Java,所以在脚本中注释和Java类中注释方法一样。
JSP标准动作
1.jsp:include动作
此标签包含一个静态的或者动态的文件,语法如下:
<jsp:include page='相对路径' flush='true'/></jsp:include>
注意:
-
<jsp:include >元素请求代码时可以带参数,而<%@ include %>就不可以带参数。
-
<jsp:include >中的path属性中可以使用JSP表达式,而<%@ include %>中的file属性不能使用JSP表达式。
-
从执行速度的角度来讲,<%@ include %>比<jsp:include >请求速度快,因为<%@ include %>仅处理一个请求,而<jsp:include >处理两个请求。
2.jsp:param动作
此标签能够传递一个或者多个参数给动态文件,也可以在一个页面中使用多个<jsp: param>来传递多个参数给动态文件。语法如下:
<jsp:param name='传递的名字 value='传递的值'/>
例如:
//first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎来到
<jsp:include page='show.jsp'>
<jsp:param value="jiben1801" name="class"/>
</jsp:include>
</body>
</html>
//show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String str=request.getParameter("class");
%>
<p><%=str %>JSP程序设计</p>
</body>
</html>
运行结果如下:
3,jsp: forward动作
此动作把请求转到另外的页面。其格式如下:
<jsp:forward page='JSP文件'></jsp:forward>
例如:
//first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>欢迎来到</p>
<jsp:forward page='show.jsp'>
<jsp:param value="1" name="class"/>
</jsp:forward>
<p>哈哈哈哈</p>
</body>
</html>
//show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String str=request.getParameter("class");
%>
<p><%=str %>JSP程序设计</p>
<p>嘿嘿嘿</p>
</body>
</html>
运行结果如下:
特别注意:
- 在上述的first.jsp文件中,有两个
标签,在 show.jsp中也有两个
标签,而访问此JSP时,虽然地址栏上是first,但是结果却是show.jsp的内容,这就是动作<jsp: forward>的作用。
JavaBean
JavaBean实际上是一个Java类,但它有独有的特点。
特性:
- 是公共的类。
- 构造函数没有输入参数。
- 属性必须声明为private,方法必须声明为public。
- 用一组set 方法设置内部属性。
- 用一组get 方法获取内部属性。
- 是一个没有主方法的类。
- 一般的Java类默认继承自Object类,而JavaBean不需要这种继承。
- 实现java.io.Serializable接口。
- JavaBean可以在任何Java程序编写环境下完成编写,再通过编译成为一个类(.class文件),该类可以被JSP程序进行调用。
例如:
package Student;
public class Student {
//name,number,height,weight
//属性必须声明为private,方法必须声明为public
private String name;
private Long number;
private Double height;
private Double weight;
//构造方法,getXxx-获取成员变量值方法(无参有返)
//setXxx-改变成员变量值的方法(有参无返)
public void setName(String name) {
this.name=name; //.全局变量等于局部变量
}
public String getName() {
return name;
}
public void setNumber(Long number) {
this.number=number;
}
public Long getNumber() {
return number;
}
public void setHeight(double height) {
this.height=height;
}
public double getHeight() {
return height;
}
public void setWeight(double weight) {
this.weight=weight;
}
public double getWeight() {
return weight;
}
}
测试类test
package Student;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student a=new Student(); //创建对象
a.setName("张三");//对象调用方法
a.setNumber((long) 1811011001);
a.setHeight(176.0);
a.setWeight(102);
System.out.println(a.getName());
System.out.println(a.getNumber());
System.out.println(a.getHeight());
System.out.println(a.getWeight());
}
}
运行结果:
4.jsp:useBean标准动作
此动作用来装载一个将在JSP页面中使用的JavaBean,其语法格式如下:
<jsp:useBean id='name' class='className' />
id:指定JavaBean实例的变量名,通过id 可以访问这个实例。
class:指定JavaBean的类名(包+类名)。
5.jsp:setProperty标准动作
其语法格式如下:
<jsp:setProperty name='对象名' property='属性名' value='值'/>
name:JavaBean对象名,与useBean标准动作中的id相对应。
property:表示要设置JavaBean中的哪个属性。如果property的值是"*",则表示所以名字和Bean属性匹配的请求参数都将给相应的属性setter方法。
value:value属性是可选的,该属性用来指定JavaBean属性的值。
6.jsp:getProperty标准动作
其语法格式:
<jsp:getProperty name='' property=''/>
name:指定JavaBean对象名,与useBean标准动作中的id 相对应。
property:指定JavaBean中需要访问的属性名。
使用上述的JavaBean,另外创建一个JSP 文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="a" class="Student.Student"></jsp:useBean>
<jsp:setProperty name="a" property="*"></jsp:setProperty>
<form action="#" method="get" name="StuInfo">
姓名:<input type="text" name="name"/><br/>
学号:<input type="text" name="number"/><br/>
身高:<input type="text" name="height"/><br/>
体重:<input type="text" name="weight"/>
<input type="submit"/>
</form>
姓名:<jsp:getProperty name="a" property="name"></jsp:getProperty><br/>
学号:<jsp:getProperty name="a" property="number"></jsp:getProperty><br/>
身高:<jsp:getProperty name="a" property="height"></jsp:getProperty><br/>
体重:<jsp:getProperty name="a" property="weight"></jsp:getProperty>
</body>
</html>
运行结果:
注意:
在JSP中运行后得到的是个表单,表单填完提交后可以在下面自动填充提交的内容。