JSP基础入门与安全

约 5 分钟读完

🧩 一、什么是 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 三种包含方式

  1. 静态包含(编译前)
<%@ include file="header.jsp" %>
  1. 动态包含(运行时)
<jsp:include page="footer.jsp" />
  1. Tag 文件(可复用): 可将 JSP 模块封装为自定义标签(.tag

🚧 六、JSP 的缺点(逐渐被淘汰)

问题 描述
表现层混杂逻辑层 Java 代码写在 HTML 中,不易维护
安全性差 若暴露源码可能泄露业务逻辑
调试困难 JSP 编译错误不容易定位
不支持组件化开发 不适合大型系统的开发模式

✅ 七、现代替代方案

传统 JSP 技术 替代技术 特点
JSP + JSTL ThymeleafFreemarker 模板引擎,更清晰、更安全
后端渲染 前后端分离(Vue、React) 更现代的 UI 交互模式
Java Web(JSP+Servlet) Spring Boot + Controller + REST 更清晰、维护性更强

📚 八、使用 JSP 的典型场景(现在已较少用)

  • 教学 / 课程实验项目
  • 内网系统、公司后台管理系统
  • 快速搭建原型
  • 和旧系统兼容的页面展示

🔚 总结一句话:

JSP 是早期 Java Web 的动态页面技术,但由于代码混杂、维护成本高,现代开发更倾向于使用模板引擎或前后端分离。


← Spring&SpringMVC基础学习 Java安全编程基础(二) →