本篇开始学习JSP的语法和相关指令和对象,前面做了几个jsp文件,以及有一些语法基础。下面来简单介绍一下JSP的基础语法,用代码例子来演示。
1.JSP模板元素
这个网页的静态内容,例如html的标签和文本
2.JSP的脚本
2.1小脚本<%java代码%>
2.2 表达式<%= 2+3> 等价于 out.print(2+3)
这里通过前面练习,<%java代码%>我们已经很熟悉了,这种方式可以写少量的代码,所以叫小脚本。大量的逻辑代码也不会在JSP页面写,根据前面JSP最佳实践,应该在Servlet中写业务逻辑处理。
新建一个web动态项目,写一个index.jsp,内容如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% int i = 10; out.print(i); %> <%= i %> </body> </html>上面两种方式输出i的值,来证明<%=i> 等价于 put.print(i), 我们可以从tomcat服务器下work路径找到index_jsp.java看看代码,两个是一样的打印语句。
2.3 声明<%!%>在类中定义全局变量和静态代码块
接着2.2代码,我们写一个局部变量来看看
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%! int i = 10; %> <% int j = 10; i++; j++; %> <% out.print(i); out.print(j); %> </body> </html>浏览器访问,第一次访问,两个输出都是11
第二次访问,I的值变了,J一直显示11,不管刷新,访问多少次,i一直在加1.
出现这个原因,就是i是全局变量,刷新一次就加1,而j是局部变量,每次请求都是先赋值10,然后加1等于11,下面看看源码,还是在index_jsp.java中。
这个变量i定义在类中,不存在任何一个成员方法里。而J是定义在_jspService()方法中,是一个局部变量。
3.JSP中的注释
上面代码没有注释,很难看,如果初学者,这里介绍JSP的注释。
3.1 网页注释
我们学习html或者xml,都知道注释是<!-- -->, 同样jsp也支持这个
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- 定义一个全局变量i --> <%! int i = 10; %> <% int j = 10; i++; j++; %> <% out.print(i); out.print(j); %> </body> </html>浏览器访问,右键,查看源码。
这种注释,在html源码可见,不安全,费流量,因为这个注释也需要冲服务器加载然后解析到浏览器。
3.2JSP注释
在JSP中如果java代码,可以使用java当行//或者 /* 多行注释*/。 这里介绍JSP本身注释。<%-- --%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- 定义一个全局变量i --> <%! int i = 10; %> <%-- 这里定义一个局部变量 --%> <% int j = 10; i++; j++; %> <%-- int j = 10; i++; j++; 多行注释举例阿 --%> <% out.print(i); out.print(j); %> </body> </html>浏览器刷新,还是查看源码,就会发现,采用jsp注释语法,注释内容就不会显示html源码中。这就有一个安全,不费流量的好处。