JSP 从入门到实战:基础语法、异常处理与页面复用全解析
目录一、JSP 基础语法实战变量、判断、循环、访问计数1. 核心代码2. 关键知识点二、JSP 日期与页面信息展示三、JSP 异常处理机制统一友好错误页1. 异常触发页面errorPage.jsp2. 统一错误页面(error.jsp)3. 核心说明四、重点JSP 页面复用与静态资源引入1. 标准文件结构2. 页面复用实战代码① 公共头部 head.html② 公共底部 foot.html③ 首页 page1.jsp引入公共资源4. 核心复用语法五、总结一、JSP 基础语法实战JSP 脚本是在 HTML 中嵌入 Java 逻辑的核心语法也是实现页面动态化的基础。1. 代码% page contentTypetext/html;charsetUTF-8 languagejava % html head titleJSP基础语法/title /head body %! int count 0; % %-- 全局变量服务器运行期间持续生效 --% % int n 10; % %-- 局部变量仅当前请求内有效 --% %-- if 条件判断 --% % if (n 0) { % p%n % 是正数/p % } else if (n 0) { % p是负数/p % } else { % p是0/p % } % %-- for 循环输出 0~9 --% % for (int i 0; i 10; i) { % %i % nbsp; % } % br %-- 输出当前系统时间 --% 当前时间% new java.util.Date() % %-- 访问次数统计 --% % count; % p您是服务器启动以来第 % count % 位访问者/p /body /html2. 关键知识点脚本类型语法格式作用说明声明脚本%! %定义全局变量或方法在服务器运行期间持续生效代码脚本% %编写判断、循环、运算等 Java 业务逻辑输出脚本% %将表达式结果直接输出到页面等价于out.print()利用全局变量的特性可以快速实现简易的网站访问计数功能。二、JSP 日期与页面信息展示通过java.util.Date可以便捷展示系统日期时间同时配合page指令还能设置并获取页面描述信息。% page contentTypetext/html;charsetUTF-8 languagejava % % page importjava.util.Date % %-- 导入 Date 类 --% % page info今天星期几 % %-- 设置页面描述信息 --% html head title日期展示/title /head body h5 % Date date new Date(); %-- 创建日期对象 --% String s getServletInfo(); %-- 获取 page 指令中设置的 info 信息 --% % % s % %-- 输出页面描述信息 --% p %-- getMonth() 返回 0-11需 1 --% 今天是% date.getMonth() 1 %月% date.getDate() %号星期% date.getDay() % /p /h5 /body /html三、JSP 异常处理机制统一友好错误页在实际项目中统一的异常处理页面必不可少JSP 提供了简洁的异常跳转与捕获方案通过errorPage和isErrorPage两个属性即可实现。1. 异常触发页面errorPage.jsp通过errorPage属性指定异常发生时的跳转页面此处模拟除零异常% page contentTypetext/html;charsetUTF-8 errorPageerror.jsp% html body % int div1 1; int div2 0; out.print(div1 / div2); %-- 除零操作 --% % /body /html2. 统一错误页面(error.jsp)% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8% % page isErrorPagetrue % %-- 声明当前页面为错误处理页 --% !DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title页面出错了 | Error/title style * { margin: 0; padding: 0; box-sizing: border-box; font-family: Segoe UI, Roboto, Microsoft YaHei, sans-serif; } body { background-color: #f8f9fc; display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 20px; } .error-container { text-align: center; max-width: 600px; width: 100%; background: #fff; padding: 60px 40px; border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); animation: fadeIn 0.6s ease forwards; } keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .error-code { font-size: 80px; font-weight: 900; color: #ff6b6b; margin-bottom: 20px; } .error-title { font-size: 24px; color: #333; margin-bottom: 12px; } .error-desc { font-size: 16px; color: #666; line-height: 1.6; margin-bottom: 30px; } .error-msg { background: #fdf0f0; color: #d32f2f; padding: 12px 16px; border-radius: 8px; margin-bottom: 30px; font-size: 14px; word-break: break-all; } .btn-group { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; } .btn { padding: 12px 24px; border-radius: 8px; text-decoration: none; font-weight: 500; transition: all 0.3s; cursor: pointer; border: none; font-size: 15px; } .btn-home { background: #409eff; color: white; } .btn-home:hover { background: #3385e0; } .btn-back { background: #e5e7eb; color: #333; } .btn-back:hover { background: #d1d5db; } media (max-width: 576px) { .error-code { font-size: 60px; } .error-container { padding: 40px 20px; } } /style /head body div classerror-container div classerror-code % response.getStatus() % /div h2 classerror-title抱歉页面好像出错了/h2 p classerror-desc 服务器遇到了意外情况无法完成你的请求。br 你可以返回首页或稍后再试。 /p %-- 显示异常信息仅开发环境打开生产建议注释 --% % if (exception ! null) { % div classerror-msg % exception.getMessage() % %-- 输出异常详情 --% /div % } % div classbtn-group button classbtn btn-home onclickwindow.location.href/返回首页/button button classbtn btn-back onclickhistory.back()返回上一页/button /div /div /body /html3. 核心说明errorPageerror.jsp当前页面发生异常时自动跳转至指定错误页isErrorPagetrue开启错误页权限可通过内置对象exception获取异常详情四、重点JSP 页面复用与静态资源引入在企业级项目中页面复用是提升开发效率、统一页面风格的关键实践。通过% include %静态包含指令可以将头部、底部、公共样式抽离为独立文件实现一处修改、全站生效。1. 标准文件结构WebContent/ ├─ page1.jsp # 项目首页主体业务内容 └─ WebContent/ # 公共静态资源目录 ├─ head.html # 公共头部导航栏 全局样式 └─ foot.html # 公共底部版权信息2. 页面复用实战代码① 公共头部 head.htmlmeta charsetUTF-8 title我的JavaWeb网站/title style .header { background:#2c3e50; color:white; padding:15px; text-align:center; } .nav { background:#34495e; padding:10px; text-align:center; } .nav a { color:white; margin:0 15px; text-decoration:none; } /style div classheaderJava Web JSP 示例网站/div div classnav a hrefpage1.jsp首页/a a href#关于我们/a a href#产品中心/a /div② 公共底部 foot.htmldiv stylebackground:#2c3e50; color:white; text-align:center; padding:15px; margin-top:30px; p© 2026 我的JavaWeb项目 - 版权所有/p /div③ 首页 page1.jsp引入公共资源% page pageEncodingUTF-8% !-- 引入公共头部 -- % include fileWebContent/head.html % !-- 页面主体内容 -- div stylewidth:80%; margin:30px auto; h2欢迎来到首页 Page1/h2 p当前时间% new java.util.Date() %/p /div !-- 引入公共底部 -- % include fileWebContent/foot.html %4. 核心复用语法% include file文件路径 %属于静态包含在编译阶段将文件内容合并适用于引入 HTML 头部、底部、导航栏、公共样式等静态资源优势一处修改全站生效大幅降低代码冗余提升维护效率五、总结知识点核心要点三大脚本元素%! %声明全局变量/方法% %编写业务逻辑% %输出表达式结果访问计数利用全局变量特性可快速实现简易的网站访问计数功能异常处理通过errorPage与isErrorPage可快速搭建统一异常处理页面页面复用% include %静态包含是页面复用的常用方式适合抽离公共页面片段文件结构规范的文件结构能让项目更清晰便于后期维护与功能扩展