每个语言都有它自己的语法,JSP作为Java动态web的实现,它有着它自己扩充的一些语法,当然它里面支持Java的所有语法。
JSP注释
<%--JSP注释内容--%>
在JSP中还能使用HTML的注释方法:
<!--HTML注释内容-->
两者的区别就是,HTML的注释会显示到客户端,但是JSP的注释不会显示到客户端。
JSP脚本片段
<%--JSP嵌入java代码--%>
<%
//这里面可以直接编写Java代码,和平时的Java可以一致
//这里面声明的Java代码最终都会被生成到_jspService()方法中
%>
我们在JSP的原理中已经明确知道了它的运行原理,它会将这其中的Java代码按顺序生成到对应的文件中,所以我们在一个JSP页面中利用这种方式可以实现Java代码的编写。
JSP表达式
<%--JSP输出表达式:用于程序向客户端的输出--%>
<%=java变量或者表达式%>
<%--JSP输出表达式:相当于如下java代码--%>
<%
response.getWriter().write(表达式或变量的内容转字符串);
%>
这个JSP的表达式就是用来向客户端直接输出JSP中Java变量或者Java表达式的值。
JSP声明
<%--JSP声明--%>
<%!
//这里面也是Java代码,但是这里面是用于声明该JSP生成的对应类中的成员
//可以声明成员变量,也可以声明成员方法,还能静态代码块...
%>
它一般用于声明该JSP中的成员。
举例如下:
先定义一个学生类:
package cn.ara.pojo;
public class Student {
private int id;
private String name;
private String sex;
private int age;
//构造方法、geter和setter省略
}
定义一个JSP页面:
<%--导入该JSP所需的包--%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.ara.pojo.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP首页</title>
</head>
<body>
<%--JSP声明 start--%>
<%!
static {
System.out.println("这是该类中的静态代码块");
}
private String author = "Ara_Hu";
public void myMethod() {
System.out.println("这是" + author + "声明的方法");
}
%>
<%--JSP声明 end--%>
<%--这是JSP的注释--%>
<!--这是HTML的注释-->
<%--JSP脚本片段 start--%>
<%
//模拟查询数据库的数据
ArrayList<Student> students = new ArrayList<>();
students.add(new Student(1, "小明", "男", 18));
students.add(new Student(2, "小红", "女", 19));
students.add(new Student(3, "小刚", "男", 18));
students.add(new Student(4, "小Ara", "男", 20));
students.add(new Student(5, "小胡", "男", 20));
%>
<%--JSP脚本片段 end--%>
<table border="1px">
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<%--嵌套语句循环输出数据 start--%>
<%
for (Student student : students) {
%>
<tr>
<th><%=student.getId()%>
</th>
<th><%=student.getName()%>
</th>
<th><%=student.getSex()%>
</th>
<th><%=student.getAge()%>
</th>
</tr>
<%
}
%>
<%--嵌套语句循环输出数据 end--%>
</tbody>
</table>
</body>
</html>
然后直接启动Tomcat运行,效果如下:
我们发现成功的将模拟的数据遍历在客户端了,而且我们还发现,我们审查元素时,看不到一点我们编写的Java代码,并且也没有看到我们声明的JSP注释。
我们可以直接看该JSP生成的java文件:
在这里插入代码片
我们发现我们在JSP声明中的代码直接放在了该类的成员中。
我们编写的其他Java脚本和HTML代码都被整理到了_jspService方法中。
虽然JSP现在已经过时了,但是博主认为,学习本该如此,我们也应该了解一下我们的前辈为我们留下的东西。