how2j.cn


工具版本兼容问题
为什么JSP可以在html中运行java代码? 这是因为JSP被转译成了Servlet


步骤 1 : 执行过程   
步骤 2 : hello_jsp.java 为什么是Servlet   

1. 把 hello.jsp转译为hello_jsp.java
2. hello_jsp.java 位于
d:\tomcat\work\Catalina\localhost\_\org\apache\jsp
3. hello_jsp.java是一个servlet
4. 把hello_jsp.java 编译为hello_jsp.class
5. 执行hello_jsp,生成html
6. 通过http协议把html 响应返回给浏览器
执行过程
步骤 2 :

hello_jsp.java 为什么是Servlet

edit
Servlet章节中,我们说HelloServlet是一个Servlet,不是因为它的类名里有一个"Servlet",而是因为它继承了 HttpServlet

打开转译hello.jsp 后得到的hello_jsp.java,可以发现它继承了类
(D:\tomcat\work\Catalina\localhost\_\org\apache\jsp\hello_jsp.java)

org.apache.jasper.runtime.HttpJspBase

而HttpJspBase 继承了HttpServlet

所以我们说hello_.jsp.java 是一个Servlet
/* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat/7.0.64 * Generated at: 2017-01-07 01:45:17 UTC * Note: The last modified time of this file was set to * the last modified time of the source file after * generation to assist with modification tracking. */ package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.util.*; public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static final javax.servlet.jsp.JspFactory _jspxFactory = javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() { return _jspx_dependants; } public void _jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); } public void _jspDestroy() { } public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null; try { response.setContentType("text/html; charset=UTF-8"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write("\r\n"); out.write(" \r\n"); out.write("你好 JSP\r\n"); out.write(" \r\n"); out.write("<br>\r\n"); out.write(" \r\n"); out.print(new Date().toLocaleString()); } catch (java.lang.Throwable t) { if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) try { if (response.isCommitted()) { out.flush(); } else { out.clearBuffer(); } } catch (java.io.IOException e) {} if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); else throw new ServletException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-11-13 我在自己部署的tomcat下的路径没有找到hello_jsp.java文件呀,路径文件都不存在
大汗水

关于 J2EE-JSP-执行过程 的提问
那位大哥解释一下




1 个答案

四叶猫
答案时间:2019-12-26
你的项目是dynamic web吧,站长的例子是普通的java项目,所以路径可能不太一样。 给你参考一下我的路径:项目\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\j2eeCRUD\org\apache\jsp



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-10-29 哇哇哇,找到了!!
Bigone




哇。。站长找到了,搜索了一下,在C盘的IDEA的系统配置文件里面tomcat里面。。。这样的话,以后会占用C盘的内存吧,我记得教程里说可以把IDEA配置文件装到D盘,那样的话有问题吗,就是会影响到之前做好的内容么?????还有我明明是在IDEA里配了下载的本地汤姆猫,为啥会跑到这个位置呢?
加载中

							

							


1 个答案

半见
答案时间:2018-08-10
推荐使用Everything软件进行文件查找 就不要一点点找了



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-10-29 站长,正常运行的IDEA,在哪里看转译之后的servlet?
2017-01-12 hello_jsp.class




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 J2EE-JSP-执行过程 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图