分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

jsp本质

发布时间:2023-09-06 02:33责任编辑:傅花花关键词:jsjsp

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的实际执行函数。

jsp本质

原文地址:https://www.cnblogs.com/minconding/p/10430195.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved