JSP基础入门与安全
🧩 一、什么是 JSP?
JSP(JavaServer Pages) 是一种 动态网页技术,用于在 HTML 页面中嵌入 Java 代码,从而在服务器端生成动态内容。
你可以把 JSP 理解为:
“HTML + Java 的混合体,运行在服务器端,由 Servlet 驱动。”
JSP 最初由 Sun Microsystems 推出,是早期 Java Web 开发的主力技术。
⚙️ 二、JSP 的工作原理(JSP = Servlet)
当浏览器请求 .jsp 文件时,JSP 页面会被 Web 容器(如 Tomcat)自动翻译成 Servlet 并编译执行。
流程如下:
浏览器请求 -> JSP -> 转换为 Servlet -> 编译为类 -> 执行 -> 生成 HTML -> 返回客户端📦 三、JSP 基本语法结构
1. HTML + Java
<html>
<body>
<%
String name = "JSP";
out.println("Hello, " + name);
%>
</body>
</html>2. JSP 脚本元素
| 类型 | 语法 | 用途 |
|---|---|---|
| 声明 | <%! int count = 0; %> |
定义类级变量或方法 |
| 脚本 | <% count++; %> |
编写 Java 代码 |
| 表达式 | <%= count %> |
输出表达式结果 |
3. 指令(Directive)
| 指令 | 例子 | 用途 |
|---|---|---|
| page | <%@ page language="java" contentType="text/html;charset=UTF-8" %> |
设置页面属性 |
| include | <%@ include file="header.jsp" %> |
静态包含其他 JSP |
| taglib | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
引入 JSTL 标签库 |
4. 动态包含(动作元素)
<jsp:include page="footer.jsp" />💡 四、JSP 内置对象(9 个)
| 对象名 | 类型 | 作用 |
|---|---|---|
request |
HttpServletRequest |
客户端请求对象 |
response |
HttpServletResponse |
响应对象 |
session |
HttpSession |
用户会话对象 |
application |
ServletContext |
全局上下文 |
out |
JspWriter |
输出流,写入响应 |
page |
Object |
当前 JSP 对象 |
pageContext |
PageContext |
管理 JSP 范围对象 |
config |
ServletConfig |
配置对象 |
exception |
Throwable |
异常对象(错误页才有) |
🧱 五、JSP 三种包含方式
- 静态包含(编译前):
<%@ include file="header.jsp" %>- 动态包含(运行时):
<jsp:include page="footer.jsp" />- Tag 文件(可复用):
可将 JSP 模块封装为自定义标签(
.tag)
🚧 六、JSP 的缺点(逐渐被淘汰)
| 问题 | 描述 |
|---|---|
| 表现层混杂逻辑层 | Java 代码写在 HTML 中,不易维护 |
| 安全性差 | 若暴露源码可能泄露业务逻辑 |
| 调试困难 | JSP 编译错误不容易定位 |
| 不支持组件化开发 | 不适合大型系统的开发模式 |
✅ 七、现代替代方案
| 传统 JSP 技术 | 替代技术 | 特点 |
|---|---|---|
| JSP + JSTL | Thymeleaf、Freemarker | 模板引擎,更清晰、更安全 |
| 后端渲染 | 前后端分离(Vue、React) | 更现代的 UI 交互模式 |
| Java Web(JSP+Servlet) | Spring Boot + Controller + REST | 更清晰、维护性更强 |
📚 八、使用 JSP 的典型场景(现在已较少用)
- 教学 / 课程实验项目
- 内网系统、公司后台管理系统
- 快速搭建原型
- 和旧系统兼容的页面展示
🔚 总结一句话:
JSP 是早期 Java Web 的动态页面技术,但由于代码混杂、维护成本高,现代开发更倾向于使用模板引擎或前后端分离。