标题:[分享]JSP页面翻译原理
取消只看楼主
xiuyuan123
Rank: 2
等 级:新手上路
威 望:3
帖 子:140
专家分:0
注 册:2006-4-25
 问题点数:0 回复次数:0 
[分享]JSP页面翻译原理

每一个JSP页面都会被Web容器编译成一个Java类,供web容器调用,并且生成HTML叶面回馈给用户。而了解其中的变异方法和规则,对我们学习JSP是非常有好处的,可以说学习好了这个编译原理,就已经学习好了大部分的JSP知识,剩下的工作就只剩下熟记一些tablib和反复应用以使自己更加熟练而已了。。


先来看一下JSP页面所对应的Class的基本结构。每一个JSP页面都会被编译成成如下的格式样子,先给一个大致的印象,详细的说明在后面。

public class My$jsp extends HttpJspBase { static {} public date$jsp() {} private static boolean _jspx_inited = false; public final void _jspx_init() throws org.apache.jasper.runtime.JspException {}; public void _JSP pageservice(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; String _value = null; try { if (_jspx_inited == false) { synchronized (this) { if (_jspx_inited == false) { _jspx_init(); _jspx_inited = true; } } } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO-8859-1"); pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); // HTML // begin [file="/date.jsp";from=(0,0);to=(7,6)] out.write("\r\n\r\n\r\n" + "\r\n\r\n\r\n" + "The date is\r\n"); // end // begin [file="/date.jsp";from=(7,8);to=(7,57)] out.println((new java.util.Date()).toString()); // end // HTML // begin [file="/date.jsp";from=(7,59);to=(10,7)] out.write("\r\n \r\n \r\n"); // end } catch (Throwable t) { if (out != null && out.getBufferSize() != 0) { out.clearBuffer(); } if (pageContext != null) { pageContext.handlePageException(t); } } finally { if (_jspxFactory != null) { _jspxFactory.releasePageContext(pageContext); } } } }

搜索更多相关主题的帖子: JSP 原理 页面 翻译 分享 
2006-10-26 11:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-98867-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.358648 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved