jsp文件能转换html吗,html怎么转换成jsp

众所周知,每一个JSP页面都会被Web容器编译成一个Java类,供web容器调用,并且生成HTML叶面回馈给用户。而了解其中的变异方法和规则,对我们学习JSP是非常有好处的,可以说学习好了这个编译原理,就已经学习好了大部分的JSP知识,剩下的工作就只剩下熟记一些tablib和反复应用以使自己更加熟练而已了。。

先来看一下JSP页面所对应的Class的基本结构。每一个JSP页面都会被编译成成如下的格式样子,先给一个大致的印象,详细的说明在后面。

public class My$jsp extends HttpJspBase { static {} public date$jsp() {} private static boolean _jspx_inited = false; public final void _jspx_init() throws org.apache.jasper.runtime.JspException {}; public void _JSP pageservice(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; String _value = null; try { if (_jspx_inited == false) { synchronized (this) { if (_jspx_inited == false) { _jspx_init(); _jspx_inited = true; } } } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO-8859-1"); pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); // HTML // begin [file="/date.jsp";from=(0,0);to=(7,6)] out.write("\r\n\r\n\r\n" + "\r\n\r\n\r\n" + "The date is\r\n"); // end // begin [file="/date.jsp";from=(7,8);to=(7,57)] out.println((new java.util.Date()).toString()); // end // HTML // begin [file="/date.jsp";from=(7,59);to=(10,7)] out.write("\r\n \r\n \r\n"); // end } catch (Throwable t) { if (out != null && out.getBufferSize() != 0) { out.clearBuffer(); } if (pageContext != null) { pageContext.handlePageException(t); } } finally { if (_jspxFactory != null) { _jspxFactory.releasePageContext(pageContext); } } } }

我们可以清楚地看到,这里面最重要的函数就是pageservice,web容器在编译好一个JSP类以后,

就申请这个类的对象,并且直接调用pageservice来获得Response,最后返回给客户。

作为细节,我们可以总结如下:

所有的JSP页面翻译出来的class,都从HttpJspBase继承,并且命名为PageName$jsp

在第一次调用pageservice函数的时候,该class会进行一次初始化,而这个初始化函数是_jspx_init,如果我们想,我们还可以自定义这个函数,来实现JSP页面的初始化。

这样的代码被转换成什么了?

这样的代码被直接转成Java代码放到pageservice函数里面。

这样的代码被转换成什么了?

这样的代码被翻译成成员函数和成员变量,也就是说,这些声明在JSP的生命周期内都是存在的。

HTML代码呢?

html代码直接被写到PrintWriter里面回馈给用户。非常的直接

为什么JSP页面有那么多省写方式,比如说session , out , page , context之类。

这都是在pageservice里面定义的临时变量,具体的初始化可以参看上面的例子代码,每一次调用JSP页面,这些变量都会被重新初始化一次。当然我们也可以方便的声明自己的变量。

省写方式 这么理解? 这种省写方式调用doSomething所得到的Object的toString(),然后直接写到out里面。相当于:

out.print(object.doSomethiing().toString())

JavaBean 里面的scope定义了作用域范围,这个范围在这里的意思是?

这是Bean对象句柄保存的地方的意思。我们可以想象一下,一个page范围的Bean只是pageservice里面的一个局部变量,当一次处理结束后,这个变量就会被Java虚拟机回收。而session变量。而request级别的Bean就应该是JSP页面的成员变量。而session和application则不能在JSP页面class里面保存,而应该保存在JSP页面的调用对象里面。

关于命令,这个就太简单了,只是一个一个的对应为response.setContentType()的语句而已。

关于JSP页面转向问题。这个语句被翻译为getServletContext().getRequestDispatcher("/List.jsp").forward(req, res);语句。

遇到这个语句,JSP翻译器就会把这个文件的代码和现在文件的代码混合然后一起编译,生成JSP类。这个方法很好,可以让我们统一文档的样式,比如说吧header写成一个文件,,而把footer也写成一个JSP ,并且在index.html里面把这两个文件包含近来,这样,不管Content怎么变,上下样式都不会变,有利于样式的统一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.vue文件_Spring Boot 2.x(十六):玩转vue文件上传

为什么使用Vue-Simple-Uploader 最近用到了Vue Spring Boot来完成文件上传的操作,踩了一些坑,对比了一些Vue的组件,发现了一个很好用的组件——Vue-Simple-Uploader,先附上gayhub的,再说说为什么选用这个组件&#xf…

成为Java流专家–第2部分:中级操作

就像魔术棒一样,中间操作将一个Stream转换为另一个Stream。 这些操作可以无穷无尽的方式组合在一起,以可读有效的方式执行从简单到高度复杂的任务。 本文是五分之二,其中还有一个GitHub存储库,其中包含每个单元的说明和练习。 第…

HTML怎么在li中加select标签,自定义UL LI选择框似乎在其他HTML元素后面

我似乎无法弄清楚为什么我的自定义UL LI选择框出现在其他HTML元素后面。你如何解决这个问题,当用户点击选择框时,它会出现在其他页面元素的顶部?这里是手头的问题的一个画面: 下面是一个描绘所期望的结果: 这里是有问题…

java初学者面试_Java面试的前50个问题,面向初学者和经验丰富的程序员

java初学者面试您可以参加任何Java面试,无论是大四还是中级,经验或新来的人,一定会看到线​​程,并发和多线程中的几个问题。 实际上,这种内置的并发支持是Java编程语言的最强优势之一,并帮助它在企业界和程…

convert.todatetime指定日期格式_SQL基础知识V2——常用日期函数

点击上方SQL数据库开发,关注获取SQL视频教程SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总日期函数是数据库中经常需要使用到的,本期将常用的几个日期函数给小伙伴做详细的介绍。GETDATE()GETDATE()函数用于返回当前数据库系统的日期和时间&#x…

恢复html的初始选定状态,Adobe Photoshop

了解如何在 Adobe Photoshop 中使用“还原/重做”命令和“历史记录”面板来控制图像的状态。通过使用“还原/重做”命令和“历史记录”面板,您可以轻松地控制图像的状态。使用还原或重做命令Photoshop CC 20.0(2018 年 10 月版)中的更新功能从 Photoshop CC 2018 年…

classcastexception异常_优雅的异常处理

代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行代码中的异常处理好了,代码就可以顺利的继续运行!3.3 最近我们遇到过的异常System.out.println(1/0);//java.l…

Spring Boot微服务,Docker和Kubernetes研讨会–第3部分

在之前的文章中,我们为使用Docker和Spring Boot的订单管理系统构建了一些微服务(订单服务,产品服务,客户服务)。 我们使用Netflix库来管理,发现和平衡微服务。 管理这些微服务及其多个容器可能会有些棘手&…

2021年茂名市高考成绩查询,2021年茂名高考最高分多少分,历年茂名高考状元

2021年茂名高考成绩公布时,茂名高考成绩最高分受到很多网友关注,具体2021年茂名高考最高分多少分,考生可以在聚志愿网站查询具体位次排名,报考茂名高考一分一段表位次排名、同分数人数、位次查询等相关数据。本期文章小编主要为大…

客制化键盘键位修改_可以用很漂亮形容的一把键盘,差一步就完美

内置钢板是轴体固定需要也是机械键盘的标志,钢板除了可以带来极其稳定的固定效果也成就了机械键盘扎实的手感,同时是机械键盘分量感的主要来源,给人一种结实感,这是薄膜键帽所不具备的。▲外置钢板在悬浮式结构的键盘上比较常见&a…

用于字符串和数组的5种简单有效的Java技术

Java通常会排在前五种最受欢迎​​的编程语言之内,这可以理解。 它是一种通用语言,非常容易学习,因为它是一种高级语言,并且可以满足许多用例。 由于这些原因,Java是一门伟大的语言,可以用来学习您是否有经…

基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)

内容介绍原文档由会员 bshhty 发布Cbuilder课程设计( 人事信息管理系统 )12页 7000余字资料包含:完整课程设计报告,源代码等相关设计资料。本课程设计为RAR个文件。目录一、设计任务与要求………………………………………………31.设计内容……………………

adb 切换默认桌面_公告 | 武林外传手游官方服务器全面开放桌面版体验

为了更好的优化玩家游戏体验,应广大客官要求,《武林外传手游》全新桌面版今日上线,iOS及安卓服务器均可在电脑上畅玩《武林外传手游》啦!大屏画面更加细腻绚丽,预设键位助你畅游江湖,欢迎广大玩家下载体验&…

计算机网络作业答案吴,中国大学《2020春季课程-计算机网络应用吴迪》答案全部2020高校邦《羽毛球》作业题库答案...

参考答案如下中国处理肌肉拉伤的第一步是()。大学迪答天下观念的核心问题是如何构建和谐社会。春季天下观念的核心是什么?天下有始,课程库答以为天下母。既得其母,课程库答以知其子;既知其子,复守其母,没身…

java获取word书签表格数据_Python读取word文档里面的表格数据

更多精彩,请点击上方蓝字关注我们!我们常见的办公数据通常可以分为结构化数据与非结构化数据,比如常见的word, ppt, excel。前两者存储的是非结构化数据,excel存储的是结构化数据。从事数据统计或分析的工作或多或少都会从excel获…

函数指针使用场景和选择_在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体...

函数指针使用场景和选择N 1问题是使用ORM解决方案时的常见问题。 当您将某些OneToMany关系的fetchType设置为lazy时,就会发生这种情况,以便仅在访问Set / List时才加载子实体。 假设我们有一个具有两个关系的Customer实体:每个客户的一组订单…

东师计算机应用基础在线作业,东师《计算机应用基础》15春在线作业1答案

《计算机应用基础》15 春在线作业 1 单选题 多选题 判断题一、单选题(共 25 道试题,共 62.5 分。 )1. 21、 1946 年 2 月,在美国诞生了世界上第一台计算机,它的名字叫:A. EDVACB. EDSACC. ENIACD. UNIVAC-1----------------选择:C…

abb智能控制系统_ABB助力国网冀北电力打造虚拟电厂

近日,ABB为国网冀北电力有限公司定制了智能配电计量与协调控制解决方案,对其虚拟电厂进行远程电能管理,实现高峰调节和负载转移,提高电力系统效率,保持供电稳定性。虚拟电厂是通过分布式电力管理系统将电网中发电端(尤…

通过通用数据访问扩展AWS生态系统

Amazon Web Services(AWS)可帮助组织托管和管理其数据流程,例如构建数据可视化和执行ETL任务。 在CData,我们可以轻松地将AWS Services与异构业务应用程序和分布式数据存储连接起来,以最终帮助企业对其数据进行更全面的…

android官方文档中文版_Now in Android:01 - 如何掌握最新的 Android 技术?

每隔几天我都会通过 Android Developers 的油管官方频道,来了解一下最近 Android 发布了哪些有趣的新技术,最近发现官方推出了一个新的系列视频叫做:Now in Android,目前更新了 4 期,我觉得这个系列蛮有趣的&#xff0…