JSP
JSP全称为JAVA Servlet Page,即Java服务器页面,是J2EE的功能模块由Web服务器执行。JSP的使用使得Java代码与HTML分离并降低Servlet对前台页面的开发难度,但是JSP的本质还是Servlet。
JSP的执行过程
JSP在本质上是Servlet,所以在浏览器发起访问请求后,会将JSP页面转译为Java代码,在Java文件转译为Class文件,最后将输出的结果返回给浏览器。
通过查看idea编译之后的文件可以发现,写好的JSP文件会直接转译为_jsp.java文件。
打开该文件查看_jspService()方法,可以看到在JSP中书写的HTML标签会自动转为out.write(...)
,JSP中的Java代码依旧保持不变。
_jsp.java文件通过编译成为字节码文件,最后将结果返回给浏览器,从而实现对页面的输出。
idea编译后的文件路径可查看控制台中打印的日志
Using CATALINA_BASE: "C:\Users\Administrator\.IntelliJIdea2018.3\system\tomcat\Tomcat_8_5_0_myJSP"
JSP基本语法
JSP代码块
用于书写Java逻辑,语法与Java相同,以<%
开始,%>
结束。例如:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>sum</title>
</head>
<body>
<%
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
%>
<%="<p>sum=" + sum + "</p>"%>
</body>
</html>
JSP声明构造块
用于声明变量或方法,以<%!
开始,%>
结束。
JSP输出指令
用于在JSP页面中显示JAVA代码的执行效果,以<%=
开始,%>
结束。
JSP处理指令
用于提供JSP执行过程中的辅助信息,以<%@
开始,%>
结束。
常用的指令有:
<%@ page %>
:定义当前页面全局设置<%@ include %>
:将其他JSP页面与当前JSP页面合并<%@ taglib %>
:引入JSP标签库
JSP中的注释
<%-- --%>
:JSP注释,被注释语句不做任何处理//、/*...*/
:用于注释JSP代码块中的Java代码,被注释的代码不执行<!-- -->
:HTML注释,被注释的语句不会被浏览器解析
示例:获取1000以内的素数并打印在页面上
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSPTest</title>
</head>
<body>
<!-- 声明代码块,声明isPrime()函数 -->
<%!
boolean isPrime(int num){
boolean flag = true;
for(int j = 2 ; j < num ; j++){
if(num % j == 0){
flag = false;
break;
}
}
return flag;
}
%>
<%
// JSP代码块,用于处理Java逻辑
List<Integer> primes = new ArrayList();
for(int i = 2 ; i<=1000 ; i++){
boolean flag = isPrime(i);
if(flag == true){
primes.add(i);
}
}
%>
<%
for(int p : primes){
%>
<%-- JSP输出代码块,将p输出到页面 --%>
<h1 style="color:red;"><%=p %>是质数</h1>
<%
}
%>
</body>
</html>
应为JSP本质上是Servlet,所以Java代码逻辑可以断开,中间再书写HTML代码,使得代码的可维护性大大提高。