JSP语法

1、JSP概述

1.1 第一个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>
<h1>显示当前系统时间:</h1>
	<%
		java.util.Date date = new java.util.Date();
		out.print("当前时间是:"+date.toLocaleString());
	%>

</body>
</html>

1.2、JSP执行原理
客户端请求JSP文件>>Web服务器将JSP文件翻译成.java文件>>再编译成.class文件>>再执行HTML响应>>响应客户端请求

当同一个JSP页面再次被请求时,只要该JSP文件未被改动,容器将直接调用已装载的字节码文件,而不会再执行翻译和编译过程

客户端请求JSP文件>>Web服务器将查找.class文件>>再执行HTML响应>>响应客户端请求 。

1.3、JSP基本结构
JSP页面就是带有JSP元素的常规Web页面,它有模板文本和JSP元素组成。
在一个JSP页面中,所有非JSP元素的内容称为模板文本(template text)。模板文本可以是任何文本,如:HTML、XML,甚至可以是纯文本。
JSP并不依赖于HTML,它可以采用任何一种标记语言。模板文本通常被直接传递给浏览器。在处理一个JSP页面请求时,模板文本和JSP元素所生成的内容会合并,合并后的结果将作为响应内容发送给浏览器。
JSP有三种类型的元素:脚本元素、指令元素和动作元素
脚本元素(Scripting element):
脚本:<% %>
表达式:<%= %>
声明:<%! %>
注释:<%-- --%>
指令元素(Directive element):
<%@page
<%@include
<%@taglib
动作元素(Action element):
< jsp:include>
< jsp:forward>
< jsp:param>
< jsp:useBean>
2、脚本元素
2.1、JSP脚本
脚本元素允许用户将一小段的代码(一般是java代码)添加到JSP页面中,例如:可以加入一个if语句,以根据具体情况产生不同的HTML代码

脚本元素在页面被请求执行

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 email = "fengjj@itshixun.com";
		if(email.indexOf("@") == -1){
	%>
	您的邮箱地址没有@符号
	<br>
	<%
		}else if(email.indexOf(" ") != -1){
	%>
	您的邮箱地址含有非法空格
	<%
		}else if(email.indexOf("@") != email.lastIndexOf("@")){
	%>
	您的邮箱地址含有多个@符号
	<%
		}else{
	%>
	您的邮箱地址书写正确
	<%
		}
	%>
</body>
</html>

2.2、JSP表达式

  • JSP中的表达式可以被看作一种简单的输出形式,需要注意的是,表达式一定要有一个可以输出的值。
  • 【示例】使用JSP表达式输出九九乘法表
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>九九乘法表</title>
</head>
<body>
<% for(int i=1;i<10;i++){%>
<p>
<%	for(int j=1;j<=i;j++){ %>
<%= 	j+"*"+i+"="+(j*i)%>
<%		} %>
<%} %>
</p>
</body>
</html>

2.3、JSP的声明

  • JSP中的声明用于声明一个或多个变和方法,并不输出任何的文本到输出流。在声明元素中声明的变量和方法将在JSP页面初始化时进行初始化。
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页面的访问次数</title>
</head>
<body>
<%! int count = 0; %>
<%! synchronized void setCount(){
		count++;
	}
	%>
<% String date = new Date().toLocaleString(); %>
<%
setCount();
%>
您是第<%=count %>个人访问本页面的人,访问时间是:<%=date %>
</body>
</html>

JSP声明变量与脚本变量的区别:

声明变量将作为JSP翻译生成的Servlet的属性,所有对该JSP的请求将共享次变量。
脚本变量将作为JSP翻译生成的Servlet的_JSPService()方法中的局部变量,每个对该JSP请求将被分配给一个同名的此变量。

  • 2.4、JSP注释
    使用" < %-- --%>"对内容进行注释