news 2026/8/1 16:30: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/8/1 17:25:20

暗黑破坏神II存档编辑利器:Diablo Edit深度解析

暗黑破坏神II存档编辑利器&#xff1a;Diablo Edit深度解析 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 作为一款专为暗黑破坏神II设计的开源角色存档编辑工具&#xff0c;Diablo Edit以其强大…

作者头像 李华
网站建设 2026/8/2 0:20:17

iOS安装工具终极快速入门指南:如何发现最适合你设备的个性化方案

还在为复杂的iOS应用安装过程而烦恼吗&#xff1f;想要找到一个真正适合你设备特性的安装方案&#xff1f;TrollInstallerX作为一款专为iOS 14.0至16.6.1设备设计的革命性工具&#xff0c;通过智能化的设备适配机制&#xff0c;为每个用户提供专属的安装体验。 【免费下载链接】…

作者头像 李华
网站建设 2026/7/31 21:41:01

EmotiVoice开源项目版本回退策略与风险控制

EmotiVoice开源项目版本回退策略与风险控制 在AI语音合成技术迅猛发展的今天&#xff0c;开发者们不再满足于“能说话”的TTS系统&#xff0c;而是追求更自然、更具表现力的声音输出。正是在这一背景下&#xff0c;EmotiVoice 凭借其强大的多情感合成和零样本声音克隆能力脱颖而…

作者头像 李华
网站建设 2026/7/31 19:29:19

EmotiVoice开源项目上手教程:快速部署你的语音合成服务

EmotiVoice开源项目上手教程&#xff1a;快速部署你的语音合成服务 在智能语音助手、有声读物和虚拟偶像日益普及的今天&#xff0c;用户早已不再满足于机械朗读式的“机器人语音”。他们期待的是富有情感、贴近真人表达的声音体验。然而&#xff0c;传统文本转语音&#xff08…

作者头像 李华
网站建设 2026/8/1 15:38:59

19、量子计算在机器学习与电路优化中的应用

量子计算在机器学习与电路优化中的应用 1. 排队论模型在量子电路中的应用 在某些场景下,会使用利特尔法则(Little’s law)再次计算整个网络的时间,得出 $\overline{T} = \frac{K}{\lambda} = 3.33$ 。这一理论下限为 3,证实了在乘法器的情况下,实际获得的 5 层 SWAP 电…

作者头像 李华
网站建设 2026/8/1 9:27:03

EmotiVoice支持哪些语言和语调?全面功能特性一览

EmotiVoice 支持哪些语言和语调&#xff1f;功能特性深度解析 在虚拟主播直播中突然“情绪上头”&#xff0c;游戏角色因剧情转折而声音颤抖&#xff0c;或是你的语音助手用带着笑意的语气说“早安”——这些曾属于科幻场景的细节&#xff0c;正随着新一代语音合成技术的突破逐…

作者头像 李华