JSP

什么是JSP

jsp和servlet一样是sun公司定义的一种用于开发动态web资源的技术。
写jsp和写html很像,但是html只能提供静态数据,而jsp可以内嵌java代码,为用户提供动态数据

JSP运行原理

浏览器向服务器发送请求,其实不过访问什么资源都是在访问servlet。当服务器执行jsp时,会把jsp翻译成servlet,所以当访问一个jsp页面时,其实是在访问servlet。

新建一个web project 然后部署到tomcat上,然后访问index.jsp会发现在tomcat的work\Catalina\localhost\Web_1.2\org\apache\jsp 目录下会出现

这里写图片描述

点击打开index_jsp.java可以知道


public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase

接着查看tomcat的源码或者反编译tomcat的lib下的jasper.jar可以知道


public abstract class HttpJspBase extends HttpServlet

所以jsp就是一个servlet

翻译后的_jspService方法

在jsp中编写的java代码和html代码都会被翻译到_jspService方法中去,在jsp中编写的java代码会原封不动地翻译成java代码,如<%out.print("Hello Jsp");%>直接翻译成out.print(“Hello Jsp”);而html代码则会翻译成使用out.write("<html标签>\r\n");的形式输出到浏览器。在jsp页面中编写的html排版标签都是以out.write("<html标签>\r\n");的形式输出到浏览器,浏览器拿到html代码后才能够解析执行html代码。

服务器给_jspService提供8个java对象

PageContext pageContext;
HttpSession session;
ServletContext application;
ServletConfig config;
JspWriter out;
Object page = this;
HttpServletRequest request, 
HttpServletResponse response

这8个对象属于jsp的9个内置对象(还有一个exception),在jsp中可以用java代码直接使用

Tomcat服务器执行流程

  • 第一次执行:
    1客户端通过电脑连接服务器,因为是请求是动态的,所以所有的请求交给WEB容器来处理
    2在容器中找到需要执行的*.jsp文件
    3之后.jsp文件通过转换变为.java文件
    4*.java文件经过编译后,形成*.class文件
    5最终服务器要执行形成的*.class文件

  • 第二次执行:
    因为已经存在了*.class文件,所以不在需要转换和编译的过程
    修改后执行:
    源文件已经被修改过了,所以需要重新转换,重新编译。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值