是不是刚学会搭建 JSP 环境,一写代码就懵了?看着教程里满屏的 “<% %>” 符号,不知道它们到底啥意思;写了几行代码,要么输出乱码,要么报错 “找不到变量”;好不容易运行起来,页面显示的内容和预期完全不一样。新手学 JSP,环境搭建只是第一步,搞懂基础语法才是写出动态网页的关键。今天兔子哥就带大家吃透 JSP 常用语法,每个语法都配实例代码,跟着练,你也能轻松写出带动态效果的 JSP 页面!
为啥 JSP 语法看起来这么怪?它和 HTML 有啥不一样?
可能有朋友会问:“HTML 标签多好懂,JSP 为啥非要用‘<%’这种奇怪的符号?” 其实 JSP 是 “Java 服务器页面”,这些符号是用来区分 HTML 和 Java 代码的。HTML 负责页面的样子,比如文字大小、颜色;而 JSP 语法包裹的 Java 代码负责动态内容,比如显示当前时间、计算结果,或者根据用户输入展示不同内容。
网友 “刚入门的小郑” 说:“刚开始觉得这些符号好难记,后来发现常用的就几个,多写几次就记住了,现在看到‘<%=’就知道是要输出内容了。” 确实,JSP 语法看着复杂,其实核心就 4 种,只要搞懂它们的作用和用法,写代码会越来越顺。
语法 1:页面指令,告诉服务器怎么处理页面
页面指令是 JSP 的 “开场白”,用来设置页面的基本属性,最常用的是
<%@ page %>指令,一般放在页面最开头。必学属性:处理编码和语言
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>language="java":告诉服务器这个页面用 Java 语言,目前 JSP 只支持 Java,这行可以省略,但新手最好加上,看得更清楚。charset=UTF-8和pageEncoding="UTF-8":这两行是解决中文乱码的关键!没它们,页面里的中文会显示成 “???”,新手一定要记住加这行,不然排错能排到崩溃。
其他常用属性:控制错误页面和会话
jsp
<%@ page errorPage="error.jsp" %><%@ page session="true" %>errorPage 很实用,比如代码报错时,不会显示一堆乱码的错误信息,而是跳转到自己写的友好提示页面。
语法 2:脚本片段,在网页里写 Java 代码
脚本片段用
<% %>包裹,里面可以写任何 Java 代码,比如定义变量、循环、判断,这是实现动态效果的核心。定义变量和输出内容
jsp
<%// 定义变量String username = "JSP新手";int age = 20;// 输出内容到页面out.println("用户名:" + username + "
");out.println("年龄:" + age + "
");%>运行后页面会显示:
- 用户名:JSP 新手
- 年龄:20
这里的
out.println()就像 “打印” 功能,能把内容显示在网页上,注意字符串拼接要用+号,结尾要加分号。循环和判断语句
jsp
<%// 循环输出out.println("循环输出数字:
");for(int i=1; i<=3; i++){out.println("第" + i + "个数
");}// 判断语句out.println("年龄判断:
");if(age >= 18){out.println("已成年");} else {out.println("未成年");}%>这段代码会循环输出 3 个数字,再根据 age 变量的值显示 “已成年” 或 “未成年”,这就是动态效果的魅力,内容会根据变量变化。
语法 3:表达式,简化输出不用写 out.println
表达式用
<%= %>包裹,专门用来输出变量或计算结果,比脚本片段的out.println()更简洁。基本用法:输出变量和表达式
jsp
用户名:<%= username %>
年龄加5:<%= age + 5 %>
当前时间:<%= new java.util.Date() %>
这段代码和脚本片段里的
out.println()效果一样,但代码更短。注意哦,表达式里不能加分号,加了会报错!很多新手刚开始总忘,写一句错一句,多练几次就记住了。和 HTML 结合:动态设置属性
表达式还能给 HTML 标签的属性赋值,比如动态设置图片路径或文字颜色:
jsp
![]()
">年龄状态
这里用三元表达式判断,如果 age 大于 18,文字颜色设为绿色,否则设为红色,非常灵活。
语法 4:声明,定义全局变量和方法
声明用
<%! %>包裹,用来定义整个页面都能用的全局变量或方法,和脚本片段里的局部变量不一样。定义全局变量和方法
jsp
<%!// 全局变量,所有用户共享int visitCount = 0;// 定义方法public String getWelcome(String name){return "欢迎你," + name + "!";}%><%visitCount++; // 每次访问页面,计数器加1%>访问次数:<%= visitCount %>
<%= getWelcome(username) %>
- 全局变量
visitCount所有用户共享,每次有人访问页面就会加 1,而脚本片段里的变量只能在当前代码块里用。 - 定义的
getWelcome方法可以在页面任何地方调用,不用重复写代码,很方便。
| 语法符号 | 作用 | 写法注意 | 新手易错点 |
|---|---|---|---|
| <%@ page %> | 设置页面属性 | 放在页面开头,有多个属性 | 漏写编码导致中文乱码 |
| <% %> | 写 Java 代码片段 | 可以有变量、循环、判断 | 忘记加分号或括号不匹配 |
| <%= %> | 输出内容 | 直接写变量或表达式 | 多加分号导致报错 |
| <%! %> | 定义全局元素 | 可以定义变量和方法 | 把局部变量放这里导致数据混乱 |
兔子哥提示:写 JSP 时别把这几种语法弄混了,多写几个例子对比,慢慢就分清了。比如看到
<%=就知道是输出内容,看到<%!就知道是定义全局的东西。实战:用四种语法做个用户信息页
把上面学的语法结合起来,做个完整的用户信息页,代码能直接运行:
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>用户信息页 用户信息展示
<%!int visitCount = 0;public String getGreet(String name){return "Hello," + name + "!今天也要加油哦~";}%><%String username = "张三";int age = 22;String[] hobbies = {"看书", "跑步", "编程"};visitCount++;%><%= getGreet(username) %>
年龄:<%= age %>岁
爱好:
<%for(String hobby : hobbies){%>- <%= hobby %>
<%}%>
访问次数:<%= visitCount %>
运行后页面会显示欢迎语、年龄、爱好列表和访问次数,每次刷新页面,访问次数都会增加,这就是 JSP 动态网页的效果。
自问自答:新手学 JSP 语法常见问题
脚本片段里的变量和声明里的变量有啥区别?
脚本片段里的变量是 “局部变量”,每个用户访问页面时都会重新创建,互不影响;声明里的变量是 “全局变量”,所有用户共享,一个用户改了,其他用户看到的结果也会变。比如 visitCount 放在声明里,才能统计总访问次数,放脚本片段里就只能统计当前用户的访问次数。
表达式里能写循环或判断吗?
不能!表达式只能写简单的变量或计算,不能写循环、判断这些复杂代码。如果要循环输出,得用脚本片段的
<% %>包裹循环语句,里面再用表达式或out.println()输出内容,就像上面实战案例里的爱好列表那样。为啥有时候变量明明定义了,却提示 “找不到符号”?
这大概率是变量的作用域问题。如果变量在脚本片段里定义,就只能在那个片段里用,换个片段就找不到了;如果在声明里定义,整个页面都能用。还有可能是变量名写错了,Java 是区分大小写的,“username” 和 “UserName” 是两个不同的变量。
最后说点实在话
JSP 语法刚开始学确实容易搞混,我第一次写的时候,总在表达式里加分号,报错了半天不知道为啥;把局部变量和全局变量弄混,统计访问次数时结果一直不对。但写得多了就会发现,常用的语法就那几个,记住它们的作用和写法,写代码会越来越顺。
其实学语法最有效的方法就是 “边学边练”,看完一个语法就写个小例子测试,比如学完表达式,就试试输出不同的变量和计算结果;学完循环,就试试输出 1 到 10 的数字。遇到报错别慌,仔细看错误提示,大部分时候都是语法细节没注意,比如少个分号、多了个空格。
JSP 语法是写动态网页的基础,学好了后面学 Servlet、SSM 框架会更轻松。现在就打开编辑器,把今天的例子敲一遍,改改变量值,看看页面变化,你会发现 JSP 其实没那么难,动态网页开发也挺有趣的!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~