news 2026/6/10 8:15:19

JSP原理详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSP原理详解

什么是JSP?

Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术!

最大的特点:

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

JSP原理

思路:JSP到底怎么执行的!

  • 代码层面没有任何问题
  • 服务器内部工作
    • tomcat中有一个work目录

work是tomcat服务器工作的目录

- IDEA中使用Tomcat会在IDEA的tomcat中生成一个work目录

在运行Tomcat项目的时候,会显示work目录在C盘中

实践步入类

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP也会转换成java类

我们可以发现JSP的本质是HttpServlet

可以发现打开的index_jsp.java 其实是index.jsp 编写的内容,实际上都是由java类实现的,我们只需要编写简单的代码即可

// 初始化publicvoidjspInit(){}// 销毁publicvoidjspDestroy(){}JspServicepublicabstractvoid_jspService(HttpServletRequestvar1,HttpServletResponsevar2)throwsServletException,IOException;
  1. 判断请求方法
if(!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())){finaljava.lang.String_jspx_method=request.getMethod();if("OPTIONS".equals(_jspx_method)){response.setHeader("Allow","GET, HEAD, POST, OPTIONS");return;}if(!"GET".equals(_jspx_method)&&!"POST".equals(_jspx_method)&&!"HEAD".equals(_jspx_method)){response.setHeader("Allow","GET, HEAD, POST, OPTIONS");response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED,"JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");return;}}
  1. 内置一些对象
finaljavax.servlet.jsp.PageContextpageContext;// 页面上下文javax.servlet.http.HttpSessionsession=null;// sessionfinaljavax.servlet.ServletContextapplication;// applicationContextfinaljavax.servlet.ServletConfigconfig;// configjavax.servlet.jsp.JspWriterout=null;// outfinaljava.lang.Objectpage=this;//page:当前javax.servlet.jsp.JspWriter_jspx_out=null;//请求javax.servlet.jsp.PageContext_jspx_page_context=null;//响应
  1. 输出页面前增加的代码
response.setContentType("text/html;charset=UTF-8");pageContext=_jspxFactory.getPageContext(this,request,response,null,true,8192,true);_jspx_page_context=pageContext;application=pageContext.getServletContext();config=pageContext.getServletConfig();session=pageContext.getSession();out=pageContext.getOut();_jspx_out=out;
  1. 以上的这些个对象我们可以在JSP页面中直接使用!

<%–通过尖括号百分号引起的代码就能写java代码–%>

<% %>

访问hello.jsp的时候,work目录下才会生成对应的hello.java

可以发现除了这里不一样,其他都是一样的

在JSP页面中;

只要是JAVA代码就会原封不动的输出;

如果是HTML代码,就会被转换为

out.wreite("<html>\r\n")

这样的格式,输出到前端!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:46:48

19、VMware 中不同操作系统的使用指南

VMware 中不同操作系统的使用指南 1. Solaris 系统启动与使用 Solaris Intel 平台版通过两步过程启动。首先从 DOS 分区加载一个(DOS)配置助手。若以交互模式进入该助手(首次安装时会这样),可以从替代设备启动并探测新添加的硬件,也能扫描特定硬件,但要注意,若扫描时遗…

作者头像 李华
网站建设 2026/6/10 10:52:26

LeetCode Hot100 —— 子串(面试纯背版)(三)

1、和为K的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums = [1,1,1], k = 2 输出:2示例 2: 输入:nums = [1,2,3], k = 3 输出:2提示: 1 <= nums.length…

作者头像 李华
网站建设 2026/6/10 5:12:29

apache-maven-3.9.9-src.zip 使用步骤 详细教程

先解压​ 安装包下载&#xff1a;https://pan.quark.cn/s/7d168ac471ab&#xff0c;下载完这个 zip 文件&#xff0c;找个地方解压开&#xff0c;比如放到 D:\tools\maven-src这种目录。解压后你会看到一堆源码文件和文件夹。 装 JDK​ 这个是 Maven 的源码包&#xff0c;要编…

作者头像 李华
网站建设 2026/6/9 17:02:55

12.17 - 合并两个有序数组 include<> 和 include““ 的区别

目录 1.合并两个有序数组 a.核心思想 b.思路 c.步骤 2.include<> 和 include"" 的区别 a.#include<文件名> b.#include"文件名" 1.合并两个有序数组 88. 合并两个有序数组 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn…

作者头像 李华
网站建设 2026/6/10 10:48:50

6、近期量子计算中的多编程机制解析

近期量子计算中的多编程机制解析 1. 量子电路分区算法 在量子计算中,量子电路分区是一个关键环节。这里介绍两种重要的分区算法:GSP 算法和 QHSP 算法。 1.1 GSP 算法复杂度 设硬件量子比特(物理量子比特)数量为 (n),需要分配分区的电路量子比特(逻辑量子比特)数量为…

作者头像 李华
网站建设 2026/6/10 11:02:54

35、Unix与Perl编程:数据检查、求助途径与问题解决

Unix与Perl编程:数据检查、求助途径与问题解决 1. 数据检查的重要性 在处理数据序列时,有些字符绝不能出现在序列中。例如,字符 “X” 不能用来表示核苷酸,“J” 也不对应任何氨基酸。同样,如果下载了对应基因的 DNA 序列,这些序列的编码部分长度应该是三个核苷酸的倍数…

作者头像 李华