狂神说 javaweb 18集:jsp原理剖析

18.jsp原理剖析

思考:jsp跟servlet的关系

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目录

在这里插入图片描述

 

我电脑的地址:

C:\Users\Administrator.IntelliJIdea2018.1\system\tomcat\Unnamed_javaweb-session-cookie\work\Catalina\localhost\ROOT\org\apache\jsp

发现页面转变成了Java程序!

在这里插入图片描述

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

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

JSP本质上就是一个Servlet

 //初始化 
 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 {
 

1.判断请求

2.内置了一些对象

 final javax.servlet.jsp.PageContext pageContext;  //页面上下文
 javax.servlet.http.HttpSession session = null;   //Session
 final javax.servlet.ServletContext application;  //application
 final javax.servlet.ServletConfig 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页面中直接使用!

 

在这里插入图片描述

在JSP页面中;

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

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

 out.write("<html>\r\n");
 
posted @   坚持做  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示