一、什么是JSP?

  JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
  JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。

二、JSP原理

2.1、Web服务器是如何调用并执行一个jsp页面的?

  浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,首先把jsp翻译成一个Servlet,所以我们访问jsp时,其实不是在访问jsp,而是在访问jsp翻译过后的那个Servlet,例如下面的代码:

index.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%
3 String path = request.getContextPath();
4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
5 %>
6
7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
8 <html>
9 <head>
10 <base href="<%=basePath%>">
11
12 <title>First Jsp</title>
13
14 </head>
15
16 <body>
17 <%
18 out.print("Hello Jsp");
19 %>
20 </body>
21 </html>

  当我们通过浏览器访问index.jsp时,服务器首先将index.jsp翻译成一个index_jsp.class,在Tomcat服务器的work\Catalina\localhost\项目名\org\apache\jsp目录下可以看到index_jsp.class的源代码文件index_jsp.java,index_jsp.java的代码如下:

 1 package org.apache.jsp;
2
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 import javax.servlet.jsp.*;
6 import java.util.*;
7
8 public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
9 implements org.apache.jasper.runtime.JspSourceDependent {
10
11 private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
12
13 private static java.util.List _jspx_dependants;
14
15 private javax.el.ExpressionFactory _el_expressionfactory;
16 private org.apache.AnnotationProcessor _jsp_annotationprocessor;
17
18 public Object getDependants() {
19 return _jspx_dependants;
20 }
21
22 public void _jspInit() {
23 _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
24 _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
25 }
26
27 public void _jspDestroy() {
28 }
29
30 public void _jspService(HttpServletRequest request, HttpServletResponse response)
31 throws java.io.IOException, ServletException {
32
33 PageContext pageContext = null;
34 HttpSession session = null;
35 ServletContext application = null;
36 ServletConfig config = null;
37 JspWriter out = null;
38 Object page = this;
39 JspWriter _jspx_out = null;
40 PageContext _jspx_page_context = null;
41
42
43 try {
44 response.setContentType("text/html;charset=UTF-8");
45 pageContext = _jspxFactory.getPageContext(this, request, response,
46 null, true, 8192, true);
47 _jspx_page_context = pageContext;
48 application = pageContext.getServletContext();
49 config = pageContext.getServletConfig();
50 session = pageContext.getSession();
51 out = pageContext.getOut();
52 _jspx_out = out;
53
54 out.write('\r');
55 out.write('\n');
56
57 String path = request.getContextPath();
58 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
59
60 out.write("\r\n");
61 out.write("\r\n");
62 out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
63 out.write("<html>\r\n");
64 out.write(" <head>\r\n");
65 out.write(" <base href=\"");
66 out.print(basePath);
67 out.write("\">\r\n");
68 out.write(" \r\n");
69 out.write(" <title>First Jsp</title>\r\n");
70 out.write("\t\r\n");
71 out.write(" </head>\r\n");
72 out.write(" \r\n");
73 out.write(" <body>\r\n");
74 out.write(" ");
75
76 out.print("Hello Jsp");
77
78 out.write("\r\n");
79 out.write(" </body>\r\n");
80 out.write("</html>\r\n");
81 } catch (Throwable t) {
82 if (!(t instanceof SkipPageException)){
83 out = _jspx_out;
84 if (out != null && out.getBufferSize() != 0)
85 try { out.clearBuffer(); } catch (java.io.IOException e) {}
86 if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
87 }
88 } finally {
89 _jspxFactory.releasePageContext(_jspx_page_context);
90 }
91 }
92 }

  我们可以看到,index_jsp这个类是继承 org.apache.jasper.runtime.HttpJspBase这个类的,通过查看Tomcat服务器的源代码,可以知道在apache-tomcat-6.0.20-src\java\org\apache\jasper\runtime目录下存HttpJspBase这个类的源代码文件,如下图所示:

  

我们可以看看HttpJsBase这个类的源代码,如下所示:

 1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.jasper.runtime;
19
20 import java.io.IOException;
21
22 import javax.servlet.ServletConfig;
23 import javax.servlet.ServletException;
24 import javax.servlet.http.HttpServlet;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27 import javax.servlet.jsp.HttpJspPage;
28 import javax.servlet.jsp.JspFactory;
29
30 import org.apache.jasper.compiler.Localizer;
31
32 /**
33 * This is the super class of all JSP-generated servlets.
34 *
35 * @author Anil K. Vijendran
36 */
37 public abstract class HttpJspBase
38 extends HttpServlet
39 implements HttpJspPage
40
41
42 {
43
44 protected HttpJspBase() {
45 }
46
47 public final void init(ServletConfig config)
48 throws ServletException
49 {
50 super.init(config);
51 jspInit();
52 _jspInit();
53 }
54
55 public String getServletInfo() {
56 return Localizer.getMessage("jsp.engine.info");
57 }
58
59 public final void destroy() {
60 jspDestroy();
61 _jspDestroy();
62 }
63
64 /**
65 * Entry point into service.
66 */
67 public final void service(HttpServletRequest request, HttpServletResponse response)
68 throws ServletException, IOException
69 {
70 _jspService(request, response);
71 }
72
73 public void jspInit() {
74 }
75
76 public void _jspInit() {
77 }
78
79 public void jspDestroy() {
80 }
81
82 protected void _jspDestroy() {
83 }
84
85 public abstract void _jspService(HttpServletRequest request,
86 HttpServletResponse response)
87 throws ServletException, IOException;
88 }

  HttpJspBase类是继承HttpServlet的,所以HttpJspBase类是一个Servlet,而index_jsp又是继承HttpJspBase类的,所以index_jsp类也是一个Servlet,所以当浏览器访问服务器上的index.jsp页面时,其实就是在访问index_jsp这个Servlet,index_jsp这个Servlet使用_jspService这个方法处理请求。

2.2、Jsp页面中的html排版标签是如何被发送到客户端的?

浏览器接收到的这些数据

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <base href="http://localhost:8080/JavaWeb_Jsp_Study_20140603/">
5
6 <title>First Jsp</title>
7
8 </head>
9
10 <body>
11 Hello Jsp
12 </body>
13 </html>

都是在_jspService方法中使用如下的代码输出给浏览器的:

 1 out.write('\r');
2 out.write('\n');
3
4 String path = request.getContextPath();
5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
6
7 out.write("\r\n");
8 out.write("\r\n");
9 out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
10 out.write("<html>\r\n");
11 out.write(" <head>\r\n");
12 out.write(" <base href=\"");
13 out.print(basePath);
14 out.write("\">\r\n");
15 out.write(" \r\n");
16 out.write(" <title>First Jsp</title>\r\n");
17 out.write("\t\r\n");
18 out.write(" </head>\r\n");
19 out.write(" \r\n");
20 out.write(" <body>\r\n");
21 out.write(" ");
22
23 out.print("Hello Jsp");
24
25 out.write("\r\n");
26 out.write(" </body>\r\n");
27 out.write("</html>\r\n");

  在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代码。

2.3、Jsp页面中的java代码服务器是如何执行的?

  在jsp中编写的java代码会被翻译到_jspService方法中去,当执行_jspService方法处理请求时,就会执行在jsp编写的java代码了,所以Jsp页面中的java代码服务器是通过调用_jspService方法处理请求时执行的。

2.4、Web服务器在调用jsp时,会给jsp提供一些什么java对象?

  查看_jspService方法可以看到,Web服务器在调用jsp时,会给Jsp提供如下的8个java对象

1 PageContext pageContext;
2 HttpSession session;
3 ServletContext application;
4 ServletConfig config;
5 JspWriter out;
6 Object page = this;
7 HttpServletRequest request,
8 HttpServletResponse response

  其中page对象,request和response已经完成了实例化,而其它5个没有实例化的对象通过下面的方式实例化

1 pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);
2 application = pageContext.getServletContext();
3 config = pageContext.getServletConfig();
4 session = pageContext.getSession();
5 out = pageContext.getOut();

这8个java对象在Jsp页面中是可以直接使用的,如下所示:

 1 <%
2 session.setAttribute("name", "session对象");//使用session对象,设置session对象的属性
3 out.print(session.getAttribute("name")+"<br/>");//获取session对象的属性
4 pageContext.setAttribute("name", "pageContext对象");//使用pageContext对象,设置pageContext对象的属性
5 out.print(pageContext.getAttribute("name")+"<br/>");//获取pageContext对象的属性
6 application.setAttribute("name", "application对象");//使用application对象,设置application对象的属性
7 out.print(application.getAttribute("name")+"<br/>");//获取application对象的属性
8 out.print("Hello Jsp"+"<br/>");//使用out对象
9 out.print("服务器调用index.jsp页面时翻译成的类的名字是:"+page.getClass()+"<br/>");//使用page对象
10 out.print("处理请求的Servlet的名字是:"+config.getServletName()+"<br/>");//使用config对象
11 out.print(response.getContentType()+"<br/>");//使用response对象
12 out.print(request.getContextPath()+"<br/>");//使用request对象
13 %>

运行结果如下:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2IAAAFQCAIAAABS4FpKAAAgAElEQVR4nOzdeZwb9Z0n/NLua/94dl77zO4zs7Pz7JKEcBsIMCFDBhISbxiw8W237RjCME8ODJkwkwEMtA04xjc4JjhAxs1hd2O3u9vudrda6m51676lUukulY5SXaoqSaX7arX6kP38UaWru31AmCyTkV7vl16lX/2qSi2/JH38/dVPBXSdGTz2/ievH/r1P738+t/99Lkbblpxw8133nDznV+55a6v3HLXV2658yu33PmVm++8YRkrbrh5xQ03rfhfN60Qlm9e0dzhq7fc9dVb7/rqrXd97bZvXMvdX7v17q/eejffvwnfePfXbrtb6NZi8X5uvP0bN95+T6trHvozuPH2e2680vP/4o6y3M6X/3uFp/QFu7dmmbVf593Bu/emO+69acW9N6249+YV9918530333nfLXf+1S13/tUtdwluveubfxjCce/8q5tX3LfUTfxTbWtra2tra7uqnTt3dnZ2vvPOOx9//HF/fz/w9nsfd+47+osXd99w84qbb7/7vZOn8tNz+fIVTC8yW5drkl/GXGF5s3VCz9Kym1/T8vtf9ql+BqVFz6f1Ty59Tln+vtisskhmWYVKptC6IJhtKMymC7PpQuVKUl+02p5n042nMZcpzWVKc9kvTuZa0m1tbW3/dlzzM+1fW3Z6/vPJXUV5sfxnUaibubqFRYqt5uarP/7pMwtf9O299z/4Ynf4L//0xT/Jz3370apH5haq//Jxz2133XvTHfc8//zzR44cOXnyJLDnwLF/eKHzz/7if/7uo24qUTQHuCkXO+WKyt0xuTs2xXNFW7FTLnbKyU46mSkHM+lkJh30pIOecjBTDmbKychdrMLFKlxRhTum9MRUdd7FlN6Y0htVeqNKT1ThZhVuRl6jcLMKN6twRxUeVuGJKj0xnqJFtGWVN67wxpVNFN54c395nbsuKndH5a5mrJz/AxsW/fnRSSdbJ3MwMgczIWB543ambszOSCFaCtESGy210RIbLbHRo7YIT2yLiMGGYQvV7KKAHDKTQ2Zy0EQOmshBMzloIi/wzBS/cN5EnTdSA0ZqwEj2G8h+A9nH05Pn9ESvTnBWi5/V4me0+BkNflZLnKnTCAufaolPNcQZDfGphvhUg/eo8e46FdajwrpVWLcS61FhPSqs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" alt="" />

2.5、Jsp最佳实践

  Jsp最佳实践就是jsp技术在开发中该怎么去用。

  不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。

2.6、Tomcat服务器的执行流程

  

第一次执行:

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

第二次执行:

  1. 因为已经存在了*.class文件,所以不在需要转换和编译的过程

修改后执行:

1.源文件已经被修改过了,所以需要重新转换,重新编译。

javaweb(十四)——JSP原理的更多相关文章

  1. javaweb学习总结(十四)——JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  2. javaweb学习总结(十四)——JSP原理(转)

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  3. java web学习总结(十四) -------------------JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  4. JavaWeb---总结(十四)JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  5. javaweb学习总结(二十四)——jsp传统标签开发

    一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...

  6. JavaWeb学习 (十四)————JSP基础语法

    一.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素.  JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. 二.JSP表达式 JSP脚本表达式(expression)用于将 ...

  7. javaweb(二十四)——jsp传统标签开发

    一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...

  8. selenium-webdriver(python) (十四) -- webdriver原理

    之前看乙醇视频中提到,selenium 的ruby 实现有一个小后门,在代码中加上$DEBUG=1 ,再运行脚本的过程中,就可以看到客户端请求的信息与服务器端返回的数据:觉得这个功能很强大,可以帮助理 ...

  9. JavaWeb总结(四)—JSP深入解析

    一.JSP域对象 1.JSP属性范围(域对象范围) JSP提供了四个域对象,分别是pageContext.request.session.application. pageContext: 属性范围仅 ...

随机推荐

  1. 【bbs】index、post

    列表 奇数行和偶数行设置不同的背景 http://blog.csdn.net/facecrazy/article/details/51252850 实现ul li中的内容上下左右居中,不用设置li宽度 ...

  2. 【CSS3】自定义滚动条样式 -webkit-scrollbar

    好文推荐:http://m.blog.csdn.net/article/details?id=40398177 http://www.xuanfengge.com/css3-webkit-scroll ...

  3. classlist和array.prototype.slice.call

    1.classlist document.getElementById("myDIV").classList.add("mystyle"); classList ...

  4. 【金融123】CNY和CNH的差异和关联

    https://www.sohu.com/a/117406459_473263 离岸人民币(CNH)与在岸人民币(CNY) 差异:   CNY CNH 法律监管限制 在岸人民币受大陆市场的管制,外汇和 ...

  5. 《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击

    三.网络服务渗透攻击 3.1 内存攻防技术      3.1.1 缓冲区溢出漏洞机理              缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为.           ...

  6. List泛型的应用

    在我看一个源程序的时候看到这个例子使用了IList<T>返回类型,因为上午刚刚总结过List<T>的详细用法,突然出现了IList<T>,感觉很奇怪,于是上网搜集了 ...

  7. HDU 1711 Number Sequence (KMP简单题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. Xcode 5.1安装插件:规范凝视生成器VVDocumenter

    类似java的多行凝视! 安装过程: 1.前往GitHub下载project文件:VVDocumenter-Xcode 2.用Xcode打开project,Command + B Build成功后,能 ...

  9. TXT文件转换成DataSet数据集

    /// <summary> /// TXT文件转换成DataSet数据集 /// </summary> /// <param name="FilePath&qu ...

  10. pThread多线程demo

    #import "ViewController.h" #import <pthread.h> @interface ViewController () @end @im ...