当前位置 : 主页 > 编程语言 > java >

jsp本质

来源:互联网 收集:自由互联 发布时间:2021-06-25
jsp本质:在访问时会被转换为java的类。 1 /* 2 * Generated by the Jasper component of Apache Tomcat 3 * Version: Apache Tomcat/7.0.92 4 * Generated at: 2019-02-25 03:41:55 UTC 5 * Note: The last modified time of this file was s

jsp本质:在访问时会被转换为java的类。

  1 /*
  2  * Generated by the Jasper component of Apache Tomcat
  3  * Version: Apache Tomcat/7.0.92
  4  * Generated at: 2019-02-25 03:41:55 UTC
  5  * Note: The last modified time of this file was set to
  6  *       the last modified time of the source file after
  7  *       generation to assist with modification tracking.
  8  */
  9 package org.apache.jsp;
 10 
 11 import javax.servlet.*;
 12 import javax.servlet.http.*;
 13 import javax.servlet.jsp.*;
 14 
 15 public final class page_jsp extends org.apache.jasper.runtime.HttpJspBase
 16     implements org.apache.jasper.runtime.JspSourceDependent {
 17 
 18 
 19     String str="全局变量";
 20 
 21 
 22     public void func1(){
 23     System.out.println("全局方法");
 24 }
 25 
 26 
 27     class C{
 28         private int a;
 29         public void f(){
 30             System.out.println("全局类");
 31         }
 32 }
 33 
 34   private static final javax.servlet.jsp.JspFactory _jspxFactory =
 35           javax.servlet.jsp.JspFactory.getDefaultFactory();
 36 
 37   private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
 38 
 39   private volatile javax.el.ExpressionFactory _el_expressionfactory;
 40   private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
 41 
 42   public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
 43     return _jspx_dependants;
 44   }
 45 
 46   public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
 47     if (_el_expressionfactory == null) {
 48       synchronized (this) {
 49         if (_el_expressionfactory == null) {
 50           _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
 51         }
 52       }
 53     }
 54     return _el_expressionfactory;
 55   }
 56 
 57   public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
 58     if (_jsp_instancemanager == null) {
 59       synchronized (this) {
 60         if (_jsp_instancemanager == null) {
 61           _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
 62         }
 63       }
 64     }
 65     return _jsp_instancemanager;
 66   }
 67 
 68   public void _jspInit() {
 69   }
 70 
 71   public void _jspDestroy() {
 72   }
 73 
 74   public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
 75         throws java.io.IOException, javax.servlet.ServletException {
 76 
 77     final javax.servlet.jsp.PageContext pageContext;
 78     javax.servlet.http.HttpSession session = null;
 79     final javax.servlet.ServletContext application;
 80     final javax.servlet.ServletConfig config;
 81     javax.servlet.jsp.JspWriter out = null;
 82     final java.lang.Object page = this;
 83     javax.servlet.jsp.JspWriter _jspx_out = null;
 84     javax.servlet.jsp.PageContext _jspx_page_context = null;
 85 
 86 
 87     try {
 88       response.setContentType("text/html; charset=utf-8");
 89       pageContext = _jspxFactory.getPageContext(this, request, response,
 90                   null, true, 8192, true);
 91       _jspx_page_context = pageContext;
 92       application = pageContext.getServletContext();
 93       config = pageContext.getServletConfig();
 94       session = pageContext.getSession();
 95       out = pageContext.getOut();
 96       _jspx_out = out;
 97 
 98       out.write("\r\n");
 99       out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
100       out.write("<html>\r\n");
101       out.write("<head>\r\n");
102       out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n");
103       out.write(‘\r‘);
104       out.write(‘\n‘);
105       out.write(‘\r‘);
106       out.write(‘\n‘);
107       out.write(‘\r‘);
108       out.write(‘\n‘);
109 
110     int a=1234;
111     String b="java";
112     out.println(a+b+"局部变量");
113 
114       out.write("\r\n");
115       out.write("<title>Insert title here</title>\r\n");
116       out.write("</head>\r\n");
117       out.write("<body>\r\n");
118       out.print(b );
119       out.write("\r\n");
120       out.write("</body>\r\n");
121       out.write("</html>");
122     } catch (java.lang.Throwable t) {
123       if (!(t instanceof javax.servlet.jsp.SkipPageException)){
124         out = _jspx_out;
125         if (out != null && out.getBufferSize() != 0)
126           try {
127             if (response.isCommitted()) {
128               out.flush();
129             } else {
130               out.clearBuffer();
131             }
132           } catch (java.io.IOException e) {}
133         if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
134         else throw new ServletException(t);
135       }
136     } finally {
137       _jspxFactory.releasePageContext(_jspx_page_context);
138     }
139   }
140 }

15 public final class page_jsp extends org.apache.jasper.runtime.HttpJspBase
可以知道,将jsp页面转换为了一个类继承自org.apache.jasper.runtime.HttpJspBase
在jsp中定义的全局变量、全局方法、类等都是实际在该类中定义。
74   public void _jspService(知道,静态代码部分实际会在该函数以java的方式输出。jsp中定义的局部变量会被定义在这里。该函数就是jsp的实际执行函数。
网友评论