1. JSP 基础语法深度解析:从入门到实战
作为一名有十年Java Web开发经验的老兵,我见过太多初学者在JSP基础语法上栽跟头。今天我们就来彻底拆解JSP中最关键的三种语法:<% %>、<%= %>和<%! %>,让你不仅知道怎么用,更明白为什么这样用。
1.1 JSP运行机制揭秘
在深入语法前,必须理解JSP的本质。JSP(Java Server Pages)不是简单的HTML+Java混合体,而是一种会被服务器动态编译执行的模板技术。当浏览器请求一个JSP页面时,实际发生了以下转换过程:
- 服务器接收到.jsp文件请求
- JSP引擎将.jsp文件转换为.java源文件(Servlet)
- Java编译器将.java文件编译为.class字节码
- 服务器加载并执行这个Servlet类
- 执行结果以HTML形式返回给浏览器
这个转换过程解释了为什么:
- 第一次访问JSP较慢(需要编译)
- 不能直接双击打开JSP文件(需要服务器环境)
- 修改后首次访问会重新编译
关键理解:JSP本质上是Servlet的另一种表现形式,最终都会变成Java类来执行。
2. 三大基础语法详解
2.1 <% %> - 脚本片段(Scriptlet)
这是最基础的JSP语法,用于在页面中嵌入Java代码:
jsp复制<%
// 这里可以写任何合法的Java代码
String username = "张三";
Date now = new Date();
%>
特点:
- 内部声明的变量都是局部变量
- 每次请求都会重新执行
- 适合写流程控制、业务逻辑
- 不会自动输出内容到页面
典型应用场景:
jsp复制<%
// 接收请求参数
String id = request.getParameter("id");
// 条件判断
if(id != null) {
// 业务处理...
}
// 循环控制
for(int i=0; i<5; i++) {
// 循环体...
}
%>
2.2 <%= %> - 表达式(Expression)
这是最常用的输出语法,用于将Java表达式的结果输出到HTML中:
jsp复制当前用户:<%= username %>
当前时间:<%= new Date() %>
1+2=<%= 1+2 %>
特点:
- 等号后面必须是合法的Java表达式
- 会自动调用toString()转换为字符串
- 等价于<% out.print(表达式); %>
- 不能写完整的Java语句
常见错误:
jsp复制<%-- 错误示范 --%>
<%= int x = 10; %> <%-- 这是语句不是表达式 --%>
<%= if(true) {} %> <%-- 控制语句不能作为表达式 --%>
2.3 <%! %> - 声明(Declaration)
这是最容易误解的语法,用于声明成员级别的变量和
