WEB项目之JSP页面的组成
在进行javaWEB应用开发时,JSP是必不可少。因此在学习javaWEB应用开发时还必须掌握JSP语法
JSP页面的组成
- WEB项目之JSP页面的组成
- 我的第一个jsp文件
- 指令标识
- 参数说明
- page指令
- include指令
- taglib指令
- 参数说明
- 脚本标识
- JSP表达式
- 声明标识
- 代码片段
- JSP注释
- HTML中的注释
- 带有JSP表达式的注释
- 隐藏注释
- 动态注释
- 动作标识
我的第一个jsp文件
在一个jsp页面中,可以包括指令标识、HTML代码、javaScipt代码,嵌入的java代码、注释和JSP动作标识
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输出当前时间</title>
</head>
<body>
<h3>当前时间</h3>
<%
Date date = new Date();
SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = df.format(date);
%>
<%=today %>
</body>
</html>
指令标识
指令标识主要用于设定整个jsp页面范围内都有效的相关信息,他是被服务器解释并执行的,不会产生任何内容输出到网页中。
JSP指令标识的语法格式
<%@ 指令名 属性1 ="属性值1" 属性2 = "属性值2".....%>
参数说明
指令名:用于指定指令名称,在JSP中包含page、include、和taglib三条指令
属性:用于指定属性名称,不同的指令包含不同的属性,不同的指令包含不同的属性。在一个指令中,可以设置多个属性,各属性时间用逗号或空格隔开
属性值:用于指定属性值
创建JSP文件时,在文件的最底端会默认添加一条指令,用于指定JSP所使用的语言、编码方式
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
page指令
page是JSP页面最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换为相应的java程序代码。
<$@page attr1 = "value1" attr2 ="value2"......%>
page最常用的10个属性
//1.language属性:用于设置JSP页面使用的语言
<%@ page language="java" %>
//2.extends属性:用于设置JSP页面继承的Java类,JSP页面在执行之前都会被服务器解析成Servlet,Servlet是由 java定义,所以JSP和Servelt都可以继承指定的父类,但是并不长用,有可能会影响服务器的性能优化
//3.import属性:用于设置JSP页面导入的类包。使JSP页面可以插入java代码片段
<%@page import = "java.util.*"%>
//4.pageEccoding属性:用于设置JSP页面的编码格式,也就是指定文件编码。JSP页面中的所有代码都使用该属性指定 的字符集
<%@ page pageEccoding = "GB18030"%>
//5.contentType属性:用于设置JSP页面的MIME类型和字符编码
<%@page contentType = "text/html"; charset = "UTF-8"%>
//6.session属性:该属性指定JSP页面是否使用HTTP的session会话对象。属性值就是Boolean类型
<%@ page session = "false"%>
//7.buffer属性:用于设置JSP的out输出对象使用的缓存区大小,默认的时候为8KB
<%@ page buffer = "128kb"%>
//8.autoFlush属性:用于设置JSP页面缓存满时,是否自动刷新缓存。默认值是true;r
如果设置为false,则缓存被填满时将抛出异常
<%@ page autoFlush = "false"%>
//9.isErrorPage属性:可以将当前JSP页面设置成错误处理页面来处理另一个JSP页面的错误,也就是异常处理
<%@ page isErrorPage = "true"%>
//10.errorPage属性:用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置
isErrorPage属性为true。errorPage属性的属性值就是一个url字符串
<%@ page errorPage = "error//loginErrorPage.jsp"%>
include指令
通过该指令可以在一个JSP页面中包含另一个JSP页面。该指令是静态包含,也就是说被包含文件中所有内容会被原样包含到该JSP页面中,即使里面有JSP代码,在包含也不会被编译执行,但是显示的文件结果会在那个包含文件结果的显示中
<%@ include file = "path"%>
//主文件
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="GB18030">
<title>输出当前时间</title>
</head>
<body>
<%@ include file ="top.jsp"%>
<h3>当前时间</h3>
<%
Date date = new Date();
SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = df.format(date);
%>
<%=today %>
<%@ include file = "copyright.jsp" %>
</body>
</html>
//被包含的文件
<%@ page pageEncoding="GB18030"%>
<h2>世上无我这般人</h2>
//被包含的文件
<%@ page pageEncoding="GB18030"%>
<h2>手握日月摘星辰</h2>
taglib指令
在JSP文件中可以通过taglib指令标识声明该页面中所使用的标签,并指定标签的前缀。
<%@ taglib prefix = "tagPrefix" uri = "tagURI"%>
参数说明
prefix:用于指定标签的前缀,该前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw
uri:用于指定标签库文件的存放位置
脚本标识
脚本标识能够很方便、灵活生成页面中的动态内容,特别是Scriptlet脚本程序。
JSP表达式
JSP表达式用于向页面中输出信息
表达式:可以是任何java语言的完整表达式。该表达式的最终运算结果结果将被转换为字符串
<%= 表达式%>
<%String manager = "123";%>//定义保存变量
<%="数字:"+manager %>//输出结果:数字:123
声明标识
用于定义在JSP页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个JSP页面访问,所以通常使用标识定义整个JSP页面需要引用的变量和方法
语法格式:
<%!声明变量或方法的代码%>
通过声明标识声明一个全局变量或全局方法
<%!
int number = 0; //声明全局变量
int count(){ //声明全局方法
number++; //累加
return number; //返回number值
}
%>
代码片段
代码片段就是在JSP页面中嵌入Java代码或脚本代码
<% java代码或脚本代码 %>
代码片段比使用灵活,功能是JSP表达式所不能实现的
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="GB18030">
<title>九九乘法表</title>
</head>
<body>
<%
String str = "";
for(int i =1;i<=9;i++){
for(int j = 1;j<=i;j++){
str += j+"*"+i+"="+j*i;
str += " ";
}
str+="<br>";
}
%>
<%=str %>
</body>
</html>
JSP注释
由于JSP页面由HTML、JSP、Java脚本等组成,所以在其中可以使用多种注释格式
HTML中的注释
//代码注视
带有JSP表达式的注释
1.单行注释//
2.多行注释
/*
*
*
*/
3.文档注释
/**
*
*
*/
隐藏注释
查看源代码时是看不到的
<%-- 注释内容--%>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="GB18030">
<title>九九乘法表</title>
</head>
<body>
<%-- 计算开始--%>
<%
String str = "";
for(int i =1;i<=9;i++){
for(int j = 1;j<=i;j++){
str += j+"*"+i+"="+j*i;
str += " ";
}
str+="<br>";
}
%>
<%-- 计算完毕--%>
<%=str %>
</body>
</html>
动态注释
由于HTML注释对JSP嵌入的代码不起作用,因此可以利用他们的组合构成动态的HTML注释文本
<%-- <%=new Data()%>-->
动作标识
包含文件标识<jsp:include>
用于向当前页面中包含其他的文件。被包含的文件可以是动态文件或静态文件
语法格式:
<jsp:include page="url" flush = "false|true"/>
<jsp:include page="url" flush = "false|true">
子动作标识<jsp:param>
</jsp:include>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="GB18030">
<title>输出当前时间</title>
</head>
<body>
<jsp:include page="top.jsp"/>
<h3>当前时间</h3>
<%
Date date = new Date();
SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = df.format(date);
%>
<%=today %>
<jsp:include page="copyright.jsp"/>
</body>
</html>
请求转发标识<jsp:forward>
可以将请求转发到其他的Web资源,例如另一个JSP页面、HTML页面、Servelt等。
请求转发后,当前页面不再执行,而是去执行标识指定的目标页面。
<jsp:forward page="url"/>
<jsp:forward page="url">
子动作标识<jsp:param>
</jsp:forward>
参数说明:
page:这里是指用于指定请求转发的页面
**子动作标识<jsp:param>**:用于向转向的目标文件中传递参数
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="GB18030">
<title>中转页</title>
</head>
<body>
<jsp:forward page="nine.jsp"></jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="GB18030">
<title>九九乘法表</title>
</head>
<body>
<%-- 计算开始--%>
<%
String str = "";
for(int i =1;i<=9;i++){
for(int j = 1;j<=i;j++){
str += j+"*"+i+"="+j*i;
str += " ";
}
str+="<br>";
}
%>
<%-- 计算完毕--%>
<%=str %>
</body>
</html>
<jsp:param name = "参数名" value ="参数值"/>
可以作为其他标识符的子标识,用于传递参数
name:用于指定参数名称
value:设置对应的参数值
<jsp:forward page="url.jsp">
<jsp:param name="use" value="7"/>
</jsp:forward>