当前位置: 首页 > news >正文

JSP

JSP原理分析

什么是JSP

Java Server Pages:Java服务器端页面,也和servlet一样,用于动态web技术。
最大的特点

  • 写JSP就像在写HTML

  • 区别:

    • :HTML只给用户提供静态的数据
    • :JSP页面中可以嵌入Java代码,给用户提供动态数据

JSP原理:

思路:JSP到底怎么执行

  1. 代码里面没有任何问题
  2. 服务器内部工作
    1. tomcat中有一个work目录
      屏幕截图 2025-09-16 074645
    2. IDEA中使用tomcat的会在IDEA的tomcat中生产一个work目录
  3. 浏览器向服务器发送请求,不管访问什么资源,都是在访问servlet。

JSP最终也会被转换成一个Java类,本质上就是servlet

初始化,销毁,jspservlet
![屏幕截图 2025-09-16 085142](https://img2024.cnblogs.com/blog/3677700/202509/3677700-20250916085154663-1693295525.png)
  1. 判断请求
  2. 内置一些对象
    屏幕截图 2025-09-16 085455
  3. 输出页面前增加的代码
    屏幕截图 2025-09-16 085619
  4. 以上的内置对象可以在JSP页面直接使用
    屏幕截图 2025-09-16 090152
  5. 在JSP页面中只要是Java代码就会原封不动的输出,只要是HTML代码就会转换成:out.print("<html>\r\n");
    这样的格式输出到前端

JSP基础语法

任何语言都有自己的语法:jsp作为Java技术中的一种应用,它拥有一些自己的扩充的语法(了解,知道即可),Java所有语法都支持。

JSP表达式

tomcat选择war exploaded可以实现热部署
升级资源。(第二个)
屏幕截图 2025-09-16 081621

JSP脚本片段

<%--JSP脚本片段--%>
<%
int sum=0;
for (int i=0;i<100;i++){sum+=i;}
out.println("<h1>sum"+sum+"<h1>");
%>

脚本片段的再实现

<%
int x = 10;
out.println(x);
%>
<P>这是一个JSP文档</P>
<%
for (int i=0;i<4;i++){
%>
<h1>HELLO <%= i%></h1>
<%}
%>

JSP声明

<%!static {System.out.println("loading servlet");}private int globalVar=0;public  void  xin(){System.out.println("进入了方法");}
%>

jsp声明:会被编译到jsp生成到Java类中!其他的就会被生成到jspservlet方法中!
在JSP中嵌入Java代码即可
jsp的注释不会在客户端显示,html就会

JSP指令

  1. <%@page args...%>

例如设置一个500报错页面:
屏幕截图 2025-09-16 150053

直接访问500.jsp会找不到图片,同样是路径问题,这里可以改成${pageContext.request.contextPath}/img/500.png,或者不把图片另放在img的包下,直接放在resource,或者不加前缀。第一种最实用。
屏幕截图 2025-09-16 150108
屏幕截图 2025-09-16 150136

  1. <%@includefile="common/..."%>,
    include会将页面合二为一,变成一个页面,容易出现页面变量定义重复的问题。...是指需要嵌入的项目路径如:2.jsp

  2. <jsp:include page="...">
    本质还是有三个页面
    屏幕截图 2025-09-19 171538

9大内置对象

  1. PageContext
  2. Request
  3. Response
  4. Session
  5. Application(servletcontext)
  6. config(serveltconfig)
  7. out
  8. page
  9. exception
    1-5是用来存东西
pageContext
request
session
application

作用域从低到高
屏幕截图 2025-09-22 153347

JSP,JSTL标签,EL表达式

 </dependency><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>

EL表达式:${}

  1. 获取数据
  2. 执行运算
  3. 获取web开发的常用对象
    4. 调用Java

JSP标签

屏幕截图 2025-09-22 183808

http://www.hskmm.com/?act=detail&tid=13639

相关文章:

  • 每日博客
  • 探展打卡 Serverless,2025 云栖大会来了
  • 从 0 到 1,AI 走进服装店:记住每位顾客的喜好,比你还靠谱
  • STM32HAL 飞快入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
  • 贪心算法应用:多重背包启发式疑问详解
  • 划重点|云栖大会「AI 原生应用架构论坛」看点梳理
  • 君子如水,心中有火:vivo本心而为30周年
  • Margin 塌陷问题如何解决?触发BFC。BFC的概念和触发条件
  • 9.22
  • 数字统计
  • 火速收藏!2025 云栖大会 AI 中间件议程看点全公开(附免费报名通道)
  • 第二次软工作业——个人项目 - LXJ
  • WinForm引入项目资源文件
  • 第二次作业
  • 训练集,验证集,测试集
  • Android 项目:画图白板APP开发(六)——分页展示 - 教程
  • ESP32 读取旋转编码器
  • mysql/oracle LEFT JOIN 取时间最大的数据
  • 6月6日证书 - 工信部人才交流中心PostgreSQL中级PGCP高级PGCM认证
  • 基于遗传算法与非线性规划的混合优化算法在电力系统最优潮流中的实现
  • 【下一款产品】
  • 数1的个数
  • 通过ML.Net调用Yolov5的Onnx模型
  • Java-如何在Eclipse开发-数组
  • 常用数据生成器
  • 基于RSSI修正的定位算法分析
  • c# 反射动态添加Attribute
  • MyBatis-Plus 全方位深度指南:从入门到精通
  • 鸿蒙项目实战(十):web和js交互
  • 【9.24 直播】集群数据管理实战:时序数据库 IoTDB 数据分区、同步与备份详解