大家都知道,JSP在请求的时候,会先转化成Servlet(其实就是个java类),然后生成class文件,再提供服务。

那么生成的java、class文件在哪呢?Eclipse中根本找不到呀!

  首先应该了解的是Tomcat在Eclipse的映射关系,参考前一篇博文所述:Tomcat的服务器目录配置

  可以了解到,Tomcat在Eclipse中提供了三种位置配置选项:

  1 Use workspace metadata

  2 Use Tomcat installation

  3 Use custom location

  分别对应三种情况说一下,注意要把Server中发布的目录全部删除,然后clean后才能修改该配置项。

  如果你在Eclipse中双击Server配置选项,在Server Location中分别选了如下的选项:

  如果Server Locations选择了第一项Use workspace metadata

  选了上面这项,你的服务器目录和发布目录将会如下:

  服务器目录,即生成的字节码和java文件所在的目录。它在你的eclipse的工作目录中,比如我的工作目录是在F://workspace,那么在该目录下就可以看到这个.metadata目录了。

  参考上面的配置目录F:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0

  这就是Tomcat映射的目录,在这个目录中有一个work目录和一个wtpwebapps目录

  work目录中顺着:work\Catalina\localhost\项目名字\org\apache\jsp 就可以找到你的项目对应的java文件和class文件(注意要访问jsp后才会出现!)

  wtpwebapps目录则存放对应的部署资源文件

  如果选择的是第二项,Use Tomcat installation

  如果勾选的use tomcat installation,那么你的tomcat目录将被选定为tomcat所安装的目录。

  还是推荐选择这个吧,毕竟好找一点。

  如果勾选第三项,Use custom location

  目录的结构与上面的类似,上面这两个都是不可以修改的,要么是workspace所在的目录,要么是tomcat的目录。

  选择该项,可以自定义生成的空间。

  另外说一点,JSP的生命周期

  这是老生常谈的问题了,用户把工程部署到tomcat中,然后启动tomcat!此时就可以访问jsp了、

  1 第一次访问JSP,会验证一下是否第一次访问,然后把JSP转化成java(Servlet),再编译成class文件。

  2 生成的class文件中会自动生成几个方法:jspInit()、jspDestroy()、jspService().Tomcat仅仅在第一次请求时,调用jspInit方法,然后调用jspService进行处理。

  3 之后的每个请求,都会分配一个线程调用jspService方法。

  4 如果页面被销毁或者关闭,都会调用jspDestroy

  由于该文件是常驻内存的,又是多线程调用,所以访问的效率和速度都会很快。

  按照前面所述的方法,就可以看到生成的文件结构了。

  为了展示,这里给出一个样例的JSP

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%><%-- language 脚本使用的语言import 加载类文件contentType 编码方式--%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body><h1>JSP</h1><!-- 客户端可见 --><%-- 客户端不可见 --%><%!String s = "xingoo";//声明变量int add(int a,int b){//声明函数return a+b;}%>s=<%=s %><br> <%--表达式不以分号结束 --%>1+2=<%=add(1,2) %><br><%//单行注释 ————————————————快捷键ctrl+//* 多行注释 ____________快捷键ctrl+shift+/ */ out.println("s="+s+"<br>");%>
</body>
</html>

View Code

  里面含有一些注释,变量声明和打印输出等等。

  在生成.java文件中,可以看到生成的java文件:

package org.apache.jsp;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
import java.io.*;public final class test1_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent {String s = "xingoo";//声明变量int add(int a,int b){//声明函数return a+b;}private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();private static java.util.List _jspx_dependants;private javax.el.ExpressionFactory _el_expressionfactory;private org.apache.AnnotationProcessor _jsp_annotationprocessor;public Object getDependants() {return _jspx_dependants;}public void _jspInit() {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());}public void _jspDestroy() {}public void _jspService(HttpServletRequest request, HttpServletResponse response)throws java.io.IOException, ServletException {PageContext pageContext = null;HttpSession session = null;ServletContext application = null;ServletConfig config = null;JspWriter out = null;Object page = this;JspWriter _jspx_out = null;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');out.write('\n');out.write('    ');out.write("\r\n");out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");out.write("<html>\r\n");out.write("<head>\r\n");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n");out.write("<title>Insert title here</title>\r\n");out.write("</head>\r\n");out.write("<body>\r\n");out.write("\t<h1>JSP</h1>\r\n");out.write("\t\r\n");out.write("\t<!-- 客户端可见 -->\r\n");out.write("\t");out.write('\r');out.write('\n');out.write('    ');out.write("\r\n");out.write("\ts=");out.print(s );out.write("<br> ");out.write("\r\n");out.write("\t1+2=");out.print(add(1,2) );out.write("<br>\r\n");out.write("\t");//单行注释 ————————————————快捷键ctrl+//* 多行注释 ____________快捷键ctrl+shift+/ */ out.println("s="+s+"<br>");out.write("\r\n");out.write("</body>\r\n");out.write("</html>");} catch (Throwable t) {if (!(t instanceof SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try { out.clearBuffer(); } catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else log(t.getMessage(), t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}}
}

View Code

  声明注释,都可以很详细的看到。

Eclipse中JSP生成的class文件去了哪里?相关推荐

  1. Eclipse中JSP生成的class文件去了哪里?(转)

    大家都知道,JSP在请求的时候,会先转化成Servlet(其实就是个java类),然后生成class文件,再提供服务. 那么生成的java.class文件在哪呢?Eclipse中根本找不到呀! 首先应 ...

  2. eclipse怎么查看jsp生成的class文件

    eclipse怎么查看jsp生成的class文件 [问题点数:20分,结帖人wo_buhui] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 关注 wo_buhui wo ...

  3. Eclipse中 .jsp 文件中文乱码

    之前总是碰到JSP页面乱码的问题,每次都是直接去网上搜,然后胡乱改,改完也不明白原因.这次正好做一下总结,中文乱码就是因为编码不符,可能出现乱码有五个地方: JSP编码乱码 HTML编码乱码 requ ...

  4. 将用bootstrap框架的html文件转为eclipse中jsp文件

    eclipse中引入bootstrap框架 最近跟着我们专业一个很厉害很崇拜的老师捯饬毕设,他让我学自适应框架bootstrap,花了一周时间了解了该框架的 基本架构和用法,上去就写html文件,本来 ...

  5. eclipse中JSP文件编写乱码问题及解决方案

    eclipse中JSP文件编写乱码问题及解决方案 遇到问题 编译JSP文件后,网页中中文显示乱码 开始解决问题 注:若未创建JSP文件项目则只需前三个步骤 若创建了JSP文件项目则还需步骤四! 步骤一 ...

  6. eclipse中jsp和html文件中文乱码

    eclipse中jsp和html文件中文乱码 首先设置项目的编码,右键项目–>properties–>resource里边的text file encoding设置为utf-8,然后jsp ...

  7. 解决eclipse中jsp没有代码提示问题

    转载自   解决eclipse中jsp没有代码提示问题 刚装的可以开发jsp的eclipse,结果写jsp的时候没有代码提示,在网上找了半天,各种解决办法都不行,后来在stackoverflow上看到 ...

  8. Eclipse中JSP的详细使用介绍

    Eclipse中JSP的详细使用 欢迎来学习认识JSP 下载tomcat 配置tomcat环境 Eclipse中创建JSP文件 欢迎来学习认识JSP Java程序写分网站用Tomcat+jdk来运行 ...

  9. Eclipse中dropins干什么用的文件夹啊?

    Eclipse中dropins干什么用的文件夹啊? 什么时候会用到啊?  bao110908 回复于: 2011-04-02 22:26:51 鉴于你的结帖率.就简单地说一下吧. Eclipse 3. ...

最新文章

  1. 读书笔记《单核工作法》:2
  2. 超赞的 PyTorch 资源大列表,有人把它翻译成了中文版!
  3. leetcode-- 338. Counting Bits
  4. 京东面试官:呦,你对中间件 Mycat了解的还挺深~
  5. xadmin的html文件,django xadmin(2) 在xadmin基础上完成自定义页面
  6. background 渐变_今日重点:April安卓渐变黑。| 明日日程:BUG修复。
  7. 使用maven下载jar包,使用ant打包。yqxt项目的安装。
  8. 数字天堂陷入困境_陷入困境:焦虑的四个迹象可能会影响您的工作
  9. ECC椭圆密码算法c语言实现,深入浅出椭圆加密算法ECC
  10. bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛(floyd)
  11. MySQL 数据库笔记
  12. Docker系列(九)Docker的远程访问
  13. python如何获得列表中某个元素的index
  14. matlab模拟静电场边值,静电场边值问题有限差分法的仿真分析
  15. fedora9 换源方法
  16. 如何利用MATLAB(plot 3函数和fplot3函数)绘制三维曲线?
  17. linux下普通文件和目录文件区别详解
  18. 3.SEO优化--网站死链解决
  19. QQ邮箱测试域用户密码过期邮件提示
  20. 使用AlphaFold2进行蛋白质结构预测

热门文章

  1. python 服务监控_promethues + python + flask监控后端服务状态
  2. 虚拟化平台服务器故障,Vsphere虚拟化平台故障切换
  3. xx是一个类型 这在给定的上下文_#PaperCarrier | CoSeRNN :为你解释序列化与上下文在会话推荐中的作用...
  4. 为什么不建议学python贴吧_为什么那么多自学Python的后来都放弃了,分析起来就这些原因...
  5. unity三维地图的经纬度如何在二维地图上表示_安全数据分析:数据点—地图—线性回归...
  6. linux cetos7关闭防火墙
  7. FP Growth算法
  8. php mysql 模型_ThinkPHP数据库与模型
  9. 讯飞 tts 9.0 app_讯飞B1录音笔,到底值不值得买?
  10. 评分卡模型开发(九)--上线监测