JSP学习笔记

1.JSP是什么?

JSP技术是servlet的一个改进,将java代码和html代码的分离简化了编程的复杂度,jsp其实也是一个servlet。

2.JSP执行过程

JSP发起请求 → action接收请求 → service层执行相关业务逻辑代码返回结果 →  action通过javabean传递变量给jsp → jsp通过jsp引擎编译成servlet源码 → servlet源码编译成class文件 → 执行class文件并响应

以下内容引用http://blog.sina.com.cn/s/blog_4e57731f0100b1k6.html中的分析:

注意该Servlet的url-pattern为“*.jsp”及所有后缀为“.jsp”等请求将会访问该Servlet,例如:在浏览器地址栏输入“.../应用名/test.jsp”将访问该Servlet。

可以做一个小的实验,在conf/web.xml中替换JspServlet对应的url-pattern(例如:改成hey),重启Tomcat服务器,访问内容如下所示的hello.jsp(地址为".../应用名/hello.jsp") 
    <html>

     <head>
       <title>hello.jsp</title>
       </head>

      <body>
      <%
       for (int i = 0; i <= 100; i++) {
          out.println("helloworld");
       }
      %>
      </body>
    </html>

   通过在浏览器中"单击右键->查看源文件"的方式可以看到浏览器你收到的内容为:
     <html>

       <head>
         <title>hello.jsp</title>
       </head>

       <body>
       <%
       for (int i = 0; i <= 100; i++) {
          out.println("helloworld");
       }
       %>
      </body>
    </html>

   可见该jsp并没有被解析,而是以静态文本的方式原样输出。

   在Tomcat安装目录下的\work\Catalina下可以找到JSP经过“翻译”后的Java源文件和编译后类文件,对于上面hello.jsp而言,“翻译”后的Servlet源文件为:\work\Catalina\localhost\tst\org\apache\jsp\hello_jsp.java

该文件的主要内容如下:

package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  ... ... ...

  public void _jspService

           (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;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;


    try {

      ... ... ...
      out.write("<html>\r\n");
      out.write("\t<head>\r\n");
      out.write("\t\t<title>hello.jsp</title>\r\n");
      out.write("\t</head>\r\n");
      out.write("\r\n");
      out.write("\t<body>\r\n");
      out.write("\t\t");

  

    for (int i = 0; i <= 100; i++) {
        out.println("helloworld");
     }
  
      out.write("\r\n");
      out.write("\t</body>\r\n");
      out.write("</html>");

      ... ... ...
    }
}

   可以看出hell.jsp经过“翻译”后的类名为hello_jsp 该类继承了org.apache.jasper.runtime.HttpJspBase类,而HttpJspBase类又是HttpServlet的子类。HttpJspBase在其service方法中调用了_jspService方法,针对特定的jsp页面,Tomcat的JSP引擎将其“翻译”成HttpJspBase的子类并重写其_jspService方法。该类的很多初始化内容有JSP引擎完成。

   在上面的_jspService方法中可以看到hello.jsp的“影子”,在JSP中使用<%...%>所书写的Java代码被原样的置于_jspService方法中;另外在JSP中的HTML脚本通过流对象out原样输出...当然,JSP的“翻译”不可能如此简单,因为JSP页面还可能写有指令、标签等复杂的结构。

   从上面的_jspService方法还可以看出,所谓JSP内建对象(request、reponse、application、session等)其实并不神秘,它们或是_jspService方法的参数变量,或是由JSP引擎在_jspService方法中预先定义好的变量,我们在JSP的<%...%>中可以直接使用。

3.JSP的内建对象:

所谓内建对象就是不需要我们创建,他们由容器创建和实现。

Request request 表示HttpServletRequest 对象。取客户端表单域信息及cookie,header, 和session

Response response 表示HttpServletResponse 对象,对客户端的响应返回文本、写cookies。

Out out 向客户端打印html 文本.

PageContext 当前jsp 页面的上下文环境,可以得到session、request、application等内置对象,在自定义标签中使用的很多。

Session session 表示一个请求的javax.servlet.http.HttpSession 对象。Session 一个用户多个页面共享同一变量。

Application applicaton 表示一个javax.servle.ServletContext 对象。存放容器级的变量。

Config config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet实例的初始化参数。

Page page 表示从该页面产生的一个servlet 实例.

Exception 异常,当iserrorpage=true.

9个内建对象对应全部方法参考这篇文章:https://blog.csdn.net/sweetsoft/article/details/782939

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值