发布于2021-03-13 13:45 阅读(790) 评论(0) 点赞(23) 收藏(2)
前言:虽然就目前来看,JSP已是一种过时的技术,但是其设计思想有必要了解一下,毕竟曾经也有过辉煌阶段,那它也必然包含着精妙的设计思想,因此目前仍不妨碍我们秉持取其精华,去其糟粕的态度去学习其中的设计思想。(注:本文”服务器内部工作“这部分内容,学习自B站UP主:遇见狂神说,深有收获,于是写下本文,作为记录)
Java Server Pages:Java服务器端页面,与Servlet一样,用于动态Web技术方向,JSP可用于生成页面中的动态数据,实现动态页面。
可简单理解为HTML中嵌入Java代码与许多JSP标签库
Tomcat中有一个work目录
逐步进入work的子目录(接下来会发现,本地应用数据文件夹中的IDEA中配置了Tomcat服务器的项目,也会生成一个个这样的jsp文件夹,见下文)
之后去另一个目录(也就是IDEA的应用数据目录)下分析,IDEA中使用Tomcat的项目会在本地应用数据文件夹中生成一个包含在IDEA目录下的tomcat的数据文件
进入tomcat文件夹,这些都是临时的文件夹,每次重启配置了tomcat服务器的项目时,都会重新构建各自对应的文件夹,文件夹中的具体内容见下下图
tomcat就是这样被配置进IDEA中的
打开上图这个java文件,里面确实有jsp的应用
因此,浏览器向JavaWeb服务器端发送请求时,不管访问什么资源,其实都是在访问Servlet。(JSP最终也会转换为一个Java类)
接下来,再次分析tomcat的work目录下的子孙目录jsp中的java文件,index_jsp类继承自HttpJspBase
而HttpJspBase又继承自HttpServlet
因此,本质上,JSP就是一个Servlet,(后文会做进一步的推证)
index_jsp类中动态生成的HTML正好和我们webapp项目中index.jsp页面相同(我目前想不通这两个地方有什么联系,或者本来就仅仅相同而已)
index_jsp类中的三个方法:
初始化-------------------------------
public void _jspInit() {
}
销毁-------------------------------
public void _jspDestroy() {
}
JSPService-------------------------------
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
重点分析_jspService()方法
参数,请求和响应
方法体中,首先判断请求类型
内置对象
初始操作
编写hello.jsp做测试,
启动tomcat服务器,
未访问hello.jsp前,IDEA中的tomcat文件夹中,目前只有一个java文件
访问hello.jsp后
生成了hello.jsp对应的java文件
打开查看,与index_jsp.java文件内容结构相同
因此,本质上,JSP就是一个Servlet
或者说是,一个如下图结构的java文件
JSP原理图:
在JSP页面中,只要是Java代码,就会正常输出到xxx_jsp.java中,如果是HTML代码,就会先转换为out.write("<html>\r\n")这类格式
虽然Servlet和JSP都可以写Java代码,而且JSP本质是Servlet,但是为了易于维护和控制,Servlet专注于处理请求,以及控制视图跳转,JSP专注于显示数据。
Servlet+JSP协同实现JavaWeb应用,原理图:(该图:学习自B站UP主:遇见狂神说)
后来出现了MVC三层架构,更加合理清晰:
JSP已存在很多年,在JavaWeb服务器中无处不在(也许位置比较隐蔽,例如tomcat的work的子孙目录下就有相关文件),同时JSP也有很多缺陷,JSP最明显的问题在于它看起来很像HTML或XML,大多数JSP模板都是采用HTML的形式,但又掺杂了许多JSP标签库的标签,外加许多Java代码,使其非常混乱,因此,这就使我们难以维持一个格式良好的文档。
同时,JSP规范是与Servlet规范紧密耦合的,这意味着它只能用在基于Servlet的Web应用中,也不能用于非Servlet的应用中,JSP因此也不能作为通用模板。
但其设计思想有必要了解一下,毕竟曾经也有过辉煌阶段,那它也必然包含着精妙的设计思想,因此我们要取其精华,去其糟粕。
作者:天使的翅膀
链接:http://www.javaheidong.com/blog/article/114228/93d4f9f5da013b1fb500/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!