news 2026/10/19 16:23:31

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/10/20 0:25:08

开源新星Kotaemon:让RAG应用落地更简单

开源新星Kotaemon&#xff1a;让RAG应用落地更简单 在企业智能客服系统开发的实践中&#xff0c;一个常见的困境是&#xff1a;明明已经有了大模型和知识库&#xff0c;为什么还是做不出稳定、可信赖的问答机器人&#xff1f;很多团队投入数月时间搭建基于LangChain或自研的RAG…

作者头像 李华
网站建设 2026/10/20 9:26:40

Kotaemon负载均衡部署方案建议

Kotaemon负载均衡部署方案建议 在企业智能化转型加速的今天&#xff0c;越来越多组织开始构建基于大语言模型的知识助手和客服系统。然而&#xff0c;当这些系统从原型走向生产环境时&#xff0c;一个关键问题浮出水面&#xff1a;如何让智能问答服务在高并发场景下依然稳定、快…

作者头像 李华
网站建设 2026/10/19 21:02:12

18、多种操作系统在虚拟机中的安装与配置指南

多种操作系统在虚拟机中的安装与配置指南 在虚拟机环境中安装和配置不同的操作系统,能够为用户提供多样化的使用体验和测试平台。下面将详细介绍NetBSD、OpenBSD、Novell Netware和Solaris等操作系统在VMware中的安装、设备配置以及内核管理等方面的内容。 1. NetBSD安装与配…

作者头像 李华
网站建设 2026/10/19 12:26:08

4、开启 Ubuntu 之旅:从硬件准备到系统安装

开启 Ubuntu 之旅&#xff1a;从硬件准备到系统安装1. 硬件兼容性与要求在安装 Ubuntu 之前&#xff0c;我们需要先确认硬件的兼容性&#xff0c;并了解硬件的基本要求。1.1 检查硬件兼容性要查看主板型号&#xff0c;通常可以在主板的中间或边缘找到相关信息。例如&#xff0c…

作者头像 李华
网站建设 2026/10/20 5:47:21

EmotiVoice如何生成权威感十足的新闻播报语音?

EmotiVoice如何生成权威感十足的新闻播报语音&#xff1f; 在主流媒体加快智能化转型的今天&#xff0c;一条突发新闻从发生到全网传播&#xff0c;往往只需几分钟。而在这背后&#xff0c;越来越多的声音并非来自真人主播——而是由AI驱动的虚拟播报系统自动生成。这些语音不仅…

作者头像 李华
网站建设 2026/10/20 11:51:26

RN Navigation vs Vue Router 的架构对比

[toc] 很多团队同时做 Web 和 RN&#xff0c;经常会问&#xff1a;“能不能把 Web 的路由思想用到 RN&#xff1f;”答案是&#xff1a;能&#xff0c;但不能照抄。 一、本质差异先搞清楚维度Vue RouterRN Navigation渲染模型URL 驱动Stack 驱动页面状态可刷新内存状态回退机制…

作者头像 李华