news 2026/4/3 6:28:30

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/3/30 1:00:06

17、FreeBSD及其他操作系统在VMware中的使用与配置指南

FreeBSD及其他操作系统在VMware中的使用与配置指南 1. FreeBSD设备管理与配置 在VMware中使用FreeBSD时,涉及多种设备的管理和配置,下面为你详细介绍。 1.1 USB设备管理 FreeBSD通过 usbd 守护进程管理USB设备,该进程主要负责设备的连接和移除。若要在启动时激活 usb…

作者头像 李华
网站建设 2026/3/13 8:02:55

实战分享:使用Kotaemon完成金融领域智能客服项目

实战分享&#xff1a;使用Kotaemon完成金融领域智能客服项目 在银行客服中心的一个普通下午&#xff0c;坐席人员正疲于应对大量重复咨询&#xff1a;“这款理财产品的风险等级是多少&#xff1f;”“我能提前赎回吗&#xff1f;”“年化收益怎么算的&#xff1f;”——这些问题…

作者头像 李华
网站建设 2026/3/28 12:34:27

4、近-term量子计算的多编程机制

近-term量子计算的多编程机制 1 引言 近年来,量子技术不断进步,IBM 发布了拥有 433 个量子比特的最大量子芯片。然而,当前的量子设备仍属于有噪声的中等规模量子(NISQ)硬件,存在一些物理限制。例如,对于超导设备,仅允许相邻的两个量子比特之间进行连接。此外,NISQ 设…

作者头像 李华
网站建设 2026/3/28 11:35:53

使用Kotaemon实现跨文档信息整合的实践方法

使用Kotaemon实现跨文档信息整合的实践方法 在企业知识管理日益复杂的今天&#xff0c;一个常见的困境是&#xff1a;员工明明知道公司有相关政策文件&#xff0c;却总是在几个PDF之间来回翻找&#xff0c;最后还得发邮件问HR或法务。这种“我知道它存在&#xff0c;但我找不到…

作者头像 李华
网站建设 2026/3/30 19:27:36

大模型智能体优化全攻略:从参数微调到无参数策略的系统化解析!

来自华东师大和东华大学的研究团队发表了“A Survey on the Optimization of Large Language Model-based Agents&#xff08;大模型智能体的优化方法综述&#xff09;”&#xff0c;首次从系统化视角对LLM智能体优化策略进行了全面梳理与分析。 论文将将现有方法划分为两大类…

作者头像 李华