javaweb-18:JSP原理剖析

8、JSP

8.1、什么是JSP

Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态web技术

最大的特点:

  • 写JSP就像在写HTML
  • 区别:
    • HTML只给用户提供静态的数据
    • JSP页面中可以嵌入Java代码,为用户提供动态数据

8.2、JSP原理

思路:JSP到底怎么执行的?

  • 代码层面没有任何问题

  • 服务器内部工作

    tomcat中有一个work目录

    idea中使用tomcat的会在idea的tomcat中生成一个work目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aoObK2sN-1633999793492)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-18:JSP原理剖析.assets\image-20211012081543378.png)]

    我电脑的地址:

    C:\Users\Administrator\.IntelliJIdea2019.2\system\tomcat\Unnamed_servlet-study\work\Catalina\localhost\servlet02_war\org\apache\jsp
    

    发现页面转变成了Java程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyrfYWsi-1633999793495)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-18:JSP原理剖析.assets\image-20211012081746714.png)]

浏览器向服务器发送请求,不管访问什么资源, 其实都是在访问Servlet

JSP最终也会被转换成为一个Java类

JSP本质上就是一个Servlet【分析work目录下的源码】

//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(HttpServletRequest request, HttpServletResponse response)
 

1.判断请求

2.内置一些对象

final javax.servlet.jsp.PageContext pageContext;//页面上下文
javax.servlet.http.HttpSession session = null;//session
final javax.servlet.ServletContext application;//applicationContext
final javax.servlet.ServletConfig config;//config
javax.servlet.jsp.JspWriter out = null;//out
final java.lang.Object page = this;//page:当前页

HttpServletRequest request;//请求
HttpServletResponse response;//响应

3.输出页面前增加的代码

response.setContentType("text/html");//设置响应的页面类型
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;


4.以上的这些个对象,我们可以在JSP页面中直接使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCpVtYmR-1633999793497)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-18:JSP原理剖析.assets\image-20211012084233819.png)]

在JSP页面中:

只要是Java代码就会原封不动的输出

如果是HTML代码,就会被转换为:

out.write("<html>\n");

这样的格式,输出到前端【这里的页面是渲染出来的】

彩蛋

1.带着疑问去学习【效率很高】

2.现有servlet,然后有jsp

jsp没出来之前,在servlet中拼接html代码,很是痛苦

3.idea手工加入jar包源码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WtDDbbCz-1633999793501)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-18:JSP原理剖析.assets\image-20211012084928113.png)]

4.idea手工导入tomcat下的lib目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pl2TMCz5-1633999793503)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-18:JSP原理剖析.assets\image-20211012084848435.png)]

1)导包的方式很多

5.每次部署tomcat应用的时候,work目录会被清空,类似于maven的clean操作

6.jsp可以直接嵌入java代码,之所以能直接用session等变量,是因为jsp在渲染为servlet的时候,系统自动帮我们做的一些内置变量

7.jsp不是一个新东西,是基于servlet的现有问题,别人帮我们做了一层封装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值