news 2026/4/11 0:44:37

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/4/10 4:25:05

Kotaemon源码剖析:模块化架构如何提升系统稳定性

Kotaemon源码剖析&#xff1a;模块化架构如何提升系统稳定性 在企业级AI应用日益复杂的今天&#xff0c;一个智能对话系统是否“可用”&#xff0c;早已不再仅仅取决于它能否生成通顺的回答。真正的挑战在于&#xff1a;当面对海量知识库、多轮复杂交互、实时数据接入以及安全合…

作者头像 李华
网站建设 2026/4/10 10:16:24

27、虚拟机操作系统常见问题及解决办法

虚拟机操作系统常见问题及解决办法 1. 通用虚拟机操作系统问题 在使用 VMware 虚拟机时,可能会遇到各种问题,下面为大家详细介绍这些问题及对应的解决办法。 问题描述 解决办法 使用 VMware 的磁盘挂起功能挂起某些虚拟机系统时,主机系统会短暂冻结 1. 尝试减少虚拟机…

作者头像 李华
网站建设 2026/4/9 0:12:04

1、非极客的 Ubuntu 实用指南

非极客的 Ubuntu 实用指南 1. 走进 Linux 世界 1.1 Linux 简介 Linux 是一个开源的操作系统,其标志是一只企鹅。使用 Linux 的原因有很多,并非仅仅是因为成本因素。有人会质疑 Linux 是否真的适合桌面使用,但实际上它已经在不断发展和完善。 1.2 发行版与 Ubuntu Linux…

作者头像 李华
网站建设 2026/4/10 21:51:44

21、量子算法:Grover搜索与Shor整数分解

量子算法:Grover搜索与Shor整数分解 1. Grover算法概述 Grover算法是一种用于无结构搜索问题的量子算法,能在量子计算系统中显著加速搜索过程。该算法主要包含相位反转(Phase Inversion)和均值反转(Inversion About the Mean)两个关键步骤。 1.1 相位反转 相位反转是…

作者头像 李华
网站建设 2026/4/7 15:41:56

3、量子计算中的数值模拟与变分量子求解器

量子计算中的数值模拟与变分量子求解器 1. 引言 在量子计算领域,准确评估导数和寻找多体系统的基态是重要的研究方向。本文将介绍有限差分近似、均方误差评估以及变分量子求解器(VQE)的相关内容,旨在帮助读者更好地理解量子计算中的数值模拟方法。 2. 有限差分近似求导 …

作者头像 李华
网站建设 2026/4/11 13:41:16

7、近期量子计算中的多程序机制解析

近期量子计算中的多程序机制解析 在量子计算领域,多程序机制对于提升硬件利用率和计算效率至关重要。本文将深入探讨多程序机制在近期量子计算中的应用,包括不同算法的性能比较、新型方法的提出以及在实际量子算法中的应用。 1. 算法性能比较 1.1 不同算法在多电路执行时的…

作者头像 李华