JSP源码分析

10 篇文章 0 订阅
订阅专栏
  • 之前的博客中我们会经常使用到jsp,但jsp到底是如何运行的呢,它和HTML有什么区别?下面我们来看看它到底怎么运行的

JSP:Java Service Page :Java服务器页面
内部可以书写java代码,是用来处理一些Java前后端交互的数据,主要用来显示数据,不建议大量代码写在JSP页面里面;
特点:

  • 优点:简单,和HTML差不多,还可以书写java代码,书写格式灵活多样
  • 缺点:由于书写格式灵活多样,导致书写页面会很乱,HTML代码和JAVA交错;

JSP到底怎么执行的

  1. 动态请求会被分发到Web容器(Web服务器)中。
  2. 容器会去执行字节码文件,就是 .class文件。
  3. Servlet是java类,可以直接编译成class文件。

问题:Jsp怎么编译成class文件。
按照学习java的思路,class文件都是由JVM把Java文件编译成class文件,那么,Jsp文件被编译成了class文件,那是否也是从java编译来的呢?

我们先随意打开一个项目,找到idea下的项目名称,找到对应自动生成的index.jsp
路径为:

C:\用户\用户名\.IntelliJidea2018.1\system\tomcat\项目名\work\Catalina\localhost\项目发布名\org\apache\jsp

用户名:自己用户名(我的电脑名为fleeting)
.IntelliJidea2018.1:idea安装版本不同,后面的数字可能会略微有所差异
项目名:自己当初创建的项目名
项目发布名:当时在配置tomcat时,填写的项目发布名

放一个我的路径示例

C:\Users\fleeting\.IntelliJIdea2018.1\system\tomcat\Unnamed_JavaWeb_3\work\Catalina\localhost\demo01\org\apache\jsp

这是我打开了自己的一个项目下的jsp文件
在这里插入图片描述
可以看到index.jsp在文件中,会被先转为java文件,然后被编译为class文件
打开这个类
在这里插入图片描述
可以看到它继承了HttpJspBase类,我们可以再去查找这个类,会发现它继承了HttpServlet类,因此可以知道,原来JSP也是一个servlet,那为何会呈现出和HTMl相似的页面和编写格式呢?接着往下看:
在这里插入图片描述
看到这里感觉很熟悉,这不就是index.jsp页面上的代码吗,看到这里我们知道,它是使用out对象来输出到浏览器的。看一下out对象所在的方法:_jspService,这是一个将JSP文件,解析后输出到前端页面
在这里插入图片描述
这个方法中,我们可以看到定义的一些属性:
在这里插入图片描述

//JSP内置对象:
    pageContext 作用域:
    application = pageContext.getServletContext(); 应用
    session = pageContext.getSession(); 会话
    request = 请求
    page = this; 页面

看到全是servlet中我们经常看见的类,我们更加确定jsp是一个servlet了,前面说的out对象,原来就是一个JspWriter对象,有一种看见了response.getWriter()的感觉…
在这里插入图片描述
这里竟然还有中文解释…
可以看到了jsp同servlet类似,使用get,post方法,完成请求和响应…
接下来我们看一下在jsp中添加的java代码在被转为java文件后会变成什么样子…

----------------------------------------------华丽的分隔符-------------------------------------------------------

<%--
  Created by IntelliJ IDEA.
  User: fleeting
  Date: 2019/7/15
  Time: 10:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    int a;
  %>
  <p>暮凌寒雪</p>

a:<%=a=0%>
  <%
  for(int i=0;i<10;i++) {
  %>
      i=<%=i%>
  <%
  }
  %>
  </body>
</html>

这是我写的一个很简单的jsp页面,使用段落标签输出了四个字,其中使用java代码输出了a的值,还有一个10的循环输出,先看一下结果:
在这里插入图片描述
按照上面的方式,我们打开这个jsp的源码
在这里插入图片描述
可以看到我们所写的java代码都出现了,而且都在_jspService方法中…

总结:jsp其实就是一个servlet,只是经过了包装,变成了一个类似html的前端输出页面,我们观察源码可以看到,其实jsp在内部对于前端的那个标签进行了一定的处理,但实际上jsp文件在运行是还是会被先转为java文件,再被编译为class文件执行…

jsp网站
05-08
jsp网站开发码,直接导入可用!适合新手
java项目之学生考试成绩分析jsp码.zip
06-15
java项目之学生考试成绩分析jsp码java项目之学生考试成绩分析jsp码java项目之学生考试成绩分析jsp码java项目之学生考试成绩分析jsp码java项目之学生考试成绩分析jsp码java项目之学生考试成绩分析jsp
Java Web入门之JSP的基本语法解析及实战(超详细 附码)
showswoller的博客
09-29 2126
Java Web入门之JSP的基本语法解析及实战(超详细 附码) 包括指令标识 JSP表达式 动作标识等等
分享25个JSP码,总有一款适合您
热门推荐
zy0412326的专栏
11-25 1万+
jsp
第14弹:推荐一些适合练手、课程设计、毕业设计的JSP 项目码,无任何下载门槛
weixin_38343072的博客
10-28 97
一些JSP、JAVA项目码,涵盖管理系统、网站,大部分项目的码以及文档已经配齐,可用来练手以及大学生的课程设计、毕业设计等,无下载使用门槛
JSP课设:论坛管理系统(附码+调试)
faker369的博客
06-05 1892
JSP论坛管理系统 (1)注册模块:游客点击注册模块,输入账号,密码,昵称进行注册。 (2)登录模块:用户注册之后,输入账号和密码即可登录。 (3)我要发贴:点击发帖,进入我要发帖模块,用户输入标题和内容,并选择发布浏览器即可发帖。 (4)我的帖子:用户可以查看自己发布的帖子标题,发帖时间,浏览次数,并可以对帖子进行删除操作。 (5)评论帖子:用户可以在帖子中心浏览帖子,点进去之后,可以对帖子内容进行评论。 (6)个人资料:用户可以查看个人资料,修改个人资
网上书店销售管理系统JSP版+数据库设计+JSP分析
12-29
网上书店销售管理系统JSP版+数据库设计+JSP分析+需求分析
基于jsp工程项目管理系统
02-15
适合苦恼毕设的朋友,包含码 本系统主要通过使用管理信息系统(MIS)的方法,对公司的日常业务处理和信息资进行全面、系统的管理。在整个系统开发的过程中,运用了软件工程的基本概念、相关技术和方法。并且采用...
JSP网上招标系统
最新发布
04-24
本设计尝试用JSP在网络上架构一个下沙派威客网,以推进网站无纸化,过程电子化,管理智能化的发展。本文从理论和实践两个角度出发,对一个具有数据分析功能的下沙派威客网进行设计与实现分析。论文首先较为详尽地...
JSP销售分析系统代码.rar
07-10
JSP销售分析系统代码,包括了JAR和JAVA代码,有环境的可重新对代码编译。本套码是几年前收集的,发上来或许对你有用。有同类开发需要的朋友,可以做下的参考。
jsp网站jsp网站
04-09
jsp网站jsp网站jsp网站jsp网站jsp网站jsp网站jsp网站
图书馆管理系统 JSP
12-02
图书馆管理系统,主要功能:管理元登录,图书的增、删、改、查,借阅信息记录
自己写JSP博客 完整代码
06-12
自己写JSP博客 完整代码 JSP H5 博客网站系统
JSP的个人博客系统的设计码+毕业论文
05-05
JSP的个人博客系统的设计码+毕业论文,很实用的用来新手学习JSP以及连接数据库的一个例子
jsp博客系统
03-15
博客码内附数据库
Jsp码剖析
十三月的博客
05-17 606
C:\Users\Administrator\.IntelliJIdea2018.3\system\tomcat\Unnamed_JavaWebStudy\work\Catalina\localhost\ROOT\org\apache\jsp Jsp本质就是一个Servlet JSP的基本语法 重要!! ...
jsp码解析
mChenys的博客
07-06 1009
Jsp其实就是一个servlet!!!!Jsp的java类的生命周期和servlet的生命周期一样servlet的生命周期:    构造方法    init方法    service方法    destroy()jsp的java类的生命周期:    构造方法    _jspInit()    _jspService()    _jspDestroy()以tomcat服务器为例,当访问jsp页面后,...
JSP-原理详细分析+码查看
Ara_Hu的博客
02-28 984
JSP JSP:Java Server Page,Java服务器端页面,和Servlet一样,用于动态web技术。 JSP页面的展示就是HTML和Java代码组成的页面 JSP原理 JSP执行过程 当某个JSP页面第一次被访问时,它就会进行如下步骤: 准备两个JSP页面如下: 在这里插入代码片 ...
JSP个人博客系统(完整版)
09-12
博客网站系统 本例利用当前最流行的JAVA 语言和目前炙手可热的WEB 2.0的核心技术AJAX,严格遵照MVC模式构建一个简单的博客网站,包含博客网站所有的流程
tomcat8.5分析
04-02
作为一个AI机器人,我并没有能力进行分析。但是我可以提供一些关于Tomcat8.5的相关信息。 Tomcat8.5是Apache Tomcat的一个版本,是一个开的Web容器,使用Java编写,可用于部署Java Web应用程序。Tomcat8.5...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • Linux 8篇
  • 2019重学Java 5篇
  • WEB 7篇
  • MYSQL5.7 8篇
  • JavaWeb 10篇
  • Git 2篇
  • Mybatis 6篇
  • 功能实现 1篇
  • 表头代码 1篇
  • Spring 4篇
  • Vue框架 1篇
  • SpringBoot 1篇

最新评论

  • MYSQL5.7(64位)安装包及安装步骤

    Tequilaw(゚Д゚)w: 麻烦问问以后如何快速调用mysql哇

  • MYSQL5.7(64位)安装包及安装步骤

    wudiyoula: ..为什么我找不到可执行文件打开sql啊

  • MYSQL5.7(64位)安装包及安装步骤

    尊者我悟了: win11命令行切换不了路径,可以看看https://blog.csdn.net/weixin_44804514/article/details/126935426

  • MYSQL5.7(64位)安装包及安装步骤

    正在努力学习的小白袁: flush privileges ; 一定要加上分号,否则不能执行

  • MYSQL5.7(64位)安装包及安装步骤

    Beyond_April: zip里没有data

大家在看

  • Scala的字符串插值
  • JavaScript ES6 新特性探索:Proxy 解锁编程新境界 152

最新文章

  • SpringAOP动态代理之易懂的示例代码
  • Hello SpringBoot~
  • JSON的使用进行数据交互
2019年51篇
2018年14篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网056护卫舰头皮里莫名鼓起了个包都市异能小说女孩起名姓赵湘江战役发生的时间、地点姓夏女宝宝取名起名大全爆奶吧加盟李轩起名字冰是睡着的水剧情介绍起名汤包好听的结拜名字城市猎人高清下载焦姓起什么名字好听男孩男孩有哪些英文名字怎么起生辰八字网站起名iphone降级内衣品牌起名字大全日用品公司起名餐厅起名字元老赛马姓男孩起名霸气的周易起取名大全牧师自来水公司起名门店生鲜起名张姓双胞胎起名xfplay每日最新资源站姿暴风影音资源起个卖房子的微信网名大商道淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化